A. InstallScript プロジェクト InstallScript インストールは InstallScript エンジンによって制御され 決められた順序で一連のイベントが生成されます これらのイベントは インストールを実行するソフトウェアハンドラーをトリガーします たとえば インストールがロ

Similar documents
(Microsoft Word - FireWall\202\314\227\341\212O\220\335\222\350\202\360\215s\202\244.doc)

MSI Tip: システム検索による INSTALLDIRの設定

Microsoft Word - Writing Windows Installer's DLL.doc

Microsoft Word combine.doc

インストール後のアプリケーション実行

また 含 める.msi パッケージを 追 加 します スイートインストーラーの 基 本 的 な 作 成 方 法 Tips and Tricks( 以 下 の 記 事 をご 参 照 ください スイートインストーラーの 基

InstallShiled FAQ デバイスドライバーのインストール 注 ) このドキュメントは InstallShield 2011 Premier Edition を基に作成しています InstallShield 2011 以外のバージョンでは設定名などが異なる場合もあります 概要 Instal

InstallShield 実践トレーニング ~ InstallShield 2016 ~ Samp

InstallShield FAQ < 独自の InstallShield 前提条件を作成する > 注 ) このドキュメントは InstallShield 2014 Premier Edition を基に作成しています InstallShield 2014 以外のバージョンでは設定名などが異なる場合

Microsoft Word - Build3264Project.doc

DrugstarPrime アップデート手順書 DrugstarPrime アップデート手順書 DrugstarPrime のアップデート手順をご案内いたします 本書は DrugstarPrime2 DrugstarPrime に共通の手順書です 手順内の画面は Prime2 を使用しています [

intra-mart Accel Platform — IM-共通マスタ スマートフォン拡張プログラミングガイド   初版  

PrintBarrierV3L50(V ) アップデート手順書 第 1.01 版 株式会社富士通アドバンストエンジニアリング 平成 25 年 3 月 7 日 1

Python によるジオプロセシング スクリプト入門

目次 1 はじめに 利用条件 動作環境 アドインのインストール アドインの操作方法 アドインの実行 Excel CSV の出力 テンプレートの作成 編集 テンプレートのレイアウト変更 特記

Python によるジオプロセシング スクリプト入門

// このクラスの有効期間中の各呼び出しに使用される キャッシュされた Socket オブジェクト Socket socket = null; // 非同期処理が完了したことを通知するために信号を送るオブジェクト static ManualResetEvent clientdone = new Ma

Deep Freeze Enterprise メンテナンス時の自動ログオン ( 株 ) ネットワールド SI 技術本部作成

ADempiere (3.5)

インストールマニュアル

内容 1 はじめに インストールの手順 起動の手順 Enterprise Architect のプロジェクトファイルを開く 内容を参照する プロジェクトブラウザを利用する ダイアグラムを開く 便利な機能.

もくじ 2 はじめに... 3 概要... 4 動作環境... 4 利用制限モードについて... 4 本マニュアルの見かた... 4 HOME アプリマネージャの基本操作... 5 HOME アプリマネージャをインストールする... 6 HOME アプリマネージャを起動する... 8 HOME アプ

Microsoft Word - ModelAnalys操作マニュアル_

本文書は、SAP ERP(以下、SAP)の消費税機能の概要について説明したものです

24th Embarcadero Developer Camp

改版履歴 版数 改版日付 改版内容 /03/14 新規作成 2013/03まで製品サイトで公開していた WebSAM DeploymentManager Ver6.1 SQL Server 2012 製品版のデータベース構築手順書 ( 第 1 版 ) を本 書に統合しました 2

図 1 アドインに登録する メニューバーに [BAYONET] が追加されます 登録 : Excel 2007, 2010, 2013 の場合 1 Excel ブックを開きます Excel2007 の場合 左上の Office マークをクリックします 図 2 Office マーク (Excel 20

目 次 1. はじめに アルコールチェッカー管理ソフトのインストール アルコールチェッカー管理ソフトのアンインストール アルコールチェッカー管理ソフトの操作方法 ソフトの起動 NG 判定値の設定

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

一太郎2014 徹 ダウンロード版 インストールガイド

レベルアップ詳細情報 < 製品一覧 > 製品名 バージョン < 追加機能一覧 > 管理番号 内容 説明書参照章 カナ文字拡張対応 < 改善一覧 > 管理番号 内容 対象バージョン 説明書参照章 文字列のコピー ペースト改善 ~ 子画面の表示方式 ~ 履歴の詳細情報 ~ タブの ボタン ~ 接続時の管

CONTEC DIOプロバイダ ユーザーズガイド

プログラミング実習I

FileExplorer for ASP.NET Web Forms

インテル® Parallel Studio XE 2019 Composer Edition for Fortran Windows : インストール・ガイド

フローチャート自動生成ツール yflowgen の使い方 目次 1 はじめに 本ツールの機能 yflowgen.exe の使い方 yflowgen.exe の実行方法 制限事項 生成したファイル (gml ファイル形式 ) の開

Corporate Document

UIOUSBCOM.DLLコマンドリファレンス

Microsoft Word - TS-816.doc

intra-mart Accel Platform — 招待機能プログラミングガイド   初版  

正誤表(FPT1004)

InstallShield Tip: ダイアログボックスビットマップの変更

データベースのアップグレード手順

BOM for Windows Ver

項番 現象 原因 対応手順書など 4 代理店コードでのダウンロード時に以下のメッセージの画面が表示される サービス時間外のため 現在 このサービスはご利用になれません 当機能のサービス時間外です 以下の時間帯にダウンロードしてください 月曜日 ~ 金曜日 7:00~21:00 土曜日 7:00~17

SmartBrowser_document_build30_update.pptx

Microsoft Word - no15.docx

商標類 Microsoft は, 米国およびその他の国における米国 Microsoft Corp. の登録商標です Microsoft Office は, 米国 Microsoft Corp. の商品名称です Microsoft Excel は, 米国 Microsoft Corp. の商品名称です

クラスタ環境でのデータベースのアップグレード手順

試作ツールは MIT ライセンスによって提供いたします その他 内包された オープンソース ソフトウェアについてはそれぞれのライセンスに従ってご利用ください

インストール要領書

IsBOX-3100/3150 インストールガイド

インテル(R) Visual Fortran コンパイラ 10.0

本書は INpMac v2.20(intime 5.2 INplc 3 Windows7/8/8.1に対応 ) の内容を元に記載しています Microsoft Windows Visual Studio は 米国 Microsoft Corporation の米国及びその他の国における登録商標です

Android Layout SDK プログラミング マニュアル

電子化シートマニュアル(インストール編)_ver106

分析のステップ Step 1: Y( 目的変数 ) に対する値の順序を確認 Step 2: モデルのあてはめ を実行 適切なモデルの指定 Step 3: オプションを指定し オッズ比とその信頼区間を表示 以下 このステップに沿って JMP の操作をご説明します Step 1: Y( 目的変数 ) の

Microsoft PowerPoint - Borland C++ Compilerの使用方法(v1.1).ppt [互換モード]

MotionBoard Ver. 5.6 パッチ適用手順書

OmniTrust

親指シフトキーボード(FMV-KB611)、JISキーボード(FMV-KB621)、FMV-LIFEBOOK(親指シフトキーボードモデル)をお使いになる方へ

<4D F736F F F696E74202D20352D335F8D5C90AC CF909482CC90B690AC82C695D28F572E707074>

CashDrawer ライブラリ API 仕様書 2014/07/09 CashDrawer ライブラリ API 仕様書 Rev / 10

はじめに 商業登記電子認証ソフトは, 商業登記に基づく電子認証制度に係る会社 法人の代表者等の電子証明書を取得するために使用する専用ソフトウェアで, 法務省が提供するものです 商業登記電子認証ソフトを用いることにより, 電子証明書の発行申請に必要となるファイルの作成及び電子証明書の取得 ( ダウンロ

BricRobo V1.5 インストールマニュアル

Microsoft Word - プリンター登録_Windows XP Professional.doc

GHS混合物分類判定システムインストールマニュアル

らくらくメニューVer2.70E9<セットアップガイド>

939061j

ESET Remote Administrator V5.1 バージョンアップ手順

ESMPRO/JMSS Ver6.0

1. 新規プロジェクト作成の準備新規プロジェクトのためのフォルダを用意して そこにプロジェクトを作成します [ 新しいフォルダー ] をクリックして希望のフォルダに新しいフォルダを作成します この例では TrST_F401N_BlinkLD2 というフォルダを作成しました TrST_F401N_Bl

RTC_STM32F4 の説明 2013/10/20 STM32F4 内蔵 RTC の日付 時刻の設定および読み込みを行うプログラムです UART2( 非同期シリアル通信ポート 2) を使用して RTC の設定および読み込みを行います 無料の開発ツール Atollic TrueSTUDIO for

手順書

Mindjet MindManager Version 9 for Windows サービスパック 2 リリースノート : 2011 年 4 月 20 日

プログラミング基礎I(再)

プリンタドライバのインストール. Windows で使用する場合 Windows プリンタドライバのインストール方法は 接続方法や使用するプリンタドライバによって異なります また コンピュータの OS によってインストール方法が異なります お使いのコンピュータの OS に合わせて 以下の参照ページを

譲渡人複数証明データコンバータ操作説明書 平成 26 年 6 月

Enterprise Architect 12.1 機能ガイド

PowerPoint プレゼンテーション

Section1_入力用テンプレートの作成

Team Foundation Server 2018 を使用したバージョン管理 補足資料

1. パソコンに接続しているプロテクトキー (HASP) を外します 2.Microsoft Edge などのブラウザから のアドレスのホームページを起動します 3. 最新のプロテク

外周部だけ矩形配列

利用者

商標類 Microsoft は, 米国およびその他の国における米国 Microsoft Corp. の登録商標です Microsoft Office は, 米国 Microsoft Corp. の商品名称です Microsoft Excel は, 米国 Microsoft Corp. の商品名称です

親指シフトキーボード(FMV-KB611)、JISキーボード(FMV-KB621)、FMV-LIFEBOOK(親指シフトキーボードモデル)をお使いになる方へ

Transcription:

InstallScript サンプル 注 ) このドキュメントは InstallShield 2015 Premier Edition を基に作成しています InstallShield 2015 以外のバージョンでは設定名などが異なる場合もあります 概要 InstallShield では InstallShield 独自のプログラム言語 InstallScript を利用して 動作をカスタマイズすることができます InstallScript プロジェクトでは インストールプログラムはプロジェクトの InstallScript コードによって制御されます プロジェクトのスクリプトを変更して インストールやアンインストール時に様々なタスクを実行することができます また 基本の MSI プロジェクトでは インストールの制御は Windows Installer エンジンによって行われますが InstallScript で定義した関数をカスタムアクションとして呼び出すことができます この記事では InstallScript プロジェクト および 基本の MSI プロジェクト での基本的な InstallScript の使用方法と サンプルスクリプトを紹介します < 紹介するサンプル> システム要件を確認する (InstallScript プロジェクトのみ ) 特定のディレクトリーがユーザーのシステムに存在するか確認する (InstallScript プロジェクト ) ターゲットシステムからレジストリの情報を取得する (InstallScript プロジェクト ) インストール時にバッチファイルを実行する (InstallScript) テキストファイルの値を読み出す (InstallScript プロジェクト ) InstallScript からプロパティの値を取得 / 設定する (InstallScript カスタムアクションのみ ) カスタムアクションから強制的にエラーを返す (InstallScript カスタムアクション ) 1/13

A. InstallScript プロジェクト InstallScript インストールは InstallScript エンジンによって制御され 決められた順序で一連のイベントが生成されます これらのイベントは インストールを実行するソフトウェアハンドラーをトリガーします たとえば インストールがロードされた直後に Begin というイベントが生成されます このイベントは OnBegin というイベントハンドラーの実行をトリガーします ユーザーのマシンが製品のシステム要件と一致しているかどうかを判定する処理などを組み込むのに適しています イベントハンドラーは常に決められた順序で呼び出されます イベントハンドラーはインストレーションの種類 ( 通常インストール メンテナンスインストール 管理インストール またはパッチインストール ) に従って呼び出されます イベントハンドラーの詳細については 製品ヘルプをご参照ください InstallScript の編集は [ 動作とロジック ]-[InstallScript] ビューで行います [InstallScript] ビューの右ペインの上部にあるスクリプトツールバーを使って イベントハンドラー関数ブロックを張り付けることができます 編集された内容は インストールイベントに関連付けられているデフォルトのアクションを上書きするため ここでアクションの内容を変更することができます イベントカテゴリ ( 左のリストボックス ) でカテゴリを選択して イベント ( 右のリストボックス ) でイベントを選択します 例えば [Before Move Data]-[OnBegin] と選択すると OnBegin イベントが setup.rul ファイルに追加されま す 2/13

すべてのスクリプトは 以下の文で始まります ヘッダファイル ifx.h は すべての InstallScript プログラムで使用される関数を 定義しています 一般的なコードの記述方法は以下のとおりです function OnBegin() // ローカル変数 // コード たとえば インストールを続行する前にメッセージを表示する場合 OnBegin は次のように記述できます ビルドしてインストーラーを実行すると インストールの初めにメッセージボックスが表示されます 3/13

また ユーザー定義関数をイベントから呼び出すこともできます ユーザー定義関数を作成するには prototype で関数宣 言します //prototype 宣言 export prototype MyFunction(STRING); function OnBegin() //MyFunction の呼び出し MyFunction("MyFunction を呼び出しました "); // メッセージボックスを表示するユーザー定義関数を作成 function MyFunction(svMsg) MessageBox(svMsg,INFORMATION); 4/13

B. 基本の MSI プロジェクト (InstallScript カスタムアクション ) 基本の MSI プロジェクトでは カスタムアクションとして InstallScript 関数を呼び出して実行することができます すべての InstallScript カスタムアクションは スクリプトへのエントリポイントとして エクスポートされたユーザー定義関数が必要です InstallScript カスタムアクションを実行するには 以下の 2 つの手順が必要となります InstallScript コードでユーザー定義関数の作成 InstallScript カスタムアクションの作成と実行スケジュールの設定 InstallScript のコードの作成は [ 動作とロジック ]-[InstallScript] ビューで行います [ ファイル ] アイコンを右クリックして [ スクリプトファイルの新規作成 ] を選択すると Setup.rul ファイルが追加されます カスタムアクションで呼び出せる関数の引数は 1 つだけで 引数は.msi データベースへのハンドルでなければなりません 一般的なコードの記述方法は以下のとおりです export prototype MyFunction(HWND); function MyFunction(hMSI) // ローカル変数 // コード InstallScript MSI プロジェクトでもカスタムアクションが使用できますが その場合 MSI へのハンドルは hmsi の代わりに ISMSI_HANDLE を使用します たとえば メッセージを表示する場合 MyFunction 関数は次のように記述できます 5/13

次に MyFunction 関数を呼び出すカスタムアクションを作成します [ 動作とロジック ]-[ カスタムアクションとシーケン ス ] ビューで行います [ カスタムアクション ] アイコンを右クリックして [ 新しい InstallScript] を選択し カスタムアクション名 ( 例えば camyfunction ) を設定します 作成されたカスタムアクションで InstallScript で作成したユーザー定義関数名 (MyFunction) を指定し カスタムアクションを実行するタイミングを指定します 以下の画面では インストール UI シーケンス の LaunchConditions の後 にスケジュールしています 実行条件としては 初回インストール時だけ実行させるように not Installed を指定しています インストーラーを実行すると インストールの初めにメッセージボックスが表示されます 6/13

C. サンプルスクリプト ここではいくつかの処理を行うサンプルスクリプトを紹介いたします サンプルは InstallScript プロジェクトもしくは基本のMSIプロジェクト (InstallScript カスタムアクション ) 用のいずれかで作成しています 内部のコードは共通で使用できるものもありますので それぞれのプロジェクトタイプに合わせて修正してお使いください システム要件を確認する (InstallScript プロジェクトのみ ) InstallScript プロジェクトでは ターゲットシステムが製品のシステム要件を満たすかどうかを調べる関数および構造体が用意されています OnBeginイベントハンドラーは 1 回目のインストールとメンテナンスインストールのいずれの場合にも呼び出されるため 初回インストール時のみシステム要件を確認する場合は 次のように システム変数 MAINTENANCE を使用するコードを if 文の中に入れます function OnBegin( ) // Windows Vista 以降のクライアント OS 以外で実行された場合 インストールを中断 if (!MAINTENANCE) then if (!(SYSINFO.nWinMajor >=6 && SYSINFO.nOSProductType = VER_NT_WORKSTATION)) then MessageBox( " このプログラムには Windows Vista 以降のクライアント OS が必要です \n\n" + " セットアップを中止します ", SEVERE); abort; セットアップの初期設定中に インストールによって SYSINFO 構造体のメンバーが設定されます オペレーティングシステム オペレーティングシステムのメジャーおよびマイナーバージョン システムが 64 ビットかどうかなど様々な判定に利用できます 詳細については 製品ヘルプ SYSINFO をご参照ください 7/13

特定のディレクトリーがユーザーのシステムに存在するか確認する (InstallScript プロジェクト ) Is 関数の定数 PATH_EXISTS や FILE_EXISTS を使用することで ディレクトリーやファイルの存在有無を確認すること ができます 以下は 特定のディレクトリーが存在するかどうかを確認するサンプルです OnBegin() STRING szdirectorypath; BOOL bresult; if (!MAINTENANCE) then szdirectorypath = "C:\\testDirectory\\testSubdirectory"; bresult = FALSE; // 初期化 // 検索するフォルダー // フォルダパスが存在するか確認します bresult = Is( PATH_EXISTS, szdirectorypath ); // 結果にしたがって 適切なメッセージを表示します if ( bresult = TRUE ) then MessageBox( ディレクトリーが存在します, INFORMATION ); else MessageBox( ディレクトリーは存在しません, INFORMATION ); 8/13

ターゲットシステムからレジストリの情報を取得する (InstallScript プロジェクト ) RegDBGetKeyValueEx 関数を使用すると ターゲットシステムのレジストリ情報を取得することができます また RegDBSetKeyValueEx 関数ではレジストリに値をセットすることができます 以下は HKEY_LOCAL_MACHINE\SOFTWARE\MyCompany\TestApp の Test の値を取得し 新た に Test2 という値をセットするサンプルです OnBegin() STRING NUMBER NUMBER szkey, szname, svvalue; ntype, nsize; nresult; if (!MAINTENANCE) then //HKEY_LOCAL_MACHINE\SOFTWARE\MyCompany\TestApp の Test 取得のため // レジストリのパラメータを設定 szkey = "SOFTWARE\\MyCompany\\TestApp"; szname = "Test"; ntype = REGDB_STRING; nsize=-1; // レジストリ関数が利用するルートキーを設定 RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE); // 値の取得 if(regdbgetkeyvalueex ( szkey, szname, ntype, svvalue, nsize )< 0) then MessageBox ("RegDBGetKeyValueEx が失敗しました, SEVERE); else MessageBox ("Test の値は + svvalue + です, SEVERE); //HKEY_LOCAL_MACHINE\SOFTWARE\MyCompany\TestApp の Test に Test2 をセット RegDBSetKeyValueEx(szKey, szname, ntype,"test2",nsize); 9/13

インストール時にバッチファイルを実行する (InstallScript) InstallScript プロジェクトでバッチファイルを呼び出す場合 LaunchAppAndWait 関数などが利用できます 実行するバッチファイルがターゲットシステムにインストールの必要がなく インストール処理中のみ使用するファイルの場合 サポートファイルとしてインストーラーに含めます InstallScript からは SUPPORTDIR システム変数にてサポートファイルへのパスを取得することができます 以下の例は サポートファイルに含めたバッチファイルをインストール完了時に実行する方法です function OnEnd() STRING szprogram,szcmdline; NUMBER noptions,nresult; if (!MAINTENANCE) then // バッチファイル実行のパラメータを各種設定します szprogram = SUPPORTDIR^"sample.bat"; szcmdline = ""; noptions = LAAW_OPTION_WAIT; // LaunchAppAndWait 関数によって外部ファイルを実行 nresult = LaunchAppAndWait ( szprogram, szcmdline, noptions ); // 実行後に実行結果と外部ファイルの戻り値を戻り値表示 SprintfBox( INFORMATION," 実行結果 ", " ファイルの戻り値 = %d", LAAW_PARAMETERS.nLaunchResult); 上記サンプルは サポートファイルに Sample.bat というファイルを含めている例です 10/13

テキストファイルの値を読み出す (InstallScript プロジェクト ) テキストファイルの内容を読み出すために ListCreate 関数で文字列リストを作成して ListReadFromFile 関数によりフ ァイルを文字列リストへ読み込みます 以下は 1 行ずつリストから情報を取得して メッセージボックスから表示するサンプルです FileInsertLine 関数も使用して ファイルの最後に行も追加しています #define FILEPATH "C:\\test.txt" function OnBegin() STRING svstring; NUMBER nresult; LIST listid; // 文字列リストの作成 listid=listcreate(stringlist); // 出力結果をリストに読み込み if(listreadfromfile(listid, FILEPATH)<0) then MessageBox(FILEPATH + の読み込みに失敗しました,SEVERE); else // リストから最初の文字列を取得します nresult=listgetfirststring(listid,svstring); // ループ処理で取得された情報を一行ずつ表示 while(nresult!=end_of_list) // 取得情報の表示 SprintfBox(INFORMATION," 取得情報の表示 ","%s",svstring); // リストの次の文字列を取得します nresult=listgetnextstring(listid,svstring); endwhile; // メモリからリストを削除します ListDestroy(listID); // ファイルの 5 行目にデータを追加します FileInsertLine(FILEPATH,"5 行目の情報です ",4,AFTER); 11/13

InstallScript からプロパティの値を取得 / 設定する (InstallScript カスタムアクションのみ ) InstallScript コードの中では直接 Windows Installer のプロパティにアクセスすることはできません InstallScript でプ ロパティにアクセスするには MSI API の MsiGetProperty と MsiSetProperty を使用します MsiSetProperty はプロパティに値をセットする関数で MsiGetProperty はプロパティの値を取得する関数です 下記サ ンプルでは MsiSetProperty で TESTPROP プロパティに Test Value という値をセットしたあと セットされた値を MsiGetProperty で取り出し メッセージとして表示しています export prototype GetAndSetProperty(HWND); function GetAndSetProperty(hMSI) NUMBER nvsize, nreturnvalue; STRING svvalue; nvsize = MAX_PATH; // TESTPROP プロパティに値 "Test Value" をセット if(msisetproperty(hmsi, "TESTPROP", "Test Value") == ERROR_SUCCESS ) then //TESTPROP プロパティの値を取得 if(msigetproperty(hmsi, "TESTPROP", svvalue, nvsize) == ERROR_SUCCESS ) then // TESTPROP プロパティに "Test Value" がセットされているか確認 SprintfBox(INFORMATION, "TESTPROP Value", "TESTPROP = %s", svvalue); 12/13

カスタムアクションから強制的にエラーを返す (InstallScript カスタムアクション ) InstallScript の処理結果に応じて カスタムアクションから強制的にエラーを返し インストールを中断させたい場合があります InstallScript コード内で ERROR_INSTALL_FAILURE が返されると Windows Installer のカスタムアクションはカスタムアクションが失敗したと判定し インストールを中断することができます export prototype ForceFailure(HWND); function ForceFailure(hMSI) STRING szkey, svvalue; NUMBER nvtype, nvsize, nreturn; //App Paths キーから InstallShield がインストールされたフォルダーを取得 RegDBSetDefaultRoot (HKEY_LOCAL_MACHINE); szkey="software\\microsoft\\windows\\currentversion\\app Paths\\isdev.exe"; nreturn = RegDBGetKeyValueEx (szkey, "Path", nvtype, svvalue, nvsize); if nreturn = 0 then //InstallShield のインストール場所を表示 MessageBox ("InstallShield のインストールされている場所 " + svvalue, INFORMATION); return ERROR_SUCCESS; else // インストール場所が不明な場合 ERROR_INSTALL_FAILURE を返してインストールを中断 MessageBox("InstallShield をインストールした場所が不明です ", SEVERE); return ERROR_INSTALL_FAILURE; 以上 13/13