SSブログ
InstallShield ブログトップ
前の10件 | -

InstallShield ショートカットの生成と引数の設定 [InstallShield]

InstallShieldバージョン: 2010

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

インストールデザイナから「システム構成」、「ショートカット」を選択し、ビュー画面でショートカットを作成したい場所を選択する。ここではデスクトップに作成するので「デスクトップ」を右クリックし現れたダイアログの「ショートカットの新規作成」を選択する。

image

「ショートカットターゲットの参照」ダイアログから、「検索」でインストール先のフォルダを選択し、ファイル名にターゲットファイル名(機能とキーファイル名はプロジェクトによるので適切なものを選ぶ)を指定し「開く」ボタンを押す。

image

新たにショートカットが作成されるので、適当な名前に変更する。

image

2.ショートカットプロパティの設定

作成されるショートカットに引数を与える場合

作成されたショートカットを選択しショートカットのプロパティを開き、「引数」欄にコマンドライン引数を入力する。ここでは”/Setting”と設定した。

image

3.確認

デスクトップにショートカットが作成された。

image

ショートカットアイコンを右クリックし「プロパティ」を選択する。」「ショートカット」タブを選択し「リンク先」のコマンドラインに引数が追加されていればOK。

image

以上


InstallShield レジストリへのキー追加 [InstallShield]

InstallShieldバージョン: 2010

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

レジストリへのキー追加の方法について説明する。ここではWindowsが共通に使用する“”へDWORD値“”を追加する。

1.レジストリの設定

①レジストリビュー画面

インストールデザイナから「システム構成」、「レジストリ」を選択し“インストール先コンピュータの[レジストリ]ビュー”画面を開きます。

image

②ビューフィルター

画面上部の「ビューフィルタ」から「すべてのアプリケーション データ」を選択します。

image

③キーの作成

インストール先コンピュータの[レジストリ]ビューで、キーを作成する場所を右クリックし、「新規作成」、「キー」を選択する。

image

作詞された「新しいキー #1」に

“SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System”を入力するとキーが作成される。

image

image

④値の設定

値を作成するキー(System)を右クリックし「新規作成」「DWORD値」を選択する。

image

“新しい値 #1”ができるので“LocalAccountTokenFilterPolicy”とリネームし、ルクリックして値を「1」に設定する

image

2.レジストリ キーの確認

①レジストリエディタの起動

Windowsのメニューから“プログラムとファイルの検索”の“regedit.exe”と入力しレジストリエディタを起動する。

image

②キーへの移動

値が記述された位置、

(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System)まで移動する。

image

③値の確認

以下の値が書き込まれて入れば成功。

image

*注意

以下のように「プロジェクト アシスタント」を利用して設定する方法もある。

image

以上


InstallShield ML 「参加方法」 [InstallShield]

Installer 関連 ML への参加に加え、知りたいことズバリのInstalShield MLを見つけたので参加してみました。

1.InstallShield ML Webサイト

以下のサイトからグループに参加できる。YAHOO! JAPANのユーザーIDはすでに持っていたので以下のような表示となっています。ここで「このグループに参加する」ボタンを押します。

http://groups.yahoo.co.jp/group/is-user/

image

2.参加

受信メールアドレスが2つ登録されているので、受信を希望するアドレスを選択して「参加」ボタンを押します。

image

3.管理者による承認待ち

image

4.断念

申請して10日が過ぎましたが承認メールが届きません。残念ながらこのMLへの参加を断念することにしました。

引き続き承認メールは待ちの状態としておきますが、承認されても積極的に運用は出来ないなとの感想です。

 

参考サイト


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

以上


Installer 関連 ML 「参加方法」 [InstallShield]

InstallShieldを使っていると、ニュアルやHELPではわからない事が多くWeb調査や実動作での確認で時間がかかることが多い。メーカーのサポートプログラムがあるが、高価なため現状では入ることが困難。いろいろ調べたところ、Installer 関連 ML 見つけたので参加してみました。

1.Installer 関連 ML Webサイト

以下のサイトから参加します。「MLに参加」ボタンを押します。

http://www.freeml.com/ctrl/html/MessageListForm/msi@freeml.com

image

2.参加

やはりID登録が必要なようです。「マイページをつくる」ボタンを押して「GMOとくとくID」用マイページを作ります。

image

3.新規マイページ作成

①メールアドレス確認

メールアドレスを入力し「確認メールを送信する」ボタンを押します。

image

image

②プロフィール情報

送られてきたメールに記載されているURLをクリックすると「プロフィール情報の登録」ページが現れます。ここにプロフィール情報を入力して先に進みます。

image

③マイページ作成完了

プロフィール内容確認後、マイページが作成されます。

image

4.MLの登録

マイページから参加するメーリングリストを探します。

image

キーワード「installer」で検索します。

image

見つかりました。

image

参加します。

image

参加の確認後、参加が完了しました。

image

 

メーリングリストへの参加方法については以上です。過去ログの取得方法については次回書きます。

 

参考サイト


InstallShield Windows Installer 形式 DLLの利用方法 [InstallShield]

InstallShieldバージョン: 2010

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

InstallShieldからWin32の機能を利用するため、DLL作成方法とそれを利用する方法を説明する。DLLの機能としてインストーラが管理者権限で起動しているか確認し、通常権限で起動している場合、インストールを中止する機能を作成する。

1.Windows Installer 形式 DLL ファイルの作成

① Visual Studioを起動し、プロジェクトの新規作成から「Visual C++」、「Win32」、「Win32プロジェクト」を選択し、プロジェクトの名前を「AdminCheck」として「OK」ボタンを押す。

image

② アプリケーションの設定

アプリケーションの種類: DLL

追加のオプション: 空のプロジェクト

でプロジェクトを作成する。

image

③ ファイルの作成

以下二つのファイル「AdminCheck.cpp」「AdminCheck.def」を作成します。

ファイル「AdminCheck.cpp」

// link to MSI library

#pragma comment(lib, "msi.lib")

// include standard Windows and MSI headers

#include < windows.h >

#include < msi.h >

#include < msiquery.h >

UINT __stdcall IsAnAdmin(MSIHANDLE hInstall) {

    BOOL b = FALSE;

    SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;

    PSID AdministratorsGroup;

    b = AllocateAndInitializeSid(&NtAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &AdministratorsGroup);

    if(b) {

        if (!CheckTokenMembership( NULL, AdministratorsGroup, &b)) {

        b = FALSE;

    }

    FreeSid(AdministratorsGroup);

    }

    switch(b) {

        case TRUE:

           MessageBox(GetForegroundWindow( ), TEXT("管理者権限で起動しました"), TEXT("Custom Action"), MB_OK | MB_ICONINFORMATION);

            b = FALSE;

            break;

        case FALSE:

            MessageBox(GetForegroundWindow( ), TEXT("通常権限で起動しました"), TEXT("Custom Action"), MB_OK | MB_ICONINFORMATION);

            b = TRUE;

            break;

        }

        return(b);

    }

// Windows Installerと情報の受け渡しをプロパティを利用して行うサンプル

UINT __stdcall SecondAction(MSIHANDLE hInstall) {

    // max. USERNAME size, from CustomerInformation panel

    const DWORD MAX_USERNAME_LEN = 50;

    // initialize empty string and size buffer

    TCHAR UserName[MAX_USERNAME_LEN + 1] = {0};

    DWORD Buffer = MAX_USERNAME_LEN + 1;

    // read and display the initial value of USERNAME

    MsiGetProperty(hInstall, TEXT("USERNAME"), UserName, &Buffer);

    MessageBox(GetForegroundWindow( ), UserName, TEXT("USERNAME"), MB_OK | MB_ICONINFORMATION);

    // change the value of USERNAME

    MsiSetProperty(hInstall, TEXT("USERNAME"),

    TEXT("Valued Customer"));

    return ERROR_SUCCESS;

}

ファイル「AdminCheck.def」

LIBRARY CustomAction

EXPORTS

IsAnAdmin

④ ビルドします。

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

① カスタムアクションウィザードの起動

「動作とロジック」、「カスタム アクションとシーケンス」と選択し「カスタム アクション」を右クリックし「カスタムアクションウィザード」を選択する。

image

image

② 基本情報

名前: CheckUserAdmin

コメント: Windows Installer 形式DLLを利用して管理者権限か確認する

image

③ アクションの種類

種類: Windows Installerのダイナミックリンクライブラリの関数を呼び出す

場所: Binary テーブルに保存する

image

④ アクションのパラメータ

ソース: AdminCheck.dllを指定する。

ターゲット: 関数名 IsAnAdmin を指定

ターゲットは設定済みで、修正する場合はウィザードから戻って設定を変更する。

image

⑤ 追加オプオション

戻り値の処理: 同期(終了コードを確認)

image

⑥ 応答オプション

スクリプト内実行: 即時実行

実行スケジュール: 1プロセスにつき1回実行

image

⑦ シーケンスに挿入する

インストールUIシーケンス: 次の後:AppSearch

インストール実行シーケンス: <シーケンスになし>

image

⑧ シーケンス確認

「AppSearch」の後に「CheckUserAdmin」が設定されています。

image

ビルドして完了です。

3.動作確認

出来上がったsetup.exeを通常権限で実行します。

image

と表示され、以降のインストールウィザードは完了します。

次に管理者として実行します。

image

と表示され、以降のインストーウィザードも進めることができます。


基本のMSIデバッグ方法 [InstallShield]

InstallShieldバージョン: 2010

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

1.リリースビルドを行う

「単一MSIパッケージ」を選択し、インストールのビルドを行う。

image

2.「MSIデバッガ」ビューを開く

ツールバーの「MSIデバッガ」ボタンを押すか、「ビルド」、「MSIデバッガ」、「MSIデバッガの開始」をクリックする。

「ボタン」の場合

image

「メニュー」の場合

image

「インストールデザイナ」に動作シーケンスおよびインストーラのダイアログが表示されます。

image

3.ブレークポイントの設定とステップ実行

インストーラーの実行をキャンセルし、ブレークさせたい行を選択し“F9”を押しブレークポイントを設定する。

image

次に前述の「MSIデバッグ」ボタンを押すと、ブレークポイントまでインストール処理が進み、その時点でのプロパティと値が表示される。

image

あとは「ステップオーバー」、「ステップイン」ボタンを使用して、基本のMSIでもデバッグが可能。

image


InstallShield Windowsファイアウォールの設定を変更する方法 [InstallShield]

InstallShieldバージョン: 2010

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

インストール時にPCのWindowsファイアウォールの設定を変更したい場合がある。コマンドラインからnetshコマンドを発行することでセキュリティ規則の有効/無効を切り替えることができる。

ここでは「Windowsファイアウォール」の「受信の規則」内「Windows ファイアウォール リモート管理」グループの「有効」の「はい/いいえ」を一括で変更する方法を説明する。

1.コマンド文字列の動作確認

①ファイアウォールの設定確認

「コントロールパネル」、「管理ツール」「セキュリティが強化された Windows ファイアウォール」をクリックして管理ツールを起動する。

「受信の規則」を選択し、グループ列から「Windows ファイアウォール リモート管理」が現れるまでスクロールし有効列の値を確認する。

image

②コマンドプロンプトを管理者権限で起動する。

image

③以下のコマンドを発行する。

“netsh advfirewall firewall set rule group=”Windows ファイアウォールリモート管理” new enable=yes”し4個の規則が更新されることを確認する。

image

④ファイアウォールの設定確認

再び管理ツールに戻り、メニューから「操作」、「最新の情報に更新」と選択し「受信の規則」を確認し、「Windows ファイアウォールリモート管理」または「ファイルとプリンター共有」グループの有効が“はい”となっていることを確認する。

image

動作確認が終了したらコマンドのenable=yes 部の記述を enable=no としてコマンドを発行し設定を戻しておく。

2.InstallShieldへのカスタムアクション組み込み

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

image

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

“NewCustomAction”->“caAddFireWall”

image

③ プロパティを以下の内容に設定します。

プロパティ名

設定内容

説明

作業ディレクトリ

SystemFolder

ターゲットシステム上のcmd.exe を使用するためSystemFolder 識別子を使用して、system32 フォルダを作業フォルダに指定

コマンドライン

cmd.exe /c"netsh advfirewall firewall set rule group="Windows ファイアウォール リモート管理" new enable=yes"

 

スクリプト内実行

システムコンテキストで遅延実行

 

インストール実行シーケンス

次の後:InstallFiles

 

インストール実行条件

NOT Installed

初回インストール時のみ実行される条件

image

④ さらに以下の条件でインストール時のロールバック用、アンインストール用、アンインストール時のロールバック用の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"

アンインストール時のみ実行される条件


InstallShield プロパティによるインストール条件を変える方法 [InstallShield]

InstallShieldバージョン: 2010

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

インストールするPCの環境によりインストールする内容を変更する場合がある。そのさいコンポーネントのプロパティ“条件”を利用し、インストールするファイルまたはファイル群に条件を設定することで実現できる。

この説明では、ヘルプファイルにインストール条件を設定するとして説明する。

1.条件を設定するファイルの確認

インストールデザイナから「編成」->「コンポーネント」を選択、ビュー画面から「コンポーネント」->「AllOtherFiles」->「ファイル」を選択する。ここでヘルプファイルがコンポーネントに登録されていることを確認する。

image

2.条件の設定

再びビューの「コンポーネント」->「AllOtherFiles」と選択するとプロパティが現れる。

image

3.インストール条件を設定する。

プロパティ「条件」のプロパティボタンを押すと、条件ビルダが起動するので条件を設設定する。ここでは、先に設定した“P-Tool”の有無によるリモートPCプロパティ“REMOTE_PC”を使用する。

image

“P-Tool.txt”が存在する場合、“REMOTE_PC”プロパティにはファイルへのパスが入力されるため、それを評価する式を“REMOTE_PC <> “””を設定する。

image

4.動作確認

P-Tool.txtが存在する場合

TestHelp.txtがインストールされた。

image

P-Tool.txtが無い場合

TestHelp.txtがインストールされない。

image


InstallShield インストール先に任意のファイルが存在するか確認する方法 [InstallShield]

InstallShieldバージョン: 2010

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

先にインストールされているアプリケーションによって、新たにインストールする内容を変更する必要がある時がある。特にレジストリに情報のないアプリケーションがインストールされている時に、ハードディスク上のEXEファイルを検索して、インストール先の環境を確認する場合に利用する。

これは”システム検索ウィザード”を使用して実現できる。

1.インストールデザイナから「動作とロジック」->「システム検索」を選択する。

2.システム検索ビューの上でマウスを右クリックすると現れるダイアログから“追加”を選択すると、システム検索ウィザードが起動する。「次へ」ボタンを押す。

image

image

3.検索対象する対象を指定する。

“ファイル パス(ファイルを検索)”を選択する。「次へ」ボタンを押す。

image

4.ファイルの詳細とその検索場所を指定する。

“ファイル名”を検索する実行ファイル名、“検索先”を“すべてのドライブを検索する”にチェックする、そして“検索するサブフォルダの最大数”はディフォルトの10ままとした。「次へ」ボタンを押す。

image

5.この値の処理方法を指定する。

“値を保持するプロパティ”を“REMOTE_PC”とし、この値によりインストール条件を変更するため、“プロパティに値を保存し、インストール条件でこのプロパティを使用”にチェックを入れる。「完了」ボタンを押す。

image

6.条件ビルダで条件を設定する。

メッセージを入力して「OK」ボタンを押す。

image

7.完了

インストール条件分岐用のプロパティ“REMOTE_PC”が登録される。

image


前の10件 | - InstallShield ブログトップ

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