2012-05-14 25 views
2

我想要一個WiX的過程中安裝文件安裝有條件的命令行參數是否已經設置基於維克斯在命令行參數有條件的安裝文件安裝

例如我有以下的文件,如果調試標誌已設置

<Component Id="file.pdb" Guid="SOME-GUID"> 
     <Condition>DEBUG</Condition> 
     <File Id="file.pdb" Source="file.pdb" KeyPath="yes" Vital="no" /> 
    </Component> 

我已經添加了DEBUG屬性和命令行讀取它在僅安裝。該文件從不安裝,但我爲什麼困惑?

+0

您是如何在命令行上設置DEBUG屬性的?也許那裏有問題。 –

+1

另外,你只需要在你的例子中爲'File'元素指定'Source'屬性。其餘的文件屬性可以由wix推斷出來。此外,組件guid可以省略。 Wix將自動生成穩定的GUID。 –

+0

我想我可能已經發現了這個問題,現在正在調查。我有我的文件在合併模塊。我從構建msi的主要wxs獲得財產,但是我擔心我可能不得不從每一個msm獲得財產......現在只是測試我的理論,會讓你知道我的發現 – pengibot

回答

2

解決了這個問題。下面是我在做什麼錯誤的解釋和我做了什麼來解決這個問題

我創造了一個安裝程序(.msi),用以下CMD行參數來啓動它

MSIEXEC - 我prog.msi DEBUGPROPERTY =真

我有幾個組件合併模塊這將取決於該屬性是否設置其都拿到注入他們像這樣的物業安裝...

<Merge 
    Id="SomeID" 
    Language="1033" 
    SourceFile="Module.msm" 
    DiskId="1"> 
    <ConfigurationData 
     Name="debugProperty" 
     Value="[DEBUGPROPERTY]" /> 

我缺少的是在合併模塊(的.msm),我需要將下面的代碼

<Configuration Name='debugProperty' Format='Text' DefaultValue='[DEBUGPROPERTY]'/> 
    <Substitution Table='CustomAction' Row='setDebugProperty' Column='Target' Value='[=debugProperty]'/> 
    <CustomAction Id='setDebugProperty' Property='DEBUGPROPERTY' Value='[DEBUGPROPERTY]'/> 

    <InstallExecuteSequence> 
      <Custom Action='setDebugProperty' Before="LaunchConditions">1</Custom> 
    </InstallExecuteSequence> 

這讓我訪問屬性DEBUGPROPERTY這個模塊內部,所以我可以限制文件是否被安裝在安裝現在,這一次還是不行,像這樣

<Component Id="File.pdb" Guid="SOME-GUID"> 
    <Condition>DEBUGPROPERTY</Condition> 
    <File Id="File.pdb" Source="File.pdb" KeyPath="yes" Vital="no" /> 
</Component> 

工作,並允許我在安裝期間,如果我有這樣的說法安裝.pdb文件。