如何在WiX4中使用Burn策略`EngineWorkingDirectory`
针对你遇到的Burn仍从系统临时目录启动、注册表策略未生效的问题,可按以下步骤排查:
检查注册表路径的位数匹配:
若你的捆绑包是32位程序,WiX Burn会读取HKLM\Software\Wow6432Node\Policies\Wix\Burn路径下的配置,而非64位默认路径。需对应在正确的注册表分支下创建EngineWorkingDirectory字符串值(REG_SZ),值设为C:\test。验证目录权限与存在性:
确保C:\test目录已创建,且系统账户(NT AUTHORITY\SYSTEM)和当前用户拥有该目录的读写、执行权限——Burn需要在该目录解压并运行安装文件。检查捆绑包配置是否覆盖策略:
查看你的.wxs文件,确认<Bundle>元素是否设置了EngineWorkingDirectory属性。该属性优先级高于注册表策略,若存在需移除或调整为与注册表一致的值。启用Burn日志排查读取情况:
运行捆绑包时添加参数:your-bundle.exe -l install.log,生成详细日志。在日志中搜索EngineWorkingDirectory,确认Burn是否读取到了你设置的C:\test路径。若日志中仍显示默认临时目录,说明策略未被正确读取。排除安全软件拦截:
即使设置了自定义目录,Windows Defender或第三方安全软件可能仍会阻止程序执行。可临时将C:\test加入信任列表,或关闭安全软件测试是否能正常启动。重启系统刷新注册表:
部分注册表策略需重启系统后才会生效,尝试重启后重新运行捆绑包。
内容的提问来源于stack exchange,提问作者lumberjack4

