2

なんらかの理由で、コマンド ラインで指定された引数を使用して構成ファイルを更新する必要があります。ファイルが更新されていないため、msiexec によって開始される小さなユーティリティ アプリを c# で作成しました。目的は、このアプリにコマンドライン パラメータを取得して、インストール中に構成ファイルを開いて更新できるようにすることです。

私のアプリは正常に実行されましたが、親プロセス (msiexec) のコマンド ライン パラメータを読み込もうとC:\windows\msiexec /Vすると、msiexec コマンド ラインで指定したものとは異なるものが得られます (使用していません/V) 。

何が問題になる可能性があるかについてのアイデアはありますか? これを処理するより良い方法があれば、提案してください。

ありがとう。

更新:
混乱して申し訳ありません。私は WiX インストーラーを使用していました。WiX で生成された .msi をコマンド ラインで次のように起動します。

C:\> msiexec /I foo.msi ARG1="v1" ARG2="v2" 

ARG1ARG2Wix インストーラー スクリプトで定義されます。

私が見ているのは、msiexec によって開始される小さなアプリケーションによって、コマンド ライン params にアクセスする方法です (アプリは Wix インストーラー スクリプトでカスタム アクションとして指定されます) ARG1="v1"ARG2="V"

理想的には、私が使用するとき(xmlFile同様に試してみました) 、xmlConfigWiXインストーラースクリプトは構成ファイルを.v1v2v1v2

を使用するxmlFileと、次のエラーが表示されます。

ExecXmlFile: エラー 0x8007006e: XML ファイルの読み込みに失敗しました: エラー 25531。 . XML ファイルを開くことができませんでした。システム エラー: -2147024786 –</p>

意味のある情報は得られません。msiexec 引数/l*vを使用してログを生成しました。


ログの抜粋:

実際xmlFileには私の要件を実行する必要がありますが、使用中に次のエラーが発生します。これに関するヘルプは大歓迎です。

MSI (s) (E4:00) [18:11:32:110]: Executing op: ActionStart(Name=ExecXmlFile,,) Action 18:11:32: ExecXmlFile.
MSI (s) (E4:00) [18:11:32:111]: Executing op: CustomActionSchedule(Action=ExecXmlFile,ActionType=3073,Source=BinaryData,Target=ExecXmlFile,CustomActionData=1030//cloudRecognition/connectiontype130//cloudRecognition/connectionaddress192.168.128.59;192.168.128.261030//cloudRecognition/connectionport50001;50001)
MSI (s) (E4:DC) [18:11:32:113]: Invoking remote custom action. DLL: C:\Windows\Installer\MSIA419.tmp, Entrypoint: ExecXmlFile
MSI (s) (E4:EC) [18:11:32:113]: Generating random cookie.
MSI (s) (E4:EC) [18:11:32:115]: Created Custom Action Server with PID 10104 (0x2778).
MSI (s) (E4:68) [18:11:32:402]: Running as a service.
MSI (s) (E4:68) [18:11:32:403]: Hello, I'm your 32bit Elevated custom action server.
ExecXmlFile:  Error 0x8007006e: failed to load XML file:
Error 25531. Failed to open XML file , system error: -2147024786
MSI (s) (E4!54) [18:11:36:714]: Product:  -- Error 25531. Failed to open XML file , system error: -2147024786

CustomActionExecXmlFileが実際のエラー コード 1603 を返しました (サンドボックス内で変換が行われた場合、これは 100% 正確ではない可能性があることに注意してください)。

4

2 に答える 2

1

引数をMSIプロパティとして渡していますか?はいの場合は、MSIデータベースから読み取ることができます。これをチェックして:

http://www.alteridem.net/2008/05/20/read-properties-from-an-msi-file/

環境固有のアプリケーションプロパティを構成ファイルに設定していると思いますか?もしそうなら、なぜあなたは設定ファイルで定義されたすべてのプロパティを持っていて、アプリケーションを(環境をチェックすることによって)正しいプロパティを読むのに十分賢くしないのですか?私はそれをします。

上記のコメントは、ご提供いただいた限られた情報に基づいています。あなたはそうするあなた自身の理由があるでしょう:)

于 2012-11-08T19:16:08.627 に答える
1

インストール プロセスに CustomAction を追加する必要があるように思えます。要求に応じて、両方が必要な場合もあれば、1 つだけが必要な場合もあります。

  1. 構成ファイルを更新するには、 XmlFile CustomActionを使用して、任意の XML ファイルを変更できます。
  2. Quiet Execution CustomActionを起動するには

これにより、インストール中に構成ファイルの値を変更できると思います。CustomActions とそのタイプの紹介は、ここにあります。タイプ 2 の CustomAction を見てください。

 
回答セクションで次の質問を編集します。

インストール プロセス中の CA の起動スケジュールはいつですか?
インストールのログファイルはありますか?

 
再編集

コードまたはインストール プロセスに関する詳細情報がなければ、これ以上のことはできません。

役立つ情報は次のとおりです。

  1. インストール シーケンスのどこで CA が起動されますか?
  2. ファイルの値を変更するために使用している WiX 要素。
  3. 動作を分離するために、問題のある部分だけを実行するインストーラーを作成しようとしましたか。
于 2012-11-09T12:16:56.153 に答える