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。按列Sequence对其进行排序。它看起来被正确安排了吗?日志文件也会有所帮助。

于 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 回答