首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Inno安装程序中获取卸载程序名称

如何在Inno安装程序中获取卸载程序名称
EN

Stack Overflow用户
提问于 2015-07-29 04:16:28
回答 2查看 1.7K关注 0票数 1

我有一个具有不同变体的项目,它们都安装在相同的位置,例如C:\ABC\。这里的卸载程序名为unins000,unins001。诸若此类。我在网络上搜索以更改卸载程序名称,并且没有固有的方法来更改卸载程序名称。

我有一个解决办法,使用[Run]部分将unins000.exe重命名为我选择的名称。当只有一个卸载程序时,这在项目文件夹中非常有效。但是,在我的例子中,卸载程序的名称我不知道。

有人能给我一个方法来得到卸载者的名字吗?我将相应地在我的代码中加入这个名字。

请不要建议我去找时间戳。这是一个不可接受的解决办法。

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-29 07:56:03

我在下面添加了我想要实现的代码。基本上,我现在要做的是为每个变体创建一个单独的文件夹,在其中存储单独的卸载程序(因为我无法获得需要重命名的卸载程序)。

项目结构现在

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

添加[Run]部分,这将将卸载程序名称更改为所需的任何内容。此外,将修改HKLM中的注册表条目,以便快捷方式和控制面板可以卸载程序,而不会出现任何问题。

代码语言:javascript
复制
 `[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

请注意我已经解决了我的问题。我为任何想做类似事情的人发了我的代码。

票数 -1
EN

Stack Overflow用户

发布于 2015-07-29 06:38:48

Inno安装程序不提供任何方式让您命名(或重命名)卸载程序。

还请注意,当您手动重命名卸载程序时(就像您正在做的那样),您会在“控制面板”中的“添加”或“远程”应用程序中中断对卸载程序的引用。别那么做。

另一个问题是,当您稍后升级时,新安装程序将找不到以前安装程序的日志,也无法合并它们。因此,将来的卸载不会完全删除应用程序。

请参阅Inno安装文档中的附加到现有卸载日志

用户不应该通过进入安装文件夹并执行卸载程序来卸载应用程序。用户应转到“控制面板”,并按其名称选择应用程序。

无论如何,卸载程序是按顺序编号的,所以您可以选择具有最高编号的卸载程序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31691135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档