我对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>
如果在根位置创建了帮助文件和报告文件。那我怎么能改变呢?
答案 0 :(得分:0)
AFAIK这样的动作必须在 CostFinalize
- 动作之前设置,之后所有目录都被设置和不可变。同样在两个序列中设置它,就像您在上面的示例中所做的那样。即它应该如下:
<InstallUISequence>
<Custom Action="SetDataLocationDefault" Before="CostFinalize" />
</InstallUISequence>
<InstallExecuteSequence>
<Custom Action="SetDataLocationDefault" Before="CostFinalize" />
</InstallExecuteSequence>