我正在为我的应用编写一个inno安装程序。我希望这个安装程序既可以作为完整安装程序,也可以作为更新,具体取决于我的应用程序是否已安装。
我能够使用inno设置创建一个“更新”安装,如果我的应用已经安装,它将替换旧文件。如果没有,它只会进行全面安装。
问题在于Windows中的卸载密钥。 Inno setup为每个安装创建一个卸载密钥。因此,如果我进行更新,我的应用程序将有两个卸载密钥。如果我禁用创建卸载密钥,那么完整安装将不会创建它。
可以在运行时关闭CreateUninstallRegKey和UpdateUninstallLogAppName吗?
答案 0 :(得分:5)
如果完整安装和更新安装之间的大小差异相当小(通常是这种情况),那么您应该使两者完全相同。
最简单(也是最可靠)的方法是确保您设置一个AppId
(如果您已经在未能执行此操作的字段中有一些,则设置{{1与现有 AppId
)相同的值。
接下来,检查您的AppName
条目;确保在所有文件上指定了适当的[Files]
。 (作为一般规则,安装到Flags
的文件通常应为“{app}
”;用户可编辑的文件应为“ignoreversion
”;共享库应具有“onlyifdoesntexist
” ,但在特定情况下你可能需要不同的东西。)
然后只需设置replacesameversion sharedfile
和DisableDirPage=auto
(并将其他所有内容保留为默认值),Inno将使用原始安装期间输入的值自动跳过目录和“开始菜单”选择页面进行升级。没有混乱,没有大惊小怪。