如何更改将安装所有dll和其他文件的wxs文件中的目录?

时间:2018-11-21 12:27:43

标签: wix windows-installer wix-extension

在.NET项目中使用.wxs文件创建安装项目时,我是一个新手。我知道默认情况下,当您运行MSI文件时,它将在此项目中创建文件夹,并且它是C:\Program Files (x86)中的参考文件(dll,exe等...)。我的问题是,可以使用XML将.wxs文件中的此位置更改为另一个位置。

1 个答案:

答案 0 :(得分:0)

ConfigurableDirectory :您可以使用Feature Element ConfigurableDirectory 属性来设置可配置功能目录。在以下屏幕截图部分中查看该页面:How to assign path value to Directory in WIX?

仅模拟

注意:我将基于标准的 WiX Mondo对话框集To hook up the Mondo dialogs, see this answer。本质上,添加对 WixUIExtension.dll 的引用,并插入 <UIRef Id="WixUI_Mondo" /> 元素。这会将默认的WiX对话框集编译到您的MSI中。

<Feature Id="MyFeature" Title="MyFeature" Level="1" ConfigurableDirectory="INSTALLFOLDER"></Feature>

<..>

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="ProgramFilesFolder">
    <Directory Id="INSTALLFOLDER" Name="InstallDirConfigurableTesting">

记住属性 :请注意,您必须自己将自定义目录位置保存到注册表中,并读回进行重大升级,否则整个产品在升级过程中会被“移动” (我知道,这很奇怪)。据我所知,这种持久性不会自动发生。您可以保留该属性,并使用WiX创建者和慈善机构Rob Mensching在此处The WiX toolset's "Remember Property" pattern所述的“记住模式”将其读回。

实施提示 :对于主要的升级方案,测试目录属性的回读可能会有些麻烦。如果您使用Votive在Visual Studio中创建测试项目,则可以使用该技巧来编译MSI版本1(现在,将MSI文件后缀为 _Version1.0.0.msi 或类似的版本) ),然后弹出版本号属性的前三位数字之一并构建升级版本(后缀为 _Version2.0.0.msi 或类似名称)。然后,您依次选择一个自定义安装目录进行安装,并检查第二个安装程序是否正确检测到修改后的路径。只需在其中包含单个组件的模型或测试工具项目中使用它,即可正常工作,否则,如果必须编译整个设置,您可能会发疯。然后只需将完成的标记注入到主项目中即可。很明显,是的-只是提及。


一些其他链接