簡體   English   中英

如何在 Inno Setup 中獲取卸載程序名稱

[英]How to get the uninstaller name in Inno Setup

我有一個具有不同變體的項目,它們都安裝到相同的位置,例如C:\\ABC\\ 這里的卸載程序被命名為 unins000、unins001.. 等等。 我在網上搜索過以更改卸載程序名稱,並且沒有更改卸載程序名稱的固有方法。

我有一個解決方法,通過它我使用[Run]部分將unins000.exe重命名為我選擇的名稱。 當只有一個卸載程序時,這對項目文件夾非常有效。 但是,就我而言,我不知道卸載程序名稱。

有人可以建議我獲取卸載程序名稱的方法嗎? 我將相應地將名稱放在我的代碼中。

請不要建議我尋找時間戳。 這將不是一個可接受的解決方案。

提前致謝。

Inno Setup 不提供任何方式讓您命名(或重命名)卸載程序。

另請注意,當您手動重命名卸載程序時(就像您正在做的那樣),您會在控制面板的添加或遠程應用程序中中斷對卸載程序的引用。 不要那樣做。

另一個問題是,當您稍后升級時,新安裝程序將找不到以前安裝程序的日志,也無法合並它們。 因此,將來的卸載不會完全刪除該應用程序。
請參閱 Inno Setup 文檔中的附加到現有卸載日志

用戶不應通過轉到安裝文件夾並執行卸載程序來卸載應用程序。 用戶應轉到控制面板並按名稱選擇應用程序。


無論如何,卸載程序按順序編號,因此您可以選擇編號最高的卸載程序。

我在下面添加了我用來實現我想要的代碼。 基本上,我現在所做的是為每個變體創建一個單獨的文件夾,在其中存儲單個卸載程序(因為我無法獲得需要重命名的卸載程序)。

項目結構現在是

C:\\ABC\\Uninst\\<Variant-1>\\<variant1-uninstaller> C:\\ABC\\Uninst\\<Variant-2>\\<variant2-uninstaller>

添加[Run]部分,這會將卸載程序名稱更改為所需的任何名稱。 此外,HKLM 中的注冊表項將被修改,以便快捷方式和控制面板可以毫無問題地卸載程序。

 `[Run]

  ;First rename the uninstaller files, then modify in registry
  ; /C : run CMD, execute command, then close the CMD.exe
  Filename: {cmd}; Parameters: "/C ren ""{app}\Uninst\unins000.exe"" ""Uninstall_{#ApplicationName}.exe"""; Flags: RunHidden WaitUntilTerminated

 Filename: {cmd}; Parameters: "/C ren ""{app}\Uninst\unins000.dat"" ""Uninstall_{#ApplicationName}.dat"""; Flags:  RunHidden WaitUntilTerminated

 ; REG ADD [ROOT\]RegKey /v ValueName [/t DataType] [/S Separator] [/d Data] [/f]
 ; /F : Force overwrite
 Filename: REG; Parameters: "ADD ""HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{#AppNameInReg}_is1"" /V ""UninstallString"" /T ""REG_SZ"" /D ""\""{app}\Uninst\Uninstall_{#ApplicationName}.exe"""" /F"; StatusMsg: Flags: RunHidden WaitUntilTerminated

 Filename: REG; Parameters: "ADD ""HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{#AppNameInReg}_is1"" /V ""QuietUninstallString"" /T ""REG_SZ"" /D ""\""{app}\Uninst\Uninstall_{#ApplicationName}.exe /SILENT"""" /F"; Flags: RunHidden WaitUntilTerminated

[Setup]部分添加以下行UninstallFilesDir={app}\\Uninst\\這將在Uninst文件夾中創建unins000.exe

請注意,我已經解決了我的問題。 我為任何想做類似事情的人發布了我的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM