Wix Toolset 5:仅卸载删CommonAppDataFolder文件夹,大升级保留(Win11)
适配Windows 11:无需自定义操作实现CommonAppData文件夹卸载/保留逻辑
无需自定义操作的原生MSI实现方式
可以通过组件拆分与关键文件标记完全依赖Windows Installer原生逻辑实现,无需自定义操作:
- 将日志目录及其子目录拆分为独立组件,不为该组件设置
Permanent=yes,但指定日志目录下的一个文件作为关键文件(比如应用生成的初始日志文件,或手动添加的占位文件)。 - 主应用文件夹所在组件保持常规配置,卸载时MSI会自动检查组件关键文件的存在性:主组件的关键文件随卸载被移除后,主文件夹会被删除;而日志组件因为关键文件(日志)在使用/升级后仍存在,组件会被标记为"已使用",对应的日志目录及子目录会被保留。
- Windows 11的MSI引擎对组件状态的识别更精准,无需额外配置即可稳定触发这一逻辑。
Remember Property Pattern的Win11适配调整
Rob Mensching的Remember Property Pattern核心逻辑无需大幅修改,但针对Windows 11有两处优化点:
- 无需兼容旧系统的属性存储限制,Win11默认的
REINSTALLMODE=amus即可稳定保留属性,无需手动修改该参数。 - 若使用WiX工具集(推荐Win11适配的最新版本),可直接通过
WixUtilExtension中的RememberProperty元素简化实现,无需手动编写自定义属性与条件,该扩展已针对Win11的MSI行为做了适配优化。
额外注意事项
- 组件拆分是核心:必须将需要保留的日志目录与主应用目录完全拆分,避免组件交叉引用导致的逻辑混乱。
- 大升级场景下,MSI会自动保留已存在的日志组件,无需额外配置即可实现日志目录的留存。
内容的提问来源于stack exchange,提问作者apmattil
相关产品推荐
相关产品推荐

