4
有誰知道在滿足某些條件時是否/如何阻止基於WiX的MSI安裝程序進入下一個對話框?我有以下代碼:避免用WiX安裝程序中的條件進行下一個對話框
<Dialog Id="SelectIISApplicationPoolUserDialog" Width="370" Height="270" Title="$(var.ApplicationPoolUserDialogTitle)">
<Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)">
<Publish Property="APPLICATIONPOOLUSER" Value="{}">WEBSITE_APPLICATIONPOOLUSERTYPE = "local"</Publish>
<Publish Property="APPLICATIONPOOLUSER" Value="1">WEBSITE_APPLICATIONPOOLUSERTYPE = "domain"</Publish>
<Publish Event="DoAction" Value="CheckPortNumber">1</Publish>
</Control>
CheckPortNumber指的是這樣的:
<Binary Id="IISCA" SourceFile="binaries/MyCustomActions.IIS.CA.dll" />
<CustomAction Id="CheckPortNumber"
BinaryKey="IISCA"
DllEntry="IsFreePort"
Execute="immediate" />
此外,在其他地方,我們有這樣的聲明:
<Publish Dialog="SelectIISApplicationPoolUserDialog"
Control="Next"
Event="NewDialog"
Value="SetSqlServerConnectionDialog">ISPORTFREE</Publish>
當我運行安裝程序,並獲得選擇應用程序池用戶的對話框,然後單擊下一步。自定義操作然後檢查端口號並設置ISPORTFREE變量。但是,不管ISPORTFREE的結果如何,下一個對話框都不顯示。但是,當我再次單擊下一步時,會顯示下一個對話框。
所以我想要的是:當我點擊next並且輸入的portnumber被使用時,我得到一個警告並且不會進入下一個對話框。如果它沒有被使用,我會進入下一個對話框。
感謝。它工作,但我也有不同的檢查:ISPORTFREE =「False」,因爲在自定義操作中,你必須插入字符串到會話對象:session [「ISPORTFREE」] = false.ToString(); – Peter 2009-11-18 09:24:36