InstallShield Windowsファイアウォールの設定を変更する方法 [InstallShield]
InstallShieldバージョン: 2010
プロジェクトタイプ: 基本のMSIプロジェクト
インストール時にPCのWindowsファイアウォールの設定を変更したい場合がある。コマンドラインからnetshコマンドを発行することでセキュリティ規則の有効/無効を切り替えることができる。
ここでは「Windowsファイアウォール」の「受信の規則」内「Windows ファイアウォール リモート管理」グループの「有効」の「はい/いいえ」を一括で変更する方法を説明する。
1.コマンド文字列の動作確認
①ファイアウォールの設定確認
「コントロールパネル」、「管理ツール」「セキュリティが強化された Windows ファイアウォール」をクリックして管理ツールを起動する。
「受信の規則」を選択し、グループ列から「Windows ファイアウォール リモート管理」が現れるまでスクロールし有効列の値を確認する。
②コマンドプロンプトを管理者権限で起動する。
③以下のコマンドを発行する。
“netsh advfirewall firewall set rule group=”Windows ファイアウォールリモート管理” new enable=yes”し4個の規則が更新されることを確認する。
④ファイアウォールの設定確認
再び管理ツールに戻り、メニューから「操作」、「最新の情報に更新」と選択し「受信の規則」を確認し、「Windows ファイアウォールリモート管理」または「ファイルとプリンター共有」グループの有効が“はい”となっていることを確認する。
動作確認が終了したらコマンドのenable=yes 部の記述を enable=no としてコマンドを発行し設定を戻しておく。
2.InstallShieldへのカスタムアクション組み込み
① インストールデザイナから「動作とロジック」、「カスタム アクションとシーケンス」、「カスタムアクション」を右クリックします「新しいEXE」、「ディレクトリを参照するパス」と選択します。
② “NewCustumAction1”が出来上がるので適当な名前に変更します。
“NewCustomAction”->“caAddFireWall”
③ プロパティを以下の内容に設定します。
プロパティ名 | 設定内容 | 説明 |
作業ディレクトリ | SystemFolder | ターゲットシステム上のcmd.exe を使用するためSystemFolder 識別子を使用して、system32 フォルダを作業フォルダに指定 |
コマンドライン | cmd.exe /c"netsh advfirewall firewall set rule group="Windows ファイアウォール リモート管理" new enable=yes" | |
スクリプト内実行 | システムコンテキストで遅延実行 | |
インストール実行シーケンス | 次の後:InstallFiles | |
インストール実行条件 | NOT Installed | 初回インストール時のみ実行される条件 |
④ さらに以下の条件でインストール時のロールバック用、アンインストール用、アンインストール時のロールバック用の3つのカスタムアクションも作成します。
◆インストール時のロールバック用 caAddFireWall_RollBack
プロパティ名 | 設定内容 | 説明 |
作業ディレクトリ | SystemFolder | ターゲットシステム上のcmd.exe を使用するためSystemFolder 識別子を使用して、system32 フォルダを作業フォルダに指定 |
コマンドライン | cmd.exe /c"netsh advfirewall firewall set rule group="Windows ファイアウォール リモート管理" new enable=no" | |
スクリプト内実行 | システムコンテキストでロールバック実行 | |
インストール実行シーケンス | 次の後:InstallFiles | |
インストール実行条件 | NOT Installed | 初回インストール時のみ実行される条件 |
◆アンインストール用 caDeleteFireWall
プロパティ名 | 設定内容 | 説明 |
作業ディレクトリ | SystemFolder | ターゲットシステム上のcmd.exe を使用するためSystemFolder 識別子を使用して、system32 フォルダを作業フォルダに指定 |
コマンドライン | cmd.exe /c"netsh advfirewall firewall set rule group="Windows ファイアウォール リモート管理" new enable=no" | |
スクリプト内実行 | システムコンテキストでロールバック実行 | |
インストール実行シーケンス | 次の後:RemoveDuplicateFiles | |
インストール実行条件 | REMOVE="ALL" | アンインストール時のみ実行される条件 |
◆アンインストール時のロールバック用 caDeleteFireWall_ RollBack
プロパティ名 | 設定内容 | 説明 |
作業ディレクトリ | SystemFolder | ターゲットシステム上のcmd.exe を使用するためSystemFolder 識別子を使用して、system32 フォルダを作業フォルダに指定 |
コマンドライン | cmd.exe /c"netsh advfirewall firewall set rule group="Windows ファイアウォール リモート管理" new enable=yes" | |
スクリプト内実行 | システムコンテキストで遅延実行 | |
インストール実行シーケンス | 次の後:RemoveDuplicateFiles | |
インストール実行条件 | REMOVE="ALL" | アンインストール時のみ実行される条件 |