2010-01-29 52 views
6

我有一個維克斯包括用下面的代碼有沒有辦法將預處理器變量設置爲屬性的值?

<Fragment Id="PropertyFragment"> 
    <Property Id="DynamicLanguageCode" Value="[SystemLanguageID]" /> 
    <?define productLanguage = [DynamicLanguageCode]?> 
</Fragment> 

現在在我的產品標籤在我的WiX的腳本文件,我想語言屬性設置爲productLanguage的價值,因爲只需要本地化的整數。有沒有辦法讓我的變量被賦予屬性的值?

感謝

回答

22

似乎有關於不同的是威克斯變量和Windows Installer屬性之間有什麼在你的心中的困惑。可以參照$(var.foo)。可以通過將-d命令行參數傳遞給candle.exe來定義此類變量。它也可以由<?define foo="bar"?>語法來定義。 wix變量是一個只有在構建您的設置時才存在的概念。這是在wix預處理器填充之前發生的任何事情,非常類似於C++中的#define語句。

A Windows安裝程序屬性是在安裝過程中填寫的內容。定義屬性的一種方法是將它們放入MSI文件的Property table中。這是wix Property元素的作用。在Windows安裝程序數據庫中使用的一些(但不是全部)data types允許您使用[FOO]語法引用此屬性。支持該數據類型的數據類型的一個示例是數據類型Shortcut,該數據類型由wix Shortcut元素的Target屬性使用。 Language數據類型不是支持這個!

+0

謝謝你的澄清 – 2010-02-02 10:29:57

2

沒有爭論爲什麼,這可以做這樣的:

<Property Id="DynamicLanguageCode" Value="$(var.SystemLanguageID)" /> 
相關問題