2014-07-03 136 views

回答

1

您需要創建一個類型51自定義操作來設置屬性,您應該使用SetProperty Element

<SetProperty Action="SetSkyLibFolderA" Id="SkyLibFolder" Before="InstallFiles" Value="Prod"><![CDATA[ISTEST=0]]></SetProperty> 
<SetProperty Action="SetSkyLibFolderB" Id="SkyLibFolder" Before="InstallFiles" Value="Test"><![CDATA[ISTEST=1]]></SetProperty> 

內部文本(XS:字符串) ,其確定屬性是否被設置的條件。如果條件評估爲false,則會跳過該設置。編號:Type 51 Custom Action從格式化文本字符串中設置屬性簡單來說,51型自定義動作基本上只是賦值語句(abc =「xyz」)在設置時間。例如,假設您想要根據目標計算機上的註冊表項來更改安裝位置。我們需要賦值語句,因爲安裝位置在我們開始安裝之前是未知的。

<!-- Find install path from registry --> 
<Property Id="XYZFOLDER"> 
    <RegistrySearch Id="XyzRegistry" 
        Root="HKLM" 
        Key="SOFTWARE\MyXYZ\XyzProduct" 
        Name="InstallDir" 
        Type="raw" /> 
</Property> 

<!-- Set the property --> 
<CustomAction Id="SetXYZLocation" 
       Property="XyzLocation" 
       Value="[XYZFOLDER]xyz.exe" /> 

現在應該在InstallExecuteSequence中正確調度CustomAction(SetXYZLocation)。

使用SetProperty元素,自定義操作和自定義操作的調度由內部的Wix代碼負責。

+0

我是否需要實現Action - > SetSkyLibFolderA,SetSkyLibFolderB? – whihathac

+0

另外,51類自定義操作是指什麼? – whihathac

+0

檢查編輯內的答案 – Isaiah4110

0

是的,用於WiX預處理器變量。 是的,適用於Windows Installer屬性。

目前尚不清楚您應該使用哪個。

WiX產品設置生成Windows Installer程序包(MSI)。除了提供您可能選擇使用的一些自定義操作(一種Windows Installer擴展類型)外,WiX不參與實際安裝。所以,如果你想在安裝時改變一些東西,你必須使用Windows Installer構造。

+0

謝謝湯姆。我的意圖是有這個屬性,我可以確定DLL的安裝路徑。我已經安裝了基於參數ISTEST = 1的dll測試版本,或者默認爲0.我對如何實現它感到困惑 – whihathac

+0

您是否想要爲測試和產品安裝安裝一個MSI?或者,您是否有一個WiX項目可以構建測試MSI或Prod MSI? –

+0

我想要一個MSI用於測試和產品安裝。 – whihathac