0

私は何を間違っていますか??

あなたの答えが、WiX に何かをインストールする組み込みサービスを使用する必要があるというものである場合は、わざわざ答えないでください。私にとってはうまく機能せず、HEATed .wxs ファイルに XSLT 変換を適用したくありません。

私のログによると、両方のカスタム アクションを実行していますが、InstallAndStartServices は、「INSTALLFOLDER」が session.CustomActionData 辞書にないことを示しています。

<Binary Id="ServiceInstaller" SourceFile="DeploymentItems\ServiceInstaller.CA.dll" />

<CustomAction Id="SetInstallFolderForCA" Property="InstallAndStartServices" Value="INSTALLFOLDER=[INSTALLFOLDER]" Execute="immediate" Return="check" />
<CustomAction Id="InstallAndStartServices" BinaryKey="ServiceInstaller" DllEntry="InstallAndStartServices" Execute="immediate" Return="check" />

<InstallExecuteSequence>
  <Custom Action="SetInstallFolderForCA" After="InstallFiles">NOT Installed</Custom>
  <Custom Action="InstallAndStartServices" After="SetInstallFolderForCA"/>
</InstallExecuteSequence>

MSI (s) (78:DC) [15:31:47:745]: プロパティの変更: InstallAndStartServices プロパティを追加します。その値は「INSTALLFOLDER=C:\Program Files\My Product\」です。

MSI (s) (78:DC) [15:31:47:745]: アクションを実行中: InstallAndStartServices

MSI (s) (78:DC) [15:31:47:745]: 注: 1: 2205 2: 3: ActionText

アクション開始 15:31:47: InstallAndStartServices.

InstallServices の開始

カスタム アクションによって例外がスローされました: System.Reflection.TargetInvocationException: 呼び出しのターゲットによって例外がスローされました。---> System.Collections.Generic.KeyNotFoundException: 指定されたキーがディクショナリに存在しませんでした。

System.Collections.Generic.Dictionary`2.get_Item (TKey キー) で

Microsoft.Deployment.WindowsInstaller.CustomActionData.get_Item (文字列キー) で

string installFolder = session.CustomActionData["INSTALLFOLDER"];
4

1 に答える 1

3

見る:

Deployment Tools Foundation (DTF) 管理のカスタム アクション

注: 簡潔にするために、このブログ投稿は、読者が Windows インストーラーのアーキテクチャと哲学について十分に理解していることを前提としています。MSI の宣言型およびトランザクション型の設計目標や、さまざまなカスタム アクション タイプの長所と短所の詳細については、完全には説明しません。この知識がない場合は、Windows インストーラー パッケージのカスタム アクションを作成する前に、知識を得ることを強くお勧めします。

Windows インストーラーでのカスタム アクションのインストール フェーズとスクリプト内実行オプション

概要: InstallShield Professional - Windows Installer Edition でカスタム アクションを作成する場合、いくつかのスクリプト内実行オプションから選択できます。

•即時実行

•据え置き執行

•ロールバックの実行

•コミット実行

•システムでの遅延実行

環境

この記事では、これらのオプションの意味と、インストール実行時にカスタム アクションが実行されるフェーズにどのように影響するかについて説明します。また、「スクリプト レコードを書き込めません。トランザクションが開始されていません」などのエラー メッセージを回避するために、ユーザー インターフェイスまたは実行シーケンスの正しい場所にカスタム アクションを挿入するのにも役立ちます。

于 2013-02-13T16:44:18.550 に答える