使用WIX生成的.msi安装包运行异常及修订号缺失问题求助
WIX生成MSI的问题解决方法
一、双击MSI报错,管理员CMD运行正常
核心原因是插件安装需要管理员权限,双击MSI默认以当前普通用户权限启动,无法完成写入系统目录、修改注册表等操作,而管理员CMD运行会直接获取高权限。解决方法:
- 在WIX的
<Product>元素中添加InstallPrivileges="elevated"属性,强制安装包启动时触发UAC权限请求,双击即可弹出权限提示,获取权限后正常安装:<Product Id="*" Name="YourAddin" Language="1033" Version="1.0.0.0" Manufacturer="YourCompany" UpgradeCode="YOUR-GUID-HERE" InstallPrivileges="elevated"> - 检查自定义动作:如果安装序列中有自定义动作,确保需要高权限的动作设置
Impersonate="no",避免模拟普通用户执行:<CustomAction Id="YourCustomAction" BinaryKey="YourBinary" DllEntry="YourEntry" Impersonate="no" Execute="deferred" />
二、添加MSI的修订号
MSI的修订号是版本号的第四段,格式为Major.Minor.Build.Revision,配置方式:
- 直接在
<Product>的Version属性中指定四位版本号,第四位就是修订号,比如:
修订号取值建议用构建次数或日期编码(需控制在0-65535之间,因为MSI版本每段最大为65535),比如用当日是本年的第几天,或持续递增的构建序号。<Product ... Version="1.0.0.123" ...> - 自动生成修订号:可以通过WIX预处理器变量实现,编译时传入修订号:
- WIX代码中写:
<Product ... Version="1.0.0.$(var.Revision)" ...> - 编译时用candle命令传入:
candle.exe -dRevision=123 YourProduct.wxs
- WIX代码中写:
内容的提问来源于stack exchange,提问作者Smit Rathod
相关产品推荐
相关产品推荐

