簡體   English   中英

將參數從bootstrapper傳遞到msi bundle包

[英]Pass parameters from bootstrapper to msi bundle package

我正在使用VS2010和WiX 3.6來創建MSI包並將它們捆綁到Bootstrapper設置中。 這是我的Boostrapper代碼。

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Bundle Name="" Version="" Manufacturer="" UpgradeCode="">
        <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />

        <Chain>
              <MsiPackage SourceFile="Package1.msi">
                <MsiProperty Name="PARAM1" Value="[PARAM1]" />
                <MsiProperty Name="PARAM2" Value="[PARAM2]" />
              </MsiPackage>
              <MsiPackage SourceFile="Package2.msi">
                <MsiProperty Name="PARAM1" Value="[PARAM1]" />
                <MsiProperty Name="PARAM2" Value="[PARAM2]" />
              </MsiPackage>
        </Chain>
    </Bundle>
</Wix>

MSI包必須具有指定的參數才能運行。 通常,我會稱之為"Packag21.msi PARAM1=1 PARAM2=2" 在我構建項目之后,我嘗試以相同的方式將參數傳遞給我的Bootstrapper.exe Bootstrapper.exe PARAM1=1 PARAM2=2 ,但它似乎沒有將它們傳遞給MSI。 安裝與缺少的參數條件掛起。

有沒有辦法將參數從exe傳遞給msi?

這已經實現,並且可以在5月21日的Wix 3.6 RC版本中使用。

以下是它如何工作的一般概念:

<Wix>
<Bundle>
    <Variable Name="CommandLineArg" bal:Overridable="yes"/>
    <Chain>
      <MsiPackage>
        <MsiProperty Name="CommandLineArg" Value="[CommandLineArg]"/>
      </MsiPackage>
    </Chain>
</Bundle>
</Wix>

您必須在命令行中創建一個可覆蓋的bundle變量,然后將該變量傳遞給msi。

目前在標准引導程序中不可用: WixStdBa不提供命令行屬性 - ID:3489809

如果您創建自己的引導程序應用程序,則可以實現此類功能。

編輯:雖然您無法通過命令行將參數傳遞給引導程序,但仍可以通過各種方式在引導程序中收集信息:

例:設置變量

<Variable Name="PARAM1" Value="SomeValue" Persisted="yes" Type="string" />

例如:搜索注冊表

<util:RegistrySearch Root="HKLM" Key="Software\SomeProduct" Value="SomeKey" Variable="PARAM1" Result="value"/>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM