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

Similar documents
Microsoft Word - Writing Windows Installer's DLL.doc

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

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

Microsoft Word - Build3264Project.doc

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

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

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

Microsoft Word combine.doc

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

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

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

SolarWinds Event Log Forwarder for Windows v

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

農業・農村基盤図の大字小字コードXML作成 説明書

24th Embarcadero Developer Camp

Install / Protect / Monetize InstallShield 全機能 データシート プロフェッショナルなインストールの作成 PREMIER PROFESSIONAL EXPRESS MSIX パッケージ サポート フレームワークをサポート Windows Installer(

設定ファイル R 起動時に読み込まれ, R における種々の設定を項目別にファイルに記述してあります R の主な設定ファイルは Rconsole, Rdevga, Renviron, Rprofile の 4 つです いずれもテキストファイルですが, 改行コードが Windows のものと異なる場合が

Maple 12 Windows版シングルユーザ/ネットワークライセンス

Chromeleon 6 for Chromeleon 6.8 SR15 Build: --- 新しいシーケンスの作成に使用できるワークリストファイル (.wle) Doc. Nr: CM6_68150_0020 Doc. Ver.: Doc. Type: Guide

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

XMLとXSLT

出力可能なバーコードの種類 出力可能なバーコードの種類各バーコードはそれぞれのバーコードの仕様に準拠します バーコードの種類 PDF417 MICROPDF417 対応バーコードの名称 PDF417 マイクロ PDF417 操作例 PDF417 商品コードの内容を PDF417 にする 作成された

WebOTXマニュアル

ユーティリティ 管理番号 内容 対象バージョン 157 管理情報バッチ登録コマンド (utliupdt) のメッセージ出力に対し リダイレクトまたはパイプを使用すると メッセージが途中までしか出 力されないことがある 267 転送集計コマンド (utllogcnt) でファイル ID とホスト名の組

============================================================

GettingStartedTK2

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

WES7/WE8SシンクライアントVMwareHorizonClientアップデート手順書

NSR-500 Create DVD Installer Procedures

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

電話機のファイル形式

Oracle Business Intelligence Standard Edition One のインストール

C1Live

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

WES7シンクライアントIE11アップデート手順書

HDC-EDI Manager Ver レベルアップ詳細情報 < 製品一覧 > 製品名バージョン HDC-EDI Manager < 対応 JavaVM> Java 2 Software Development Kit, Standard Edition 1.4 Java 2

WebOTXマニュアル

マニュアル訂正連絡票

CoIDE 用 F4D_VCP の説明 V /07/05 USB の VCP( 仮想 COM ポート ) による非同期シリアル通信を行うプログラムです Free の開発ツール CoIDE で作成した STM32F4 Discovery 用のプロジェクトです プログラムの開始番地は 0x

Consuming a simple Web Service

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

SQL Server Integration Services 連携機能編

Microsoft Word - RefWorksコース( _.doc

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

Symantec AntiVirus の設定

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

SAP Crystal Reports (Visual Studio 2010 バージョン) インストール ガイド

PowerPoint Presentation

1. USB の VCP( 仮想 COM ポート ) について USB の VCP( 仮想 COM ポート ) は USB を非同期シリアル通信として使用するための USB のドライバです PC には VCP ドライバをインストールする必要があります USB の VCP( 仮想 COM ポート )

はじめに 本ドキュメントでは Salesforce 標準機能である 変更セット を使用して Visualforce ページ Apex クラスを Sandbox から本番環境に移行する手順を説明します 但し前提条件として Sandbox 本番環境共に SkyVisualEditor がインストールされ

ESMPRO/JMSS Ver6.0

PowerPoint プレゼンテーション

SimLabプラグインは各機能を15回分評価版として試用できます

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

ユーザ デバイス プロファイルの ファイル形式

NEC Express5800 シリーズ COBOL Media V1 セットアップカード SL438730B01-2

1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String

SimLab Plugins for SketchUp 評価版インストールおよびアクティベート方法 注意事項 評価版をお使い頂くには 評価用ライセンスでのアクティベートが必要です 評価用ライセンスファイルの取得を行い 手動でアクティベートする必要があります 各 SimLab プラグインは 評価用とし

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

スクールCOBOL2002

任意の間隔での FTP 画像送信イベントの設定方法 はじめに 本ドキュメントでは AXIS ネットワークカメラ / ビデオエンコーダにおいて任意の間隔で画像を FTP サー バーへ送信するイベントの設定手順を説明します 設定手順手順 1:AXIS ネットワークカメラ / ビデオエンコーダの設定ページ

現象 2 仮想マシン起動時に イベントログ ( システムログ ) に次のエラーイベントが記録される イベントログ内容種類 : エラーソース :storvsp イベント ID:5 Cannot load storage device in ' 任意の仮想マシン名 ' because the versi

CLUSTERPRO MC RootDiskMonitor 1.0 for Windows インストールガイド 2013(Mar) NEC Corporation はじめに 製品導入の事前準備 本製品のインストール 本製品の初期設定 本製品のアンインストール

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

国土数値情報 XML シェープ変換ツール 操作説明書 平成 23 年 7 月 国土交通省国土政策局

パソコン決裁7 サービスリリース1 リリースノート

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

InfoTrace LogImportTools説明書

ESMPRO/JMSS Ver6.0

PowerPoint プレゼンテーション

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

スライド 1

WinAPIOverride32 入門

<4D F736F F D208D C8FEE95F18DEC90AC A B D836A B2E646F63>

各種パスワードについて マイナンバー管理票では 3 種のパスワードを使用します (1) 読み取りパスワード Excel 機能の読み取りパスワードです 任意に設定可能です (2) 管理者パスワード マイナンバー管理表 の管理者のパスワードです 管理者パスワード はパスワードの流出を防ぐ目的で この操作

NFC ucode タグのメモリフォーマット規定

UID S307-NDEF

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

InstallShield 2009 Release Notes (Japanese)

Transcription:

MSI Tip: カスタムアクションによるログファイルへの出力 この文書は Acresso Software の次の文書を元に記載しています http://www.acresso.com/webdocuments/pdf/msi_writing_to_the_log_file.pdf Tip: MSI Tip: Writing to the Log File from a Custom Action 検証したバージョン : InstallShield 2009 Premier Edition 要約 Windows Vista 上で実行される MSI インストーラの要件として カスタムアクションが成功したか失敗かどうかを MSI Log ファイルに出力する要件が新しく追加されました 通常の設定で Windows Installer は自動的にカスタムアクションの開始と終了をログに出力しますが この記事ではより詳細な情報をログファイルに出力する場合の方法について紹介します MSI ログファイルの基本 MSI ログファイルは 特定のシステム上で実行されるインストールの多くの情報を提供するテキストファイルです MSI ログファイルには以下の情報が含まれます プロパティの最終的な値 各アクションの開始情報 情報 警告 エラーのメッセージ MSI ログファイルの作成には 以下のような多数の方法があります 1. msiexec.exe のコマンドラインパラメータに以下のように /L スイッチを使用します msiexec /i product.msi /L*v everything.log /L スイッチの後に指定されたパラメータ "*v" は Windows Installer により実行されるすべてのアクションの詳細ログとして出力することを表しています MSI ヘルプライブラリにはログに含める情報を制限するための他のスイッチに関する情報が記載されています 1/7

Setup.exe ランチャファイルを使用する場合 "MSI コマンドライン引数 " に以下のような値を指定する ことで msiexec.exe に /L スイッチを渡すことが可能です /L*v "%TEMP%\everything.log" この際 log ファイルのパスに MSI プロパティを使用できないことに注意してください MSI プロパティはインストールが初期化されるまで有効になりません ( 上記のコマンドラインは環境変数 %TEMP% を使用しています ) 2. Windows Vista 上の MSI 4.0 では MsiLogging プロパティに任意のログスイッチを指定することが可能です InstallShield 2008 以降では [ 製品のプロパティ ] ビューの [MSI ログの作成 ] 設定を使用することで行なうことも可能です ログファイルの保存先階層は MsiLogFileLocation プロパティに保存されます ( このプロパティは読むことはできますが 修正することはできません ) InstallShield の環境でこのスイッチを使用すると "Windows Installer のログを表示 " チェックボックスが SetupCompleteSuccess ダイアログに表示されるようになります MSI のヘルプライブラリには すべての MSI インストーラに対してテンポラリフォルダにランダムな名称のログファイルを作成させるロギングポリシーの設定方法等の情報が記載されています InstallShieldの [ ツール ] メニューから使用できる "MSI log File Analyzer" は MSI ログファイルの作成や ログファイルに基づいた様々なカラーコード HTML レポートを作成することができます デフォルトで MSI ログファイルにはそれぞれの標準アクションおよびカスタムアクションの戻り値が記録されます 以下のセクションは より詳細な情報をログファイルに記録する方法について記載します 上記の方法は /L スイッチを指定または MsiLogging プロパティを指定して ログファイルの作成を指定しない限りは MSI ログの作成を行ないませんし ロギングも開始されないことに注意してください 2/7

InstallScript カスタムアクションの場合 InstallScript カスタムアクションでは MSI ログファイルに文字列を出力するために SprintfMsiLog 関数を使用します 例えば 以下の InstallScript コードはプロトタイプ宣言をして LoggingTestInstallScriptと呼ばれる InstallScript のカスタムアクションを定義しています LoggingTestInstallScript. #include "ifx.h" // standard custom action prototype export prototype LoggingTestInstallScript(HWND); // custom action definition function LoggingTestInstallScript(hInstall) begin SprintfMsiLog("Calling LoggingTestInstallScript..."); // return success to MSI return ERROR_SUCCESS; end; この関数を呼び出すために 作成されたカスタムアクションはシーケンス内にスケジューリングされる必要があります この例では カスタムアクションビューを表示して LoggingTestInstallScript 関数を呼び出す callloggingtest と呼ばれる即時実行のカスタムアクションを作成し LaunchConditions の後に起動するようにスケジューリングします 3/7

パッケージのビルドの後 /L*v スイッチを使用してインストーラを実行すると ログファイルに以下のような行を確認できます InstallShield 25:00:00: Invoking script function LoggingTestInstallScript 1: Calling LoggingTestInstallScript... InstallShield 25:00:00: CallScriptFunctionFromMsiCA() ends Action ended 25:00:00: callloggingtest. Return value 1. SprintfMsiLog 関数は Sprintf や SprintfBox 機能と似ています 文字列や数値変数の値を結合したいとき メッセージ文字列でプレースホルダ ( %s か %d フィールド 書式指定子と呼ばれる) を入れることができます VBScript カスタムアクションの場合 VBScript アクション ( 後述のセクションで説明される MSI DLL アクションも同様に ) で ログを追加する場合は 一般的にメッセージ情報を含むレコードを作成し 作成したレコードを実行中のインストーラに送信する方法を使用します VBScript では メッセージのレコードを作成するのに Installer.CreateRecord メソッドを使用し 実行中のインストールにレコードを送るのに Session.Message メソッドを使用します レコードはプレースホルダとなる文字列 [1] [2] 等を含む [0] 番目のテンプレートフィールドから開始します これらのプレースホルダは 1 番目のレコード 2 番目のレコード等の値の置き換えが行なわれます ログを記録する VBScript アクションを実際に確認するために 以下のコードを記述した callloggingtestvbs と呼ばれる即時実行の VBScript カスタムアクションを作成して LaunchConditions の後にスケジューリングしてください ( この例では スクリプトが短いので直接カスタムアクションにコードを保存しています 一般的には外部の.vbs ファイルを使用することをおすすめします そうした場合 関数の戻り値を定義でき カスタムアクションから任意にインストーラを終了させることが可能です ) Const msimessagetypeinfo = &H04000000 ' create the message record Set msgrec = Installer.CreateRecord(1) ' field 0 is the template msgrec.stringdata(0) = "Log: [1]" ' field 1, to be placed in [1] placeholder msgrec.stringdata(1) = "Calling LoggingTestVBS..." ' send message to running installer Session.Message msimessagetypeinfo, msgrec 4/7

カスタムアクションは 以下の図のようになります プロジェクトをビルドしてログファイルを作成すると 以下のような行がログに出力されます Action 25:00:00: callloggingtestvbs. Action start 25:00:00: callloggingtestvbs. [... 省略...] Log: Calling LoggingTestVBS... Action ended 25:00:00: callloggingtestvbs. Return value 0. MSI DLL カスタムアクションの場合 C や C++ で記述された MSI DLL カスタムアクションは メッセージのレコードを作成する際に MsiCreateRecord 関数を使用する点 実行中のインストーラにレコードを渡す際にために MsiProcessMessage 関数を使用する点を除けば VBScript コードでログファイルに記録するプロセスに似ています 例えば Visual Studio で C やC++ DLL のプロジェクトを作成した場合の C++ コードは以下のようになります #pragma comment(lib, "msi.lib") #include <Windows.h> #include <msi.h> #include <msiquery.h> // standard MSI DLL custom action signature UINT stdcall LoggingTestCpp(MSIHANDLE hinstall) { PMSIHANDLE hrecord = MsiCreateRecord(1); // field 0 is the template MsiRecordSetString(hRecord, 0, "Log: [1]"); // field 1, to be placed in [1] placeholder MsiRecordSetString(hRecord, 1, "Calling LoggingTestCpp..."); // send message to running installer MsiProcessMessage(hInstall, INSTALLMESSAGE_INFO, hrecord); return ERROR_SUCCESS; } 5/7

関数名が DLL から適切にエクスポートされるように 以下の.def ファイルを作成します LIBRARY "LoggingTestCpp" ; DLL name EXPORTS ; exported function names LoggingTestCpp Visual Studio で DLL プロジェクトは 以下のようになります DLL のビルド後 InstallShield で例えば callloggingtestcpp という名前のMSI DLLのカスタムアクションを作成し 再び LaunchConditions の後に即時実行としてスケジューリングします 6/7

プロジェクトを再ビルドして ログオプションのスイッチをつけて実行すると ログファイルには以下のような行が出力されます After rebuilding the project and running the MSI with the logging, lines similar to the following should appear in the log file. Action 25:00:00: callloggingtestcpp. Action start 25:00:00: callloggingtestcpp. [... 省略...] Log: Calling LoggingTestCpp... Action ended 25:00:00: callloggingtestcpp. Return value 1. 詳しい情報は MSI help library の "Windows Installer Logging" トピックを参照してください 7/7