WIX Bundle删除后无法卸载及获取安装程序当前路径问题
WIX Bundle 两个问题的解决方案
问题1:卸载时找不到原Bundle文件导致失败
- 原因:Bundle默认依赖原安装源文件,用户删除后系统无法定位卸载所需的Bundle资源
- 解决方法:
- 开启Bundle缓存功能:在
<Bundle>标签中添加Cache="yes",系统会自动将Bundle文件缓存到本地默认路径C:\ProgramData\Package Cache\<ProductCode>\,卸载时直接调用缓存文件,不再依赖原安装包
<Bundle Name="MyProduct" Version="1.0.0.0" Manufacturer="MyCompany" UpgradeCode="YOUR-GUID-HERE" Cache="yes"> <!-- 其他配置内容 --> </Bundle>- 若已发布安装包无法重新打包,临时解决方案是让用户重新下载对应版本的Bundle文件,运行后选择卸载选项
- 开启Bundle缓存功能:在
问题2:移动Setup.exe后WixBundleOriginalSource返回旧路径
- 原因:
WixBundleOriginalSource本身就是记录首次安装时的源路径,不会随文件移动自动更新 - 解决方法:
使用WixBundleSource变量替代,它会返回当前运行的Setup.exe的绝对路径。在自定义WPF UI中获取当前所在文件夹的代码示例:
上述代码中的string bundlePath = this.Engine.StringVariables["WixBundleSource"]; string currentFolder = System.IO.Path.GetDirectoryName(bundlePath);currentFolder就是Setup.exe当前所在的FolderB路径
内容的提问来源于stack exchange,提问作者HuaChanDanny
相关产品推荐
相关产品推荐

