This allows Microsoft `OfficeSetup.exe` 365 to succeed again. It needs to be used with the revert described in https://bugs.winehq.org/show_bug.cgi?id=54667 . `OneDriveSetup.exe` crashes right after as before, but the Office 365 files get installed into the prefix.
-- v5: sppc: Stub SLInstallLicense(). sppc: Stub SLGetSLIDList(). sppc: Declare implemented functions in slpublic.h
From: Daniel Tang danielzgtg.opensource@gmail.com
--- include/slpublic.h | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/include/slpublic.h b/include/slpublic.h index 3f3a39274d1..78981eef61f 100644 --- a/include/slpublic.h +++ b/include/slpublic.h @@ -66,6 +66,8 @@ SLCAPI HRESULT WINAPI SLGetLicensingStatusInformation(HSLC, const SLID*, const S SLCAPI HRESULT WINAPI SLGetWindowsInformation(LPCWSTR, SLDATATYPE*, UINT*, LPBYTE*); SLCAPI HRESULT WINAPI SLGetWindowsInformationDWORD(LPCWSTR, LPDWORD); SLCAPI HRESULT WINAPI SLOpen(HSLC*); +SLCAPI HRESULT WINAPI SLClose(HSLC); +SLCAPI HRESULT WINAPI SLPersistApplicationPolicies(const SLID *, const SLID *, DWORD);
#ifdef __cplusplus }
From: Daniel Tang danielzgtg.opensource@gmail.com
--- dlls/sppc/sppc.c | 10 ++++++++++ dlls/sppc/sppc.spec | 2 +- include/slpublic.h | 1 + 3 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/dlls/sppc/sppc.c b/dlls/sppc/sppc.c index 8819961d7c6..09a331033ec 100644 --- a/dlls/sppc/sppc.c +++ b/dlls/sppc/sppc.c @@ -39,6 +39,16 @@ HRESULT WINAPI SLGetLicensingStatusInformation(HSLC handle, const SLID *app, con return SL_E_RIGHT_NOT_CONSUMED; }
+HRESULT WINAPI SLGetSLIDList(HSLC handle, UINT queryType, const SLID *query, UINT returnType, UINT *count, SLID **data) +{ + FIXME("(%p %u %p %u %p %p) stub\n", handle, queryType, query, returnType, count, data); + + *count = 0; + *data = (SLID *)0xdeadbeef; + + return S_OK; +} + HRESULT WINAPI SLOpen(HSLC *handle) { FIXME("(%p) stub\n", handle ); diff --git a/dlls/sppc/sppc.spec b/dlls/sppc/sppc.spec index 6926d4d8b6d..97ab6a8f6ac 100644 --- a/dlls/sppc/sppc.spec +++ b/dlls/sppc/sppc.spec @@ -44,7 +44,7 @@ @ stub SLGetPolicyInformation @ stub SLGetPolicyInformationDWORD @ stub SLGetProductSkuInformation -@ stub SLGetSLIDList +@ stdcall SLGetSLIDList(ptr long ptr long ptr ptr) @ stub SLGetServiceInformation @ stub SLInstallLicense @ stub SLInstallProofOfPurchase diff --git a/include/slpublic.h b/include/slpublic.h index 78981eef61f..72060d5a5d6 100644 --- a/include/slpublic.h +++ b/include/slpublic.h @@ -63,6 +63,7 @@ typedef struct _tagSL_LICENSING_STATUS } SL_LICENSING_STATUS;
SLCAPI HRESULT WINAPI SLGetLicensingStatusInformation(HSLC, const SLID*, const SLID*, LPCWSTR, UINT*, SL_LICENSING_STATUS**); +SLCAPI HRESULT WINAPI SLGetSLIDList(HSLC, UINT, const SLID *, UINT, UINT *, SLID **); SLCAPI HRESULT WINAPI SLGetWindowsInformation(LPCWSTR, SLDATATYPE*, UINT*, LPBYTE*); SLCAPI HRESULT WINAPI SLGetWindowsInformationDWORD(LPCWSTR, LPDWORD); SLCAPI HRESULT WINAPI SLOpen(HSLC*);
From: Daniel Tang danielzgtg.opensource@gmail.com
--- dlls/sppc/sppc.c | 12 ++++++++++++ dlls/sppc/sppc.spec | 2 +- include/slpublic.h | 1 + 3 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/dlls/sppc/sppc.c b/dlls/sppc/sppc.c index 09a331033ec..9050b2faacc 100644 --- a/dlls/sppc/sppc.c +++ b/dlls/sppc/sppc.c @@ -49,6 +49,18 @@ HRESULT WINAPI SLGetSLIDList(HSLC handle, UINT queryType, const SLID *query, UIN return S_OK; }
+HRESULT WINAPI SLInstallLicense(HSLC handle, UINT count, const BYTE *data, SLID *file) +{ + UINT i; + FIXME("(%p %u %p %p) stub\n", handle, count, data, file); + + for (i = 0; i < count; i++) { + memset(&file[i], 0, sizeof(SLID)); + } + + return S_OK; +} + HRESULT WINAPI SLOpen(HSLC *handle) { FIXME("(%p) stub\n", handle ); diff --git a/dlls/sppc/sppc.spec b/dlls/sppc/sppc.spec index 97ab6a8f6ac..fd1462e3780 100644 --- a/dlls/sppc/sppc.spec +++ b/dlls/sppc/sppc.spec @@ -46,7 +46,7 @@ @ stub SLGetProductSkuInformation @ stdcall SLGetSLIDList(ptr long ptr long ptr ptr) @ stub SLGetServiceInformation -@ stub SLInstallLicense +@ stdcall SLInstallLicense(ptr long ptr ptr) @ stub SLInstallProofOfPurchase @ stub SLInstallProofOfPurchaseEx @ stub SLIsGenuineLocalEx diff --git a/include/slpublic.h b/include/slpublic.h index 72060d5a5d6..13594d848fb 100644 --- a/include/slpublic.h +++ b/include/slpublic.h @@ -64,6 +64,7 @@ typedef struct _tagSL_LICENSING_STATUS
SLCAPI HRESULT WINAPI SLGetLicensingStatusInformation(HSLC, const SLID*, const SLID*, LPCWSTR, UINT*, SL_LICENSING_STATUS**); SLCAPI HRESULT WINAPI SLGetSLIDList(HSLC, UINT, const SLID *, UINT, UINT *, SLID **); +SLCAPI HRESULT WINAPI SLInstallLicense(HSLC, UINT, const BYTE *, SLID *); SLCAPI HRESULT WINAPI SLGetWindowsInformation(LPCWSTR, SLDATATYPE*, UINT*, LPBYTE*); SLCAPI HRESULT WINAPI SLGetWindowsInformationDWORD(LPCWSTR, LPDWORD); SLCAPI HRESULT WINAPI SLOpen(HSLC*);
On Sat Mar 11 15:02:56 2023 +0000, Jactry Zeng wrote:
Daniel Tang commented on a discussion on include/slpublic.h:https://gitlab.winehq.org/wine/wine/-/merge_requests/2374#note_26709
} SL_LICENSING_STATUS;
SLCAPI HRESULT WINAPI SLGetLicensingStatusInformation(HSLC, const
SLID*, const SLID*, LPCWSTR, UINT*, SL_LICENSING_STATUS**);
+HRESULT WINAPI SLGetSLIDList(HSLC, UINT, const SLID *, UINT, UINT *,
SLID **);
Sorry I didn't notice the SLCAPI part. But anyway, I saw some other
functions not being added to this file, so I realized that it's not necessary either to add these two functions here either. I think you are talking about SLPersistApplicationPolicies() and SLClose(), right? No, they should be added to the header file as well. Please feel free to add them by a separate commit in your MR by the way if you want. Thanks
Added