我需要在同一目录中安装几个安装程序,因此它与inno安装卸载程序名称unins000.exe
和unins000.dat
有没有办法更改Inno-Setup卸载程序的默认名称?
编号'unins'在可执行文件GenerateUninstallInfoFilename
源的'install.pas'的'procedure' 中的可执行文件,数据和msg文件的名称生成过程中进行了硬编码.
GenerateFilenames
子程序有这个:
BaseFilename := AddBackslash(BaseDir) + Format('unins%.3d', [I]); UninstallExeFilename := BaseFilename + '.exe'; ..
其中'I'是一个整数,'BaseDir'是从中UninstallFilesDir
可以改变的.
当Inno检测到安装在同一目录中的不同应用程序(基于不同的AppID
)时,会自动执行此操作.应该没有必要在它背后并重命名卸载程序文件.
我自己处理了这个问题.由于Martin Prikryl指出,你不应该将卸载程序可执行文件本身移动.但是我同意让一堆编号的卸载程序放在一个目录中并且没有明显的方法来告诉哪个是哪个是不满意的.
使用Inno Setup提供的设施有一个解决方案.在该[Setup]
部分:
[Setup] ... UninstallFilesDir=Uninstall\exe\{#NAME_OF_APP} ...
然后在该[Dirs]
部分:
[Dirs] ... Name: Uninstall\exe; Attribs: hidden; Name: Uninstall\exe\{#NAME_OF_APP}; Attribs: hidden; ...
最后,您可以创建指定的快捷方式,[Icons]
这些快捷方式将始终具有相同的名称,因为您已将它们隔离在一起:
[Icons] ... Name: Uninstall\{#NAME_OF_UNINSTALLER}; Filename: Uninstall\exe\{#NAME_OF_APP}\unins000.exe ...
这会将操作系统中的引用留给卸载程序,将可疑的可执行文件名隐藏在用户通常不会看到但仍可访问的文件夹中,并提供可以全部存在于同一文件夹中的命名描述性快捷方式.您还可以为快捷方式提供一个好的图标.为了更好的衡量,可以在\ exe目录中删除一个额外的README来解释发生了什么,以防有人得到多管闲事(他们会自然而然).
好吧,虽然它仍然不可能原生地更改卸载程序名称,然后我将在运行部分使用批处理命令重命名卸载程序并在卸载程序注册表路径中执行相同操作:
[Run] Filename: {cmd}; Parameters: "/C Move ""{app}\unins000.exe"" ""{app}\Uninstallers\{#ApplicationName} - uninstall.exe"""; StatusMsg: Installing {#ApplicationName}...; Flags: RunHidden WaitUntilTerminated Filename: {cmd}; Parameters: "/C Move ""{app}\unins000.dat"" ""{app}\Uninstallers\{#ApplicationName} - uninstall.dat"""; StatusMsg: Installing {#ApplicationName}...; Flags: RunHidden WaitUntilTerminated Filename: REG.exe; Parameters: "ADD ""HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Windows 8 ContextMenu - {#ApplicationName}_is1"" /V ""UninstallString"" /T ""REG_SZ"" /D ""\""{app}\Uninstallers\{#ApplicationName} - uninstall.exe\"""" /F"; StatusMsg: Installing {#ApplicationName}...; Flags: RunHidden WaitUntilTerminated Filename: REG.exe; Parameters: "ADD ""HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Windows 8 ContextMenu - {#ApplicationName}_is1"" /V ""QuietUninstallString"" /T ""REG_SZ"" /D ""\""{app}\Uninstallers\{#ApplicationName} - uninstall.exe\"" /SILENT"" /F"; StatusMsg: Installing {#TipName}...; Flags: RunHidden WaitUntilTerminated