Advanced Installer 踩坑总结


这几天用Advanced Installer给公司的软件制作安装包,本来以为只是一项很简单的工作,却不幸地踩到了好几个坑,在此记录下来备忘。

一、两个Code了解一下
UpgradeCode:同一软件的UpgradeCode必须一样,否则无法通过安装包升级安装。墙裂建议在别的地方把UpgradeCode保存一份,否则一旦手贱把UpgradeCode给覆盖了,那请参考本文后节。
ProductCode:同一软件的不同版本,ProductCode必须不一样,否则在安装时会提示“已安装此产品的另一个版本balabala”

二、允许降级安装
Product Information -> Upgrades,选中Allow side by side installs of different product versions

三、安装前卸载旧版本
Product Information -> Upgrades,选中Uninstall old version first and then install new version
参考:https://www.advancedinstaller.com/user-guide/upgrades.html

四、版本号
MSI只认版本号前三位!!!!
如果你的旧版版本号是1.0.0.1,新版是1.0.0.2,那么你在安装新版的时候,即使安装目录与旧版选择的是一致的,安装程序不会卸载旧版本,于是你会在控制面板里发现两个软件,而且新版的不一定会覆盖掉旧版的文件(大概吧,没详细测)

五、找回UpgradeCode和ProductCode
前提是你要有之前版本的安装包,或者已经安装过之前版本
要找到UpgradeCode必须先找到ProductCode

找回ProductCode的两种方法:
1、打开注册表编辑器,定位到
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall
搜索你的ProductName,然后左侧的那个GUID就是你的ProductCode了

2、打开CMD,输入
wmic product where "Name like \'你的产品名称\'" get Name, Version, IdentifyingNumber

找回UpgradeCode的方法:
1、打开CMD,输入 msiexec /i {你的ProductCode} REINSTALL=ALL REINSTALLMODE=omus /l*v log.txt
2、此时安装程序会对你的软件进行修复安装,等待安装结束
3、打开刚刚生成的log.txt文件
4、搜索“UpgradeCode”

六、执行PowerShell脚本
Custom Behavior -> Custom Actions,在 Add Custom Action 选项卡中,找到 Run PowerShell inline script,添加然后调整执行顺序

附上一个结束进程PowerShell脚本示例
# Block for declaring the script parameters.
Param()

# Your code goes here.
Get-Process -Name TR.VideoSurveillance Stop-Process Get-Process -Name WuhanSanZhan Stop-Process

发表评论

邮箱地址不会被公开。 必填项已用*标注