Translate

2012年2月20日月曜日

WiXでファイアウォールの例外登録

最近のWindowsはセキュリティが向上した反面、システム開発の立場からは非常にやりにくい状況になっています。特にファイアウォールに関しては Windowsファイアウォールのほかにも、各種セキュリティーソフトなどそれぞれに設定方法が違って頭を悩ませるには十分の内容です。

WiX3.0以降でファイアウォールの例外登録ができることがわかったので、備忘録として設定方法について記録しておきます。

まず、ファイアウォールの機能はExtensionとして提供されているので、ソース(*.wxs)とコンパイル(Candle)、リンク(Light)の3箇所に手を加える必要があります。

■ソース

FirewallExtensionを使用するためには、まずはじめにWix要素に「FirewallExtension」を名前空間「fire」としてインクルードするための一文を追加する必要があります。
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:fire="http://schemas.microsoft.com/wix/FirewallExtension">
次に、ファイアウォールを設定したいFile要素もしくはComponent要素に、FirewallException要素を追加します。下の例はアプリケーションの実行ファイル(myapp.exe)に対して通信を許可する例外を追加するものです。

このほかにも特定ポートなどの通信を許可する設定などもできるようです。
<File Id="myapp.exe" Name="myapp.exe" Source="D:\MyApp\myapp.exe" KeyPath="yes">
    <fire:FirewallException Id="myapp.exe" Name="MyAppName" Scope="any"/>
</File>
※ファイアウォールの要素名には接頭辞「fire:」をつける必要があります。

■コンパイル&リンク

インストーラのコンパイルとリンクの際には、引数に"-ext"を使って「WiXFirewallExtension」ライブラリを追加する必要があります。
candle.exe myapp.wxs -out myapp.wixobj -ext WixFirewallExtension

light.exe myapp.wixobj -ext WixUIExtension -ext WixFirewallExtension -cultures:ja-jp  -out myapp.msi -pdbout myapp.wixpdb myapp.wixobj
以上です。

赤で書いたところが追加が必要なところです。

0 件のコメント :

コメントを投稿