如何将默认的"安装位置"传递给RtfLicense引导程序?

ada*_*ack 11 wix bootstrapper wix3.6

我正在使用rtflicence标准引导程序在我的poject msi链接之前安装dotnet.

我注意到有一个"选项"按钮,显示安装位置对话框,允许用户更改默认安装目录.

我需要:

  1. 阻止显示此选项按钮,或
  2. 使用默认路径填充安装位置,并在用户更改时将其传递回安装程序.

我读到可以将Burn变量从bootstrapper传递给msipackage,但是我还没有找到任何进一步的细节,并希望被指向正确的方向.

谢谢

lev*_*ius 21

要使用选项1,您必须滚动自己的BootstrapperApplication并从菜单中删除选项按钮.

方案二更容易实施.引导程序使用一个特殊的Burn变量来调用,InstallFolder以获取和设置该视图上文本块中的内容,您可以在该Bundle元素内部分配该内容.

<Variable Name="InstallFolder" Type="string" Value="[ProgramFilesFolder]"/>
Run Code Online (Sandbox Code Playgroud)

该常量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>
Run Code Online (Sandbox Code Playgroud)


Jac*_*cob 18

我刚刚发现了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>
Run Code Online (Sandbox Code Playgroud)