在我的Inno Setup安裝期間,abc.msi文件被複制到安裝目錄中,然後正確安裝。 但是在卸載過程中,abc.msi未卸載。 在卸載日誌中進行調查後,我明白了原因。以下是對數,其中i替換日期/小時與一些更清晰的一部分:Innosetup在仍然需要時刪除abc.msi
0. [deleting all the files... INCLUDING abc.msi!]
1. Uninstallation process succeeded.
2. Removed all? Yes
3. Need to restart Windows? No
4. INFO: Execute command: msiexec.exe /x "C:\Program Files (x86)\InstallationDir\abc\abc.msi" /QUIET /NORESTART
5. ERROR: Command failed. Error code: 1619
該錯誤是由於這樣的事實,在步驟4中的命令被稱爲太晚(在刪除後abc.msi的,見步驟0),所以我們在5
有錯誤現在,卸載命令放在如下:
procedure CurUninstallStepChanged(...)
[code...]
begin
if (CurUninstallStep = usUninstall) then
begin
[code...]
ExecCommand('msiexec.exe', ' /x "' + pathTo_abc.msi + '" /QUIET /NORESTART');
[code...]
end
end
所以我的問題是在哪裏調用命令被執行在刪除abc.msi而不是CurUninstallStepChanged之前,或者安裝的是正確的一步使用,而不是usUninstall。我也嘗試了usPostUninstall,沒有任何區別。
聽起來很奇怪。看看[運行代碼](https://github.com/jrsoftware/issrc/blob/is-5_5_4/Projects/Uninstall.pas#L643)。首先使用'usUninstall'步驟觸發'CurUninstallStepChanged'事件方法,然後在日誌示例中處理卸載並記錄第2步。簡而言之,在卸載(刪除)任何內容之前,啓動帶'usUninstall'步驟的'CurUninstallStepChanged'事件。它應該以這種方式工作。 – TLama
你的意思是說我做對了嗎? – fresko
是的。在卸載任何東西之前,應該執行「usUninstall」步驟塊中的內容。我想到的一件事是,你是否同步運行這個命令,你是否在等待它完成? – TLama