Wix安装目录自定义

时间:2014-02-11 11:57:52

标签: wix

我对wix安装程序有以下条件: - 启动安装程序目录以进行安装应为RootDirectory \ ApplicationName [C:\ MYApplication] - 用户应该能够自定义此路径(使用pathedit或任何文本框)

我已经完成了以下代码,但问题是安装的一半是在指定路径完成的,一半文件夹是复制到根目录中。

<Fragment>
<Property Id="_BrowseProperty" Value="INSTALLDIR" Secure="yes"/>
<CustomAction Id="SetDataLocationDefault" Property="INSTALLDIR" Value="[WindowsVolume]$(var.Title)\" />
<InstallUISequence>
  <Custom Action="SetDataLocationDefault" After="CostFinalize" />
</InstallUISequence>
<InstallExecuteSequence>
  <Custom Action="SetDataLocationDefault" After="CostFinalize" />
</InstallExecuteSequence>

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="INSTALLDIR" Name="$(var.Title)">
    <Directory Id="ProgramMenuFolder">
      <Directory Id="ApplicationProgramsFolder" Name="$(var.Title)"/>
    </Directory>
  </Directory>
  <Directory Id="DesktopFolder"/>
</Directory>

该组件的另一个文件包括

<Fragment>
<ComponentGroup Id="ProductInstallComponent">
  <ComponentRef Id="EXEPackage" />
  <ComponentRef Id="ProjectsOutput" />
  <ComponentRef Id="TempReports" />
  <ComponentRef Id="Help" />
  <ComponentRef Id="ApplicationShortcut" />
  <ComponentRef Id="ApplicationDeskShortcutComp" />
</ComponentGroup>

如果在根位置创建了帮助文件和报告文件。那我怎么能改变呢?

1 个答案:

答案 0 :(得分:0)

AFAIK这样的动作必须在 CostFinalize - 动作之前设置,之后所有目录都被设置和不可变。同样在两个序列中设置它,就像您在上面的示例中所做的那样。即它应该如下:

<InstallUISequence>
  <Custom Action="SetDataLocationDefault" Before="CostFinalize" />
</InstallUISequence>
<InstallExecuteSequence>
  <Custom Action="SetDataLocationDefault" Before="CostFinalize" />
</InstallExecuteSequence>