マージモジュールホルダオブジェクトの代替手段cabi.networld.co.jp/faq/installshield/00001778/...※...

10
InstallShield Tips & Tricks 1/10 マージモジュールホルダオブジェクトの代替手段 検証 検証 検証 検証したバージョン したバージョン したバージョン したバージョン: InstallShield 20 InstallShield 20 InstallShield 20 InstallShield 2011 Premier Premier Premier Premier Edition Edition Edition Edition 対象 対象 対象 対象プロジェクト プロジェクト プロジェクト プロジェクト: InstallScript InstallScript InstallScript InstallScript プロジェクト プロジェクト プロジェクト プロジェクト 概要 概要 概要 概要 InstallScript 形式プロジェクトのマージモジュールホルダオブジェクトとは、本来 MSI 形式 のインストーラで用い られるマージモジュールを、InstallScript 形式のインストーラにおいて容易に使用するために開発されました。 しかしながら、修正インストール・アップグレードに対応していない点や、実行時の詳細な設定を行うことができな いという欠点がありました。InstallShield 2011 では、マージモジュールホルダオブジェクトの使用が非推奨となり、 将来的に廃止される可能性が考えられますので、代替として下記のいずれかの方法を使用してください。 A. A. A. A.InstallShield InstallShield InstallShield InstallShield 前提条件 前提条件 前提条件 前提条件として として として として、既存 既存 既存 既存の再配布可能 再配布可能 再配布可能 再配布可能ファイルを ファイルを ファイルを ファイルを使用 使用 使用 使用する する する する 一部のマージモジュールに関しては、同一モジュールのインストールを行う EXE 形式の再配布可能ファイルが提 供されております。例えば、Visual C++ 9.0 では、以下の再配布可能ファイルが提供されております。 Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86) http://www.microsoft.com/downloads/details.aspx?FamilyID=a5c84275 http://www.microsoft.com/downloads/details.aspx?FamilyID=a5c84275 http://www.microsoft.com/downloads/details.aspx?FamilyID=a5c84275 http://www.microsoft.com/downloads/details.aspx?FamilyID=a5c84275- - -3b97 3b97 3b97 3b97- - -4ab7 4ab7 4ab7 4ab7- - -a40d a40d a40d a40d- - -3802b2af5fc2&display 3802b2af5fc2&display 3802b2af5fc2&display 3802b2af5fc2&display Lang=ja Lang=ja Lang=ja Lang=ja 既存の再配布可能を InstallShield 前提条件として実行することで、マージモジュールホルダオブジェクトを使用せ ずに依存関係となるモジュールのインストールが行えます。 InstallShield 前提条件のプロジェクトへの追加方法は以下のとおりです。 1. [アプリケーション データ]-[前提条件]を選択します 2. 前提条件のリストより、プロジェクトに含めるファイルを選びチェックをつけます。例えば、上記の Visual C++ 9.0 の再配布可能パッケージを含める場合は、以下の前提条件にチェックをつけてください。(リスト上部のフ ィルタフィールドに任意の文字列を入力すると、該当する文字列を含む前提条件のみがフィルタされて表示さ れます。 )

Transcript of マージモジュールホルダオブジェクトの代替手段cabi.networld.co.jp/faq/installshield/00001778/...※...

InstallShield Tips & Tricks

1/10

マージモジュールホルダオブジェクトの代替手段

検証検証検証検証したバージョンしたバージョンしたバージョンしたバージョン:::: InstallShield 20InstallShield 20InstallShield 20InstallShield 2011111111 PremierPremierPremierPremier EditionEditionEditionEdition

対象対象対象対象プロジェクトプロジェクトプロジェクトプロジェクト:::: InstallScriptInstallScriptInstallScriptInstallScript プロジェクトプロジェクトプロジェクトプロジェクト

概要概要概要概要

InstallScript 形式プロジェクトのマージモジュールホルダオブジェクトとは、本来 MSI 形式 のインストーラで用い

られるマージモジュールを、InstallScript 形式のインストーラにおいて容易に使用するために開発されました。

しかしながら、修正インストール・アップグレードに対応していない点や、実行時の詳細な設定を行うことができな

いという欠点がありました。InstallShield 2011 では、マージモジュールホルダオブジェクトの使用が非推奨となり、

将来的に廃止される可能性が考えられますので、代替として下記のいずれかの方法を使用してください。

A.A.A.A.InstallShield InstallShield InstallShield InstallShield 前提条件前提条件前提条件前提条件としてとしてとしてとして、、、、既存既存既存既存のののの再配布可能再配布可能再配布可能再配布可能ファイルをファイルをファイルをファイルを使用使用使用使用するするするする

一部のマージモジュールに関しては、同一モジュールのインストールを行う EXE 形式の再配布可能ファイルが提

供されております。例えば、Visual C++ 9.0 では、以下の再配布可能ファイルが提供されております。

Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)

http://www.microsoft.com/downloads/details.aspx?FamilyID=a5c84275http://www.microsoft.com/downloads/details.aspx?FamilyID=a5c84275http://www.microsoft.com/downloads/details.aspx?FamilyID=a5c84275http://www.microsoft.com/downloads/details.aspx?FamilyID=a5c84275----3b973b973b973b97----4ab74ab74ab74ab7----a40da40da40da40d----3802b2af5fc2&display3802b2af5fc2&display3802b2af5fc2&display3802b2af5fc2&display

Lang=jaLang=jaLang=jaLang=ja

既存の再配布可能を InstallShield 前提条件として実行することで、マージモジュールホルダオブジェクトを使用せ

ずに依存関係となるモジュールのインストールが行えます。

InstallShield 前提条件のプロジェクトへの追加方法は以下のとおりです。

1. [アプリケーション データ]-[前提条件]を選択します

2. 前提条件のリストより、プロジェクトに含めるファイルを選びチェックをつけます。例えば、上記の Visual C++

9.0 の再配布可能パッケージを含める場合は、以下の前提条件にチェックをつけてください。(リスト上部のフ

ィルタフィールドに任意の文字列を入力すると、該当する文字列を含む前提条件のみがフィルタされて表示さ

れます。 )

InstallShield Tips & Tricks

2/10

「「「「Microsoft Visual C++ 2008 SP1 Redistributable Package (x86)Microsoft Visual C++ 2008 SP1 Redistributable Package (x86)Microsoft Visual C++ 2008 SP1 Redistributable Package (x86)Microsoft Visual C++ 2008 SP1 Redistributable Package (x86)」」」」

※ Microsoft Visual C++ 2008 SP1 Redistributable Package (x86) が含まれるのは InstallShield 2011 からと

なります。

3. デフォルトで用意されている前提条件以外に、既存の再配布可能ファイルや依存関係となる製品のインスト

ーラの InstallShield 前提条件を作成することも可能です。 詳細な作成方法については、以下の資料をご参

照ください。

InstallShield InstallShield InstallShield InstallShield 活用活用活用活用のヒントとサンプルのヒントとサンプルのヒントとサンプルのヒントとサンプル 「「「「独自独自独自独自のののの InstallShield InstallShield InstallShield InstallShield 前提条件前提条件前提条件前提条件をををを作成作成作成作成するするするする」」」」

http://www.networld.co.jp/is/tips.htm#tips05http://www.networld.co.jp/is/tips.htm#tips05http://www.networld.co.jp/is/tips.htm#tips05http://www.networld.co.jp/is/tips.htm#tips05

B.B.B.B.マージモジュールをマージモジュールをマージモジュールをマージモジュールを含含含含むむむむ基本基本基本基本のののの MSI MSI MSI MSI 形式形式形式形式インストーラをインストーラをインストーラをインストーラを作成作成作成作成してしてしてして、、、、InstallShield InstallShield InstallShield InstallShield 前提条前提条前提条前提条

件件件件としてとしてとしてとして実行実行実行実行するするするする

マージモジュールに対応した再配布可能ファイルが存在していない場合は、マージモジュールを含んだ msi 形式

インストーラを別途作成して、InstallShield 前提条件として実行する方法によりご対応いただけます。

※※※※InstallScript InstallScript InstallScript InstallScript 形式形式形式形式インストーラのインストーラのインストーラのインストーラの InstallShield InstallShield InstallShield InstallShield 前提条件前提条件前提条件前提条件サポートはサポートはサポートはサポートは、、、、InstallShield 2010 InstallShield 2010 InstallShield 2010 InstallShield 2010 からとなりますからとなりますからとなりますからとなります。。。。

それそれそれそれ以前以前以前以前のバージョンにつきましてはのバージョンにつきましてはのバージョンにつきましてはのバージョンにつきましては、、、、後述後述後述後述 CCCC のののの方法方法方法方法をおをおをおをお使使使使いくださいいくださいいくださいいください。。。。

1. InstallShield を起動し、[基本の MSI]プロジェクトを新規作成します

2. [インストールデザイナー]-[編成]-[セットアップのデザイン]ビューにて、機能を新規作成します

InstallShield Tips & Tricks

3/10

3. [アプリケーションデータ]-[再配布可能ファイル]ビューで、必要となるマージモジュールにチェックを入れます

※ 選択されたマージモジュールは[セットアップデザイン]ビューでもご確認いただけます。

4. マージモジュールのインストールのみを行う子インストーラを「プログラムの追加と削除」パネルに表示させない

場合は、[動作とロジック]-[プロパティマネージャ]ビューにて、以下のプロパティを追加します

名前名前名前名前::::ARPSYSTEMCOMPONENT

値値値値::::1

5. [メディア]-[リリース]にて、リリースウィザードを起動します

InstallShield Tips & Tricks

4/10

6. [メディアの種類]ダイアログにて「ネットワーク」もしくは「Web」を選択します

7. [リリース構成]ダイアログにて「すべてのファイルを圧縮」を選びます。

8. [セットアップ起動ツール]ダイアログにて、[インストール起動ツール(Setup.exe)を作成する]からチェックを外しま

す。

チェックをチェックをチェックをチェックを外外外外したしたしたした場合場合場合場合、、、、単一形式単一形式単一形式単一形式のののの msi msi msi msi ファイルがファイルがファイルがファイルが生成生成生成生成されますされますされますされます。。。。 後述後述後述後述 C C C C のののの方法方法方法方法をををを使用使用使用使用するするするする場合場合場合場合、、、、チェックをチェックをチェックをチェックを

つけてつけてつけてつけて、、、、単一単一単一単一のののの Setup.exe Setup.exe Setup.exe Setup.exe のののの生成生成生成生成をををを行行行行ってくださいってくださいってくださいってください。。。。

InstallShield Tips & Tricks

5/10

9. 次にメニューバー[ツール]-[前提条件エディター]を選択

します。

10. [含めるファイル]タブにて、手順 1

~9 により作成した MSI ファイルを

指定します。

11. [実行するアプリケーション]タブにて、以下の設定を行います。

起動起動起動起動するアプリケーションをするアプリケーションをするアプリケーションをするアプリケーションを指定指定指定指定してくださいしてくださいしてくださいしてください::::含含含含めるファイルでめるファイルでめるファイルでめるファイルで指定指定指定指定したしたしたした MSIMSIMSIMSI ファイルファイルファイルファイル

アプリケーションのコマンドラインをアプリケーションのコマンドラインをアプリケーションのコマンドラインをアプリケーションのコマンドラインを指定指定指定指定してくださいしてくださいしてくださいしてください。:「。:「。:「。:「/qn /norestart」」」」

セットアップがサイレントモードでセットアップがサイレントモードでセットアップがサイレントモードでセットアップがサイレントモードで実行実行実行実行するとき・・・するとき・・・するとき・・・するとき・・・:「:「:「:「/qn /norestart」」」」

InstallShield Tips & Tricks

6/10

12. [条件]タブにて、[追加]をクリックします。子インストーラの起動条件として、以下の設定を行います。

条件条件条件条件のののの種類種類種類種類をををを選択選択選択選択しますしますしますします::::レジストリキーのレジストリキーのレジストリキーのレジストリキーの存在有無存在有無存在有無存在有無

セットアッププロパティをセットアッププロパティをセットアッププロパティをセットアッププロパティを実行実行実行実行するときのするときのするときのするときの条件条件条件条件:

HKEY_LOCAL_MACHINEHKEY_LOCAL_MACHINEHKEY_LOCAL_MACHINEHKEY_LOCAL_MACHINE\\\\SOFTWARESOFTWARESOFTWARESOFTWARE\\\\MicrosoftMicrosoftMicrosoftMicrosoft\\\\WindowsWindowsWindowsWindows\\\\CurrentVersionCurrentVersionCurrentVersionCurrentVersion\\\\UninstallUninstallUninstallUninstall\\\\{{{{製品製品製品製品 GUIDGUIDGUIDGUID}}}}

※製品 GUID は、MSI 形式インストーラのプロジェクトにて[インストール情報]-[一般情報]-[全般]-[製品コー

ド]にて確認できます

このこのこのこの前提条件前提条件前提条件前提条件をををを実行実行実行実行するするするする::::指定指定指定指定されたレジストリキーがされたレジストリキーがされたレジストリキーがされたレジストリキーが““““存在存在存在存在しないしないしないしない””””ときときときとき

13. [動作]タブにて以下の設定を行います。

前提条件前提条件前提条件前提条件はははは管理者権限管理者権限管理者権限管理者権限をををを必要必要必要必要とするチェックとするチェックとするチェックとするチェック::::オンオンオンオン

前提条件前提条件前提条件前提条件のウィンドウにのウィンドウにのウィンドウにのウィンドウに進行状況進行状況進行状況進行状況をををを表示表示表示表示するするするする((((未加工未加工未加工未加工のののの MSIMSIMSIMSI ファイルのみファイルのみファイルのみファイルのみ))))チェックチェックチェックチェック::::オンオンオンオン

InstallShield Tips & Tricks

7/10

14. 前提条件エディタのメニューバーより、[ファイル]-[名前をつけて保存]を選び、前提条件を保存します。

デフォルトの保存先は以下の階層です。

C:\Program Files\InstallShield\2011\SetupPrerequisites

15. 前提条件を含める InstallScript 形式プロジェクトを開きます。 [アプリケーション データ]-[前提条件]ビュー

にて、作成した前提条件にチェックをつけます

16. ビルドを実行します。生成されたインストーラを実行すると、インストーラの起動時に InstallShield 前提条件と

して、MSI 形式インストーラが実行されます。

InstallShield Tips & Tricks

8/10

CCCC....マージモジュールをマージモジュールをマージモジュールをマージモジュールを含含含含むむむむ基本基本基本基本のののの MSI MSI MSI MSI 形式形式形式形式インストーラをインストーラをインストーラをインストーラを作成作成作成作成してしてしてして、、、、InstalScript InstalScript InstalScript InstalScript コードコードコードコード

よりよりよりより実行実行実行実行するするするする

InstallScript 形式インストーラの InstallShield 前提条件機能のサポートは、InstallShield 2010 からとなります。そ

れ以前のバージョンを使用している場合、作成した MSI 形式インストーラを前提条件としてではなく、InstallScript

コードより実行する必要があります。

1. 前述の方法 B の手順 1~8 を参考に、マージモジュールを含んだ MSI 形式インストーラを作成します。

方法 B の手順 8 を行う際、単一の Setup.exe が生成されるように、[インストール起動ツール(Setup.exe)を作成す

る]にチェックをつけます。

2. [動作とロジック]-[サポートファイル/ビルボード]ビューにて、 [言語非依存]を選択します。右のペインを右ク

リックして、[ファイルの挿入]を選び作成した Setup.exe を追加します

InstallShield Tips & Tricks

9/10

3. [動作とロジック]-[InstallScript]ビューにて、Setup.rul を選択します。上部のコンボボックスを[Before Move

Data]-[On FirstUIBefore]に切り替えます。スクリプトエディタにて、サポートファイルに追加した Setup.exe の

呼び出しを行うコードを追加します。

コードの記述例: ※灰色の行が追加された箇所です。

function OnFirstUIBefore()

::::

::::

NUMBER nReturn;

::::

::::

Dlg_ObjDialogs:

nResult = ShowObjWizardPages( nResult );

if (nResult = BACK) goto Dlg_SQLServer;

Dlg_SdStartCopy2:

szTitle = "";

szMsg = "";

//{{IS_SCRIPT_TAG(Dlg_SdStartCopy2)

nResult = SdStartCopy2( szTitle, szMsg );

//}}IS_SCRIPT_TAG(Dlg_SdStartCopy2)

if (nResult = BACK) goto Dlg_ObjDialogs;

// Added in 11.0 - Set appropriate StatusEx static text.

SetStatusExStaticText( SdLoadString( IDS_IFX_STATUSEX_STATICTEXT_FIRSTUI ) );

nReturn = LaunchAppAndWait( SUPPORTDIR^"setup.exe"," /s /v¥"/qb¥"",LAAW_OPTION_WAIT );

if( nReturn < 0 ) then

MessageBox( "子子子子インストーラのインストーラのインストーラのインストーラの呼呼呼呼びびびび出出出出しにしにしにしに失敗失敗失敗失敗しましたしましたしましたしました", WARNING );

endif;

return 0;

end;

InstallShield Tips & Tricks

10/10

4. 上部のコンボボックスを[AfterMove Data]-[OnEnd]に切り替えます。スクリプトエディタにて、MSIインストーラ

のアンインストールに対応したコードを追加します。

コードの記述例: ※灰色の行が追加された箇所です。

※製品 GUID は、MSI 形式インストーラのプロジェクトにて[インストール情報]-[一般情報]-[全般]-[製品コー

ド]にて確認できます

5. ビルドを実行します。 生成された InstallScript インストーラを実行すると、ダイアログ選択終了後

のタイミングで、MSI形式インストーラが実行されます。

function OnEnd()

NUMBER nReturn;

begin

if REMOVEALLMODE!=0 then

LaunchAppAndWait("C:¥¥WINDOWS¥¥system32¥¥MsiExec.exe" ,

"/X{ MSI インストーラのインストーラのインストーラのインストーラの製品製品製品製品 GUID } /qb",LAAW_OPTION_WAIT);

if( nReturn < 0 ) then

MessageBox( "子子子子インストーラのインストーラのインストーラのインストーラの呼呼呼呼びびびび出出出出しにしにしにしに失敗失敗失敗失敗しましたしましたしましたしました", WARNING );

endif;

endif;

end;