インストーラーが終了する前にSQLスクリプトを実行するac#カスタムアクションが最後に実行されているMSIインストーラーがあります。これを行うための最良の方法は、SQLスクリプトファイルをMSIファイルと同じディレクトリに貼り付け、その方法でスクリプトをロードすることです。
問題は、インストーラーが自分自身をWindows \ system32にコピーしてから実行するため、スクリプトファイルを実行するための元のディレクトリが見つからないことです。どんな助けやアイデアもいただければ幸いです!
インストーラーが終了する前にSQLスクリプトを実行するac#カスタムアクションが最後に実行されているMSIインストーラーがあります。これを行うための最良の方法は、SQLスクリプトファイルをMSIファイルと同じディレクトリに貼り付け、その方法でスクリプトをロードすることです。
問題は、インストーラーが自分自身をWindows \ system32にコピーしてから実行するため、スクリプトファイルを実行するための元のディレクトリが見つからないことです。どんな助けやアイデアもいただければ幸いです!
プロパティはあなたOriginalDatabase
を助けますか?
Windowsインストーラーは、OriginalDatabaseプロパティを、インストールの起動に使用されるインストールデータベースのパスに設定します。インストールがコマンドラインから起動される場合、値は、再キャッシュパッケージオプション(-vフラグ)がREINSTALLMODEプロパティに存在するかどうかによって異なります。
C#でマネージドカスタムアクションを作成している場合は、WindowsインストーラーXML(WiX)展開ツールファンデーション(DTF)を使用する必要があります。C#プロジェクトを作成し、SQLファイルをプロジェクトコンテンツとして追加すると、ライド用にパッケージ化され、実行時に現在のディレクトリで使用できるようになります。
ところで、MSSQLを使用している(または使用していない)と仮定すると、WiXにはすでにSQLスクリプトの実行処理があります。