我最近将 Inno Setup 从 5 升级到 6。
构建脚本和 iss 文件没有改变,但是在 Inno Setup 6 环境中构建总是失败。
失败点在签名的卸载程序中。
[Setup]
SignedUninstaller = yes
SignedUninstallerDir=Release\
要创建带有数字签名的卸载程序,我在我的
SignedUninstaller=yes
中设置了setup.iss
,我没有设置SignTool
,因为我的签名是由其他服务提供的,我需要使用其他脚本来签名。
在Inno Setup 5环境中,它第一次创建了一个新的卸载程序
uninst-5.5.9 (u)-xxxxxx.e32
文件。我拿这个来做其他服务的签名。然后放回Release\
文件夹中。
重新编译我的构建脚本,它显示“使用现有的签名卸载程序文件:uninst-5.5.9 (u)-xxxxxx.e32”,我之前已添加签名来创建卸载程序。 Inno Setup 5 中一切正常。
但是,一旦我将 Inno Setup 升级到 6.0.5,情况就完全不同了,每次编译时卸载程序的文件名都会更改,总是显示 “正在创建新的签名卸载程序文件:uninst-6.0.5 (u)-xxxxxxxx .e32",这导致我在Inno Setup 5中所做的方法在这里无法工作。
我注意到这里的编译日志有很大不同......
创新设置5
Preparing Setup program executable
Updating icons (SETUP.E32)
Using existing signed uninstaller file:
创新设置6
Preparing Setup program executable
Updating icons (SETUP.E32)
Updating version info (SETUP.E32)
Creating new signed uninstaller file:
代码完全一样,只是升级了Inno Setup编译器。
有人知道5和6有什么区别吗?
自 6.0.4 起,Inno Setup 将您的应用程序的版本信息(产品名称、产品版本、公司、版权等)包含到卸载程序中。这是此更改的一部分:
安装程序现在支持 Windows AppLocker 发布者条件,最高可达文件名级别(包括文件名级别)。
SignedUninstallerDir
的预期缓存效果。