2016-04-14 84 views
1

我試圖實現下一個場景: 「歡迎對話框」 - >「服務名稱的對話框」 - >「安裝路徑對話框」WIX安裝程序 - 變量傳遞到下一個窗口

服務名稱對話框是一個自定義一個。用戶應該輸入服務的名稱,然後按'Next'按鈕 - 在'安裝路徑對話框'出現默認路徑,如「..... \ inserted_value_on_previous_window」。

在「服務名稱的對話框」我有編輯控件來實現,如:

<Control Id="ServiceValueEdit" Type="Edit" X="15" Y="60" Width="200" Height="15" Property="WIXUI_SELECTEDSERVICENAME" Indirect="yes" /> 

所以它應該設置WIXUI_SELECTEDSERVICENAME屬性。 對於在「安裝路徑對話框」設置默認安裝路徑,我使用如下代碼:

<Property Id="WIXUI_SELECTEDSERVICENAME" Value="SELECTEDSERVICENAME"></Property> 

<Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR"></Property> 

<SetDirectory Id="INSTALLDIR" Value="[DEFIISFOLDER]\[WIXUI_SELECTEDSERVICENAME]" Sequence="both"></SetDirectory> 

但不幸的是,當我們去「SERVIC名對話」,並設置任何價值 - 它不會反映在下一屏幕。下一個窗口將會有默認值SELECTEDSERVICENAME。我認爲它在編譯時只設置一個,並且在運行時不會更新。

任何人都可以幫忙搞清楚如何從一個窗口設置這個值並將其傳遞給下一個窗口? 謝謝。

要在這裏要明確是幾截屏: Service name dialog

所以我想要做的就是讓這個字符串下面的對話框包含「名稱」(在圖片上abowe如圖所示),而不是「SELECTEDSERVICENAME '如下所列。

enter image description here

+0

使用Value =「[DEFIISFOLDER] \ [SELECTEDSERVICENAME]」而不是您使用的內容.WIXUI_SELECTEDSERVICENAME是間接屬性。 –

+0

謝謝您關於間接財產的提示! – Oleksii

回答

1

您的安裝初始設置期間設置的INSTALLDIR至[DEFIISFOLDER] [WIXUI_SELECTEDSERVICENAME]的值。這意味着您在設置INSTALLDIR屬性時使用WIXUI_SELECTEDSERVICENAME的初始值。

當您切換將更新installdir的UI頁面時,您需要發佈事件。

我覺得類似於:

<Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)" /> 
    <Publish Property="INSTALLDIR" Value="[DEFIISFOLDER]\[WIXUI_SELECTEDSERVICENAME]">1</Publish> 
</Control> 

將更新爲新WIXUI_SELECTEDSERVICENAME值INSTALLDIR屬性。

+1

非常感謝Brian給你的提示!解決方案與您所說的完全相同:) – Oleksii