1

簡単な C# カスタム アクションを作成しました。

[CustomAction]
public static ActionResult MySimpleAction(Session session)
{
    MessageBox.Show("It works!");
    return ActionResult.Success;
}

<Binary Id="myAction" 
        SourceFile="MyApp.CA.dll"/>

<CustomAction Id="myActionId" 
              BinaryKey="myAction" 
              DllEntry="MySimpleAction" 
              Execute="deferred" 
              Return="check" />

<InstallExecuteSequence>
      <Custom Action="myActionId" 
              After="InstallInitialize">CHECKBOXCOPYPROP=1</Custom>
</InstallExecuteSequence>

インストールを実行すると、エラー 2762 が発生しました。

私が走るとき

<InstallExecuteSequence>
    <Custom Action="myActionId" 
            Before="InstallFinalize">CHECKBOXCOPYPROP=1</Custom>
</InstallExecuteSequence>

エラーが発生しませんでした。InstallInitialize の後に実行できないのはなぜですか? どのように実行されますか?

4

2 に答える 2

1

InstallIntializeの後とInstallFinalizeの前の両方が機能するはずです。Orcaを使用して構築されたMSIを確認し、InstallExecuteSequenceを確認してください。列シーケンスで並べ替えます。正しくスケジュールされているように見えますか?ログファイルも役立ちます。

于 2012-09-20T13:07:20.343 に答える
1

あなたは書く必要があります:

<CustomAction Id="myActionId" BinaryKey="myAction" DllEntry="MySimpleAction" Execute="immediate" Return="check" />

それではExecute="deferred"動作しません。

これに加えて、CusomAction.config に次のように記述する必要があります。

<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0" />
        <supportedRuntime version="v2.0.50727"/>
    </startup>
</configuration>
于 2012-09-20T16:54:30.537 に答える