如何在Wix Installer中正确指定安装目录路径
Wix Installer指定Revit插件目录错误排查与解决方案
错误原因分析
- 第一种写法错误:
Directory节点的Id属性是Wix用来标识目录对象的唯一标识符,不支持直接填写绝对路径,填路径会被识别为无效ID,导致目录结构解析失败。 - 第二种写法错误:自定义的
C_Users_Admin_AppData_Roaming_Autodesk_Revit_Addins_2019不是Wix内置的预定义目录ID,也没有绑定对应的实际路径,Wix无法识别其指向的存储位置。
正确实现方式
Wix提供了预定义的系统目录ID,你可以直接引用这些ID来拼接目标路径,有两种常用实现方案:
方案1:嵌套目录结构写法
严格按照Wix目录树规则一级一级声明目录:
<Directory Id="TARGETDIR" Name="SourceDir"> <!-- AppDataFolder是Wix预定义ID,对应当前用户的 C:\Users\[当前用户名]\AppData\Roaming 路径 --> <Directory Id="AppDataFolder"> <Directory Id="AutodeskFolder" Name="Autodesk"> <Directory Id="RevitFolder" Name="Revit"> <Directory Id="RevitAddinsFolder" Name="Addins"> <Directory Id="Revit2019Folder" Name="2019"> <Directory Id="IFOLDER" Name="App Name" /> </Directory> </Directory> </Directory> </Directory> </Directory> </Directory>
方案2:直接设置目录路径写法
如果不想写多层嵌套,可以用SetDirectory节点直接给目标目录绑定完整路径:
<!-- 先声明最终安装目录 --> <Directory Id="IFOLDER" Name="App Name" /> <!-- 直接绑定路径,用方括号引用预定义的AppDataFolder变量 --> <SetDirectory Id="IFOLDER" Value="[AppDataFolder]Autodesk\Revit\Addins\2019\App Name" />
注意事项
- 上述写法默认适配当前用户的Roaming目录,如果需要做全用户安装的插件,需要将
AppDataFolder替换为CommonAppDataFolder(对应ProgramData目录),同时调整Revit插件的加载配置。 - 如果需要兼容多个Revit版本,可以通过预处理器变量或自定义安装属性来动态替换路径里的版本号。
内容的提问来源于stack exchange,提问作者fysharp
相关产品推荐
相关产品推荐

