SSブログ

InstallShield Windowsサービスの制御 [InstallShield]

InstallShieldバージョン: 2010

プロジェクトタイプ: 基本のMSIプロジェクト

コンポーネントウィザードを使用して実現する。今回はWindowsサービスの“Remote Registry”の「スタートアップの種類」を「自動」に、「サービスの状態」を「実行」に設定する方法について説明する。

ここでは、InstallShieldの「コンポーネント」を使用する例と、「カスタムアクション」を使用する2つの例を説明する。

本来、「コンポーネント」を利用するのが標準的な方法と思われるが、現状では下記のメッセージでインストールに失敗するため、「カスタムアクション」を利用する方法も併記する。

image


Ⅰ.コンポーネントを利用する例(エラーで停止)

1.コンポーネントの作成

「編成」、「セットアップのデザイン」または「コンポーネント」を選択する。今回は「セットアップのデザイン」を選択してコンポーネントを作成します。

image

「セットアップのデザイン」エクスプローラで「TestMSI_WinService_Files」を右クリックし、現れたメニューの「コンポーネントウィザード」を選択する。

image

2.コンポーネントウィザード

①コンポーネントウィザードへようこそ

「種類を選択してコンポーネントの定義を行う」を選択。

image

②コンポーネントの種類

コンポーネント名: 適当な名前を入力する。今回はRemoteRegistry

コンポーネントの種類: サービスのコントロール

image

③サービスの指定

インストール先システムに存在しているサービス

サービス名: Remote Registry

image

④インストールイベント

「サービスの開始」をチェック

image

⑤アンインストールイベント

「サービスの停止」をチェック

image

⑥大気の種類

デフォルトのまま進める

image

⑦概要

内容確認して進む。

image

⑧登録完了

3.動作確認

下記エラーメッセージでインストールできず。

image


Ⅱ.カスタムアクションを利用する例

1.カスタムアクションの作成

① インストールデザイナから「動作とロジック」、「カスタム アクションとシーケンス」、「カスタムアクション」を右クリックします「新しいEXE」、「ディレクトリを参照するパス」と選択します。

image

②“NewCustumAction1”が出来上がるので適当な名前に変更します。

“NewCustomAction”->“AddRemoteRegistry”

image

③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)を確認すると「開始」となっている。

image

②サービスの停止確認

アンインストール完了後にサービス(Remote Registry)を確認すると「開始」が消えている。停止している。

image

以上


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。