我可以這樣做嗎?WIX:我可以根據WIX中的另一個屬性定義屬性嗎?
<?if ISTEST="0"?>
<?define SkyLibFolder = "Prod"?>
<?else ?>
<?define SkyLibFolder = "Test"?>
<?endif ?>
我需要一個變量FolderPath,稍後在WIX中使用它。
我可以這樣做嗎?WIX:我可以根據WIX中的另一個屬性定義屬性嗎?
<?if ISTEST="0"?>
<?define SkyLibFolder = "Prod"?>
<?else ?>
<?define SkyLibFolder = "Test"?>
<?endif ?>
我需要一個變量FolderPath,稍後在WIX中使用它。
您需要創建一個類型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代碼負責。
是的,用於WiX預處理器變量。 是的,適用於Windows Installer屬性。
目前尚不清楚您應該使用哪個。
WiX產品設置生成Windows Installer程序包(MSI)。除了提供您可能選擇使用的一些自定義操作(一種Windows Installer擴展類型)外,WiX不參與實際安裝。所以,如果你想在安裝時改變一些東西,你必須使用Windows Installer構造。
我是否需要實現Action - > SetSkyLibFolderA,SetSkyLibFolderB? – whihathac
另外,51類自定義操作是指什麼? – whihathac
檢查編輯內的答案 – Isaiah4110