From: Jeffrey Altman Date: Wed, 23 Jun 2004 09:12:07 +0000 (+0000) Subject: wix-msi-loopback-20040622 X-Git-Tag: openafs-devel-1_3_65~20 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=50e18fe02468daf94a6d5f851f60543dbf015737;p=packages%2Fo%2Fopenafs.git wix-msi-loopback-20040622 convert wix installer to use msi interface to loopback dll instead of instloop.exe --- diff --git a/src/WINNT/install/loopback/NTMakefile b/src/WINNT/install/loopback/NTMakefile index 587052144..2747726e2 100644 --- a/src/WINNT/install/loopback/NTMakefile +++ b/src/WINNT/install/loopback/NTMakefile @@ -16,7 +16,8 @@ DLLEXPORTS=\ -EXPORT:InstallLoopBack \ -EXPORT:doLoopBackEntryW \ -EXPORT:uninstallLoopBackEntryW \ - -EXPORT:installLoopbackMSI + -EXPORT:installLoopbackMSI \ + -EXPORT:uninstallLoopbackMSI DLLLIBFILES=\ setupapi.lib msi.lib uuid.lib Shell32.lib ole32.lib advapi32.lib wbemuuid.lib diff --git a/src/WINNT/install/loopback/loopbackutils.cpp b/src/WINNT/install/loopback/loopbackutils.cpp index e460af3a0..d6eeafd7e 100644 --- a/src/WINNT/install/loopback/loopbackutils.cpp +++ b/src/WINNT/install/loopback/loopbackutils.cpp @@ -627,3 +627,36 @@ UINT __stdcall installLoopbackMSI (MSIHANDLE hInstall) return ERROR_SUCCESS; } +UINT __stdcall uninstallLoopbackMSI (MSIHANDLE hInstall) +{ + LPWSTR szValueBuf; + DWORD cbValueBuf = 256; + Args args; + UINT rc; + + szValueBuf = (LPWSTR) malloc (cbValueBuf * sizeof (WCHAR)); + while (rc = MsiGetPropertyW(hInstall, L"CustomActionData", szValueBuf, &cbValueBuf)) { + free (szValueBuf); + if (rc == ERROR_MORE_DATA) { + cbValueBuf++; + szValueBuf = (LPWSTR) malloc (cbValueBuf * sizeof (WCHAR)); + } + else + return ERROR_INSTALL_FAILURE; + } + + if (!process_args(szValueBuf, args)) + return ERROR_INSTALL_FAILURE; + + rc = UnInstallLoopBack (); + + if (rc == 1) + return ERROR_INSTALL_FAILURE; + + if (rc == 2) { + MsiDoActionW (hInstall, L"ScheduleReboot"); + } + + return ERROR_SUCCESS; +} +