Dot-Net
將參數從引導程序傳遞到 msi 捆綁包
我正在使用 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.exeBootstrapper.exe PARAM1=1 PARAM2=2,但似乎沒有將它們傳遞給 MSI。安裝因缺少參數情況而掛起。有沒有辦法將參數從exe傳遞到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"/>
這現在已經實現,並且在 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>您必須創建一個可在命令行覆蓋的捆綁變數,然後將該變數傳遞給您的 msi。