November 19, 2013

WiX中加入.NET Framework版本檢查 (2)

WiX中加入.NET Framework版本檢查一文中介紹如何在WiX中加入對.NET Framework 4.0的檢查。如果安裝環境沒有.NET Framework 4.0的話,安裝過程中會跳出警告視窗,在使用者按下確定按鈕後即會停止整個安裝過程。


接下來如果使用者想要安裝.NET Framework 4.0,則必須自行瀏覽官方網站進行下載。這時會想,如果能自動開啟官方網站的話對於使用者來說不也挺方便的嗎?透過WiX提供的WixShellExecCustomAction,可在安裝過程中開啟指定網頁,如下
<Property Id="WixShellExecTarget" Value="http://www.microsoft.com/zh-tw/download/details.aspx?id=17718" />
<CustomAction Id="LaunchBrowser" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" />
<InstallUISequence>
    <Custom Action="LaunchBrowser" Before="LaunchConditions">
        <![CDATA[NOT NETFRAMEWORK40FULL]]>
    </Custom>
</InstallUISequence>
<Condition Message="請先安裝Microsoft .NET Framework 4.0再安裝此軟體">
    <![CDATA[NETFRAMEWORK40FULL]]>
</Condition>

屬性WixShellExecTarget裡的Value即為要開啟的網址。InstallUISequence裡則設定了一個CustomAction檢查安裝過程中若系統環境沒有.NET Framework 4.0,則會開啟下載.NET Framework 4.0的官方網站,最後根據Condition發出警告視窗。Condition裡的條件若不成立的話,Windows Installer將會立刻結束安裝。這裡有一點要特別注意的是,CustomAction裡必須是Before="LaunchConditions"而不是After="LaunchConditions"。若設定為After="LaunchConditions",則會因為Condition執行完因條件不成立而停止安裝,網頁將會無法開啟。

參考資料

No comments: