簡體   English   中英

WiX-如何使用配置文件來確定要運行哪個MSI?

[英]WiX - How to use a config file to decide which MSI to run?

我想創建一個在鏈中運行多個安裝程序的安裝程序套件。 主套件應使用配置文件,以便安裝程序根據此配置XML決定要運行的MSI版本。 目的是避免在出現新版本的軟件時不必更新任何WiX或Bootstrapper項目。 相反,只需更新配置XML即可更改將在鏈中安裝的內容。

例如,僅需更新XML內特定MSI的源路徑,以便主安裝程序將讀取此新路徑並運行新的MSI,而不是舊的MSI。

據我了解,Bootstrapper項目中的問題是所有軟件包都是硬編碼的,因此它不能為軟件包的源路徑提供靈活性。

我還嘗試在單個MSI內部使用自定義操作。 看起來很有希望,我可以在讀取XML之后使用C#獲取和設置MSI的屬性,但是這些屬性不能用作源路徑的變量。

我還嘗試在第一個MSI中使用“自定義操作”運行第二個MSI。 這可悲的是沒有解決。

我將不勝感激任何建議!

tldr ,我想運行最初未包含在構建中的安裝程序。 與“ DownloadUrl”類似,但來自本地網絡。 可以使用屬性來更改其值,因此無需每次路徑更改時都重新構建項目。

我認為使用單個XML文件來控制安裝哪些軟件包將很困難。 在刻錄腳本中,用於設置變量的選項限於:

  • <FileSearch>
  • <RegistrySearch>
  • <DirectorySearch>
  • <ComponentSearch>
  • <ProductSearch>

其中只有<FileSearch><DirectorySearch>可以探測源位置。

您可以通過使用文件的存在/不存在來控制MSI軟件包的安裝來使其工作。 在刻錄項目中,使用util:FileSearch元素從源路徑中查找文件:

<util:FileSearch Id="InstallMSI01"
      Variable="InstallMSI01"
      Result="exists"
      Path="[SourceDir]InstallMSI01.txt" />

這應將變量InstallMSI01設置為“ true”或“ false”,具體取決於源路徑中是否存在InstallMSI01.txt文件。 然后,您可以在MSIPackage的安裝條件下使用該變量:

<MsiPackage
    Id="MSI01"
    SourceFile="-- Your Source Path--"
    InstallCondition="InstallMSI01 = &quot;true&quot;">
</MsiPackage>

暫無
暫無

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

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