InstallShield Windowsサービスの制御 [InstallShield]
InstallShieldバージョン: 2010
プロジェクトタイプ: 基本のMSIプロジェクト
コンポーネントウィザードを使用して実現する。今回はWindowsサービスの“Remote Registry”の「スタートアップの種類」を「自動」に、「サービスの状態」を「実行」に設定する方法について説明する。
ここでは、InstallShieldの「コンポーネント」を使用する例と、「カスタムアクション」を使用する2つの例を説明する。
本来、「コンポーネント」を利用するのが標準的な方法と思われるが、現状では下記のメッセージでインストールに失敗するため、「カスタムアクション」を利用する方法も併記する。
Ⅰ.コンポーネントを利用する例(エラーで停止)
1.コンポーネントの作成
「編成」、「セットアップのデザイン」または「コンポーネント」を選択する。今回は「セットアップのデザイン」を選択してコンポーネントを作成します。
「セットアップのデザイン」エクスプローラで「TestMSI_WinService_Files」を右クリックし、現れたメニューの「コンポーネントウィザード」を選択する。
2.コンポーネントウィザード
①コンポーネントウィザードへようこそ
「種類を選択してコンポーネントの定義を行う」を選択。
②コンポーネントの種類
コンポーネント名: 適当な名前を入力する。今回はRemoteRegistry
コンポーネントの種類: サービスのコントロール
③サービスの指定
インストール先システムに存在しているサービス
サービス名: Remote Registry
④インストールイベント
「サービスの開始」をチェック
⑤アンインストールイベント
「サービスの停止」をチェック
⑥大気の種類
デフォルトのまま進める
⑦概要
内容確認して進む。
⑧登録完了
3.動作確認
下記エラーメッセージでインストールできず。
Ⅱ.カスタムアクションを利用する例
1.カスタムアクションの作成
① インストールデザイナから「動作とロジック」、「カスタム アクションとシーケンス」、「カスタムアクション」を右クリックします「新しいEXE」、「ディレクトリを参照するパス」と選択します。
②“NewCustumAction1”が出来上がるので適当な名前に変更します。
“NewCustomAction”->“AddRemoteRegistry”
③AddRemoteRegistryのプロパティを以下の内容に設定します。
プロパティ名 | 設定内容 | 説明 |
作業ディレクトリ | SystemFolder | ターゲットシステム上のcmd.exe を使用するため SystemFolder 識別子を使用して、system32 フ ォルダを作業フォルダに指定 |
戻り値の処理 | 同期(終了コードを無視) | |
コマンドライン | cmd.exe /c"net start "Remote Registry"" | |
スクリプト内実行 | 遅延実行(ターミナルサーバーで使用可能) | |
インストール実行シーケンス | 次の後:InstallFiles | |
インストール実行条件 | NOT Installed | 初回インストール時のみ実行される条件 |
④さらに以下の条件でインストール時のロールバック用、アンインストール用、アンインストール時のロールバック用の3つのカスタムアクションも作成します。
◆インストール時のロールバック用 AddRemoteRegistry_RollBack
プロパティ名 | 設定内容 | 説明 |
作業ディレクトリ | SystemFolder | ターゲットシステム上のcmd.exe を使用するため SystemFolder 識別子を使用して、system32 フ ォルダを作業フォルダに指定 |
戻り値の処理 | 同期(終了コードを無視) | |
コマンドライン | cmd.exe /c"net stop "Remote Registry"" | |
スクリプト内実行 | ロールバック実行(ターミナルサーバーで使用可能) | |
インストール実行シーケンス | 次の後:InstallFiles | |
インストール実行条件 | NOT Installed | 初回インストール時のみ実行される条件 |
◆アンインストール用 DeleteRemoteRegistry
プロパティ名 | 設定内容 | 説明 |
作業ディレクトリ | SystemFolder | ターゲットシステム上のcmd.exe を使用するため SystemFolder 識別子を使用して、system32 フ ォルダを作業フォルダに指定 |
戻り値の処理 | 同期(終了コードを無視) | |
コマンドライン | cmd.exe /c"net stop "Remote Registry"" | |
スクリプト内実行 | ロールバック実行(ターミナルサーバーで使用可能) | |
インストール実行シーケンス | 次の後:RemoveDuplicateFiles | |
インストール実行条件 | REMOVE="ALL" | アンインストール時のみ実行される条件 |
◆アンインストール時ロールバック用 DeleteRemoteRegistry_RollBack
プロパティ名 | 設定内容 | 説明 |
作業ディレクトリ | SystemFolder | ターゲットシステム上のcmd.exe を使用するため SystemFolder 識別子を使用して、system32 フ ォルダを作業フォルダに指定 |
戻り値の処理 | 同期(終了コードを無視) | |
コマンドライン | cmd.exe /c"net start "Remote Registry"" | |
スクリプト内実行 | 遅延実行(ターミナルサーバーで使用可能) | |
インストール実行シーケンス | 次の後:RemoveDuplicateFiles | |
インストール実行条件 | REMOVE="ALL" | アンインストール時のみ実行される条件 |
2.動作確認
①サービスの開始確認
インストール完了後にサービス(Remote Registry)を確認すると「開始」となっている。
②サービスの停止確認
アンインストール完了後にサービス(Remote Registry)を確認すると「開始」が消えている。停止している。
以上
コメント 0