在Burn托管引导程序内指定WiX中的软件包的INSTALLLOCATION

dec*_*jau 8 wix burn wix3.6

我有一个WiX 3.6软件包(使用Burn)和托管引导程序,可以安装多个MSI软件包.一些软件包安装到公共位置(C:\program files\MyApp).

我想让用户在托管引导程序应用程序(C# WPF)中选择安装位置,特别是因为应用程序很大而需要安装;大约1 GB.如何为捆绑包中的每个MSI包指定INSTALLLOCATION ?

Bob*_*son 12

为每个MsiPackage 使用MsiProperty子项指定INSTALLLOCATION = [BurnVariable].然后使用Engine.StringVariables设置BurnVariable.

例如,在您的包中设置:

<Bundle ...>
    <Variable Name='BurnVariable' Value='bar' />
    ...
    <Chain>
        <MsiPackage Source='path\to\your.msi'>
            <MsiProperty Name="INSTALLLOCATION" Value="[BurnVariable]" />
        </MsiPackage>
    </Chain>
</Bundle>    
Run Code Online (Sandbox Code Playgroud)

另请参阅有关此主题的FireGiant说明.

然后在托管引导程序中,您可以执行与此类似的操作:

Engine.StringVariables["BurnVariable"] = "C:\program files\MyApp";
Run Code Online (Sandbox Code Playgroud)