我正在使用 rtflicence 标准引导程序在链中的我的项目 msi 之前安装 dotnet。
我注意到有一个“选项”按钮,它显示一个安装位置对话框并允许用户更改默认安装目录。
我需要:
- 阻止显示此选项按钮,或
- 使用默认路径填充安装位置,并在用户更改时将其传递回安装程序。
我读到可以将 Burn 变量从引导程序传递给 msipackages,但我还没有找到任何进一步的细节,希望能指出正确的方向。
谢谢
我正在使用 rtflicence 标准引导程序在链中的我的项目 msi 之前安装 dotnet。
我注意到有一个“选项”按钮,它显示一个安装位置对话框并允许用户更改默认安装目录。
我需要:
我读到可以将 Burn 变量从引导程序传递给 msipackages,但我还没有找到任何进一步的细节,希望能指出正确的方向。
谢谢
要使用选项 1,您必须滚动自己的 BootstrapperApplication 并从菜单中删除选项按钮。
选项二更容易实现。引导程序使用一个特殊的 Burn 变量调用InstallFolder
来获取和设置该视图的文本块中的内容,您可以在Bundle
元素内部分配它。
<Variable Name="InstallFolder" Type="string" Value="[ProgramFilesFolder]"/>
该常量ProgramFilesFolder
将在程序启动时设置该文本块的值,如果用户浏览到不同的目录,它将存储在同一个变量中。要将其传递给 MSI,请在您的链中传递InstallFolder
使用MsiProperty
标签(INSTALLLOCATION
是您的 WiX 项目中的属性名称)。
<MsiPackage Vital="yes" DisplayName="Your Name" Id="MsiId" SourceFile="path/to/file.msi">
<MsiProperty Name="INSTALLLOCATION" Value="[InstallFolder]" />
</MsiPackage>
我刚刚发现了 SuppressOptionsUI 选项,它可以解决您的选项 1,而无需滚动您自己的 BootstrapperApplication:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
<Bundle>
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense">
<bal:WixStandardBootstrapperApplication LicenseFile="..\eula.rtf" SuppressOptionsUI="yes"/>
</BootstrapperApplicationRef>
<Chain>
</Chain>
</Bundle>
</Wix>