我正在將我的產品與其他庫鏈接起來,試圖更輕鬆地在多個安裝中安裝一組目錄。目的是重用xml代碼,問題在於它們必須安裝在每個客戶需求的根目錄中。如何在UISequence之後防止目錄中的更改
所以我有我的ComponentGroup
s在WixLibrary。
我在Wix應用程序中設置了我的目錄。
但在安裝之前CostFinalize
之後,目錄被重置爲其默認值,而不是由用戶在對話框序列中選擇的值。
有沒有辦法來防止這種情況?
我正在將我的產品與其他庫鏈接起來,試圖更輕鬆地在多個安裝中安裝一組目錄。目的是重用xml代碼,問題在於它們必須安裝在每個客戶需求的根目錄中。如何在UISequence之後防止目錄中的更改
所以我有我的ComponentGroup
s在WixLibrary。
我在Wix應用程序中設置了我的目錄。
但在安裝之前CostFinalize
之後,目錄被重置爲其默認值,而不是由用戶在對話框序列中選擇的值。
有沒有辦法來防止這種情況?
好吧,首先第一件事情:
CostFinalize
和所有UI
操作我的目錄,其中使用默認值代替。Property
就像我們會做的WIXUI_INSTALLDIR
,整體而言,我們有以下幾點:對安裝directories
庫的特定文件
root
文件夾即root
目錄。directories
的directory
的庫。該庫是我們安裝的唯一特定庫。鏈接所有這些都是它自己的問題,它在
Product
做,在UI
,並使用外部庫中指定的PropertyRef
。此外,請記住,每一個PathEdit
必須被設置爲Indirect="yes"
,你必須將所有的間接Properties
指向你Directory
在UI
要解決這個問題很簡單,Microsoft Installer
複查我們的所有文件夾在用戶在安裝過程中設置它們之後,因此我們需要在UI Sequence
期間用戶更改之後防止發生任何更改。因此Properties
來救援。
這裏有一個例子,在UI
設置要在InstallUISequence
<Property Id="SETFOLDERFREEZE">0</Property>
<CustomAction Id="caSetPreventChanges" Property="SETFOLDERFREEZE" Value="1"/>
設置然後在凍結文件夾的每個文件夾您Product
您鏈接該屬性。
<PropertyRef Id="SETFOLDERFREEZE"/>
<SetDirectory Id="SPECIFIC_FOLDER" Value="[WindowsVolume]MoreStuff" Sequence="both">
<![CDATA[SETFOLDERFREEZE<>"1"]]>
</SetDirectory>
<Property Id="EXTRAFILES_INSTALLDIR" Value="SPECIFIC_FOLDER"/>
您使用Property
EXTRAFILES_INSTALLDIR
在特定UI
該項目,並在您的可重複使用的Library
使用SPECIFIC_FOLDER
。
這是一個爛攤子......但允許重用,並設置了一些簡單的屬性和自定義操作節拍一遍設立文件和文件夾,特別是如果有數百人。