sInfo.cb = sizeof(sInfo);
sInfo.lpReserved = NULL;
sInfo.lpDesktop = _T("");
- sInfo.lpTitle = _T("Foo");
+ sInfo.lpTitle = _T("NSIS Uninstaller for Kerberos for Windows");
sInfo.dwX = 0;
sInfo.dwY = 0;
sInfo.dwXSize = 0;
NULL,
&sInfo,
&pInfo)) {
- pInfo.hProcess = NULL;
- pInfo.hThread = NULL;
- rv = 40;
- goto _cleanup;
- };
+ DWORD lastError = GetLastError();
+ MSIHANDLE hRecord;
+
+ hRecord = MsiCreateRecord(4);
+ MsiRecordClearData(hRecord);
+ MsiRecordSetInteger(hRecord, 1, ERR_NSS_FAILED_CP);
+ MsiRecordSetString(hRecord, 2, strPathUninst);
+ MsiRecordSetInteger(hRecord, 3, lastError);
+
+ MsiProcessMessage( hInstall, INSTALLMESSAGE_ERROR, hRecord );
+
+ MsiCloseHandle( hRecord );
+
+ pInfo.hProcess = NULL;
+ pInfo.hThread = NULL;
+ rv = 40;
+ goto _cleanup;
+ };
// Create a job object to contain the NSIS uninstall process tree
if(hJob) CloseHandle(hJob);
if(strPathUninst) delete strPathUninst;
- if(rv != ERROR_SUCCESS) {
- ShowMsiError( hInstall, ERR_NSS_FAILED, rv );
+ if(rv != ERROR_SUCCESS && rv != 40) {
+ ShowMsiError( hInstall, ERR_NSS_FAILED, rv );
}
return rv;
}
<Error Id="4005">Custom action failed. Phase [2]</Error>
<Error Id="4006">Failed to determine running processes. Status [2]</Error>
<Error Id="4007">Failed to install Kerberos network provider. Status [2]</Error>
+ <Error Id="4008">NSIS Uninstallation failed to initialize. Uninstaller path [2] returned error [3]</Error>
<AdminUISequence>
<Show Dialog="FatalError" OnExit="error" />
<Show Dialog="UserExit" OnExit="cancel" />
<Property Id="ComponentDownload">http://web.mit.edu/kerberos</Property>
<Property Id="UPGRADENSIS">
- <RegistrySearch Id="regsrch_NSIS" Root="HKLM" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\Kerberos for Windows" Name="UninstallString" Type="file"/>
+ <RegistrySearch Id="regsrch_NSIS" Root="HKLM" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\Kerberos for Windows" Name="UninstallString" Type="raw"/>
</Property>
<Property Id="NSISVERSION">