1

この wix マージ モジュール プロジェクトを作成し、dll カスタム アクションを追加しました。

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Module Id="MergeModule1" Language="1033" Version="1.0.0.0">
    <Package Id="cffa568e-1bf0-4eb3-bee3-eb5801a0bbd0" Manufacturer="Microsoft" InstallerVersion="200" />

    <Binary Id="myCustomActionsDLL" SourceFile="CustomAction1.CA.dll" />

    <CustomAction
    Id="CA_myCustomAction"
    BinaryKey="myCustomActionsDLL"
    DllEntry="CustomAction1"
    Execute="deferred"
    Return="asyncWait" />

    <InstallExecuteSequence>
      <Custom Action="CA_myCustomAction" Before="InstallFinalize" />
    </InstallExecuteSequence>

  </Module>
</Wix>

InstallShield Limited Edition セットアップ プロジェクトでRedistributables、MergeModule1.msm ファイルをクリックして参照し、追加します。

作成した MSI を実行すると、正常にインストールされますが、ファイルが表示されないため、カスタム アクションが実行されていないようですc:\test.txt

[CustomAction]
        public static ActionResult CustomAction1(Session session)
        {
            File.WriteAllText(@"c:\test.txt", session.GetTargetPath("") + "-----" + session.GetSourcePath(""));

            return ActionResult.Failure;
        }

Custom ActionORCA で作成された MSI ファイルを開くと、テーブルに があることがわかりInstallExecuteSequenceます。

実行されない理由は何ですか?

4

1 に答える 1

1

トラブルシューティングは、詳細なログを取得し、それを読んでエラーを確認することから始めます。

msiexec /I foo.msi /l*v install.log

Impersonate="no" 属性を追加し、Return 属性を "check" に変更すると、より良い結果が得られると思います。

私は常に InstallShield Limited Edition で WiX マージ モジュールを使用しています。以下を読むことをお勧めします。

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

無料ツールを使用したインストール コラボレーション ワークフロー

于 2013-07-31T15:06:32.583 に答える