Wix 返回错误 "No CA or UI entry points found in module" 但 [CustomAction] 在 dll 中使用
Wix Returning the error "No CA or UI entry points found in module" but [CustomAction] is used in dll
首先,对于模糊的屏幕截图和未在代码中包含全名表示歉意。
我在尝试使用 Wix 框架的 dll 中的自定义操作时遇到问题。
我正在使用 Wix 3.10.2
我的解决方案下有一个名为 Install.CustomAction 的 C# 自定义操作项目。然后在主 Wix 项目中引用它。你可以在这里看到
我在主 Product.wxs 文件中将 CA dll 引用为二进制文件
<Binary Id="CustomActions.dll" SourceFile="$(var.<porjectname>.Install.CustomAction.TargetDir)<projectname>.CustomAction.CA.dll"/>
现在在一个片段中我有这样引用的动作
<CustomAction Id="CA_RestoreDB" BinaryKey="CustomActions.dll" DllEntry="RestoreMobileDB" Execute="immediate" Return="check" />
<InstallExecuteSequence>
<Custom Action="CA_RestoreDB" After="InstallFinalize"/>
</InstallExecuteSequence>
到目前为止,我希望一切正常。
在名为 CustomAction.cs 的实际 c# 文件中,我使用 [CustomAction] 属性进行了此设置
[CustomAction]
public ActionResult RestoreMobileDB(Session session)
{
//string installPath = session.GetTargetPath(TARGETDIR);
string x = session["INSTALLFOLDER"];
session.Log("Begin CustomAction1");
doSomeStuff(x, session);
return ActionResult.Success;
}
到目前为止,一切看起来都很好,并且正在按照我的期望运行。但是当我开始编译所有东西时,我得到了这个错误
Severity Code Description Project File Line Suppression State
Error The command ""C:\Program Files (x86)\WiX Toolset v3.10\bin\..\sdk\MakeSfxCA.exe" "C:\Work Files\Development\<product>\<solution>\<project>.Install.CustomAction\obj\x86\Release\<project>.Install.CustomAction.CA.dll" "C:\Program Files (x86)\WiX Toolset v3.10\bin\..\sdk\x86\SfxCA.dll" "C:\Work Files\Development\<product>\<solution>\<project>Install.CustomAction\obj\x86\Release\<project>.Install.CustomAction.dll" "C:\Program Files (x86)\WiX Toolset v3.10\SDK\Microsoft.Deployment.WindowsInstaller.dll;C:\Work Files\Development\<product>\<solution>\<project>.Install.CustomAction\CustomAction.config"" exited with code 1. <project>.Install.CustomAction
接着出现这个错误
No CA or UI entry points found in module
您知道是什么原因造成的吗?我已经指定了一个入口点并在我的 .wxs 文件中引用了 dll,但它似乎对我不起作用。
我认为应该是:
public static ActionResult ...
首先,对于模糊的屏幕截图和未在代码中包含全名表示歉意。
我在尝试使用 Wix 框架的 dll 中的自定义操作时遇到问题。
我正在使用 Wix 3.10.2
我的解决方案下有一个名为 Install.CustomAction 的 C# 自定义操作项目。然后在主 Wix 项目中引用它。你可以在这里看到
我在主 Product.wxs 文件中将 CA dll 引用为二进制文件
<Binary Id="CustomActions.dll" SourceFile="$(var.<porjectname>.Install.CustomAction.TargetDir)<projectname>.CustomAction.CA.dll"/>
现在在一个片段中我有这样引用的动作
<CustomAction Id="CA_RestoreDB" BinaryKey="CustomActions.dll" DllEntry="RestoreMobileDB" Execute="immediate" Return="check" />
<InstallExecuteSequence>
<Custom Action="CA_RestoreDB" After="InstallFinalize"/>
</InstallExecuteSequence>
到目前为止,我希望一切正常。
在名为 CustomAction.cs 的实际 c# 文件中,我使用 [CustomAction] 属性进行了此设置
[CustomAction]
public ActionResult RestoreMobileDB(Session session)
{
//string installPath = session.GetTargetPath(TARGETDIR);
string x = session["INSTALLFOLDER"];
session.Log("Begin CustomAction1");
doSomeStuff(x, session);
return ActionResult.Success;
}
到目前为止,一切看起来都很好,并且正在按照我的期望运行。但是当我开始编译所有东西时,我得到了这个错误
Severity Code Description Project File Line Suppression State
Error The command ""C:\Program Files (x86)\WiX Toolset v3.10\bin\..\sdk\MakeSfxCA.exe" "C:\Work Files\Development\<product>\<solution>\<project>.Install.CustomAction\obj\x86\Release\<project>.Install.CustomAction.CA.dll" "C:\Program Files (x86)\WiX Toolset v3.10\bin\..\sdk\x86\SfxCA.dll" "C:\Work Files\Development\<product>\<solution>\<project>Install.CustomAction\obj\x86\Release\<project>.Install.CustomAction.dll" "C:\Program Files (x86)\WiX Toolset v3.10\SDK\Microsoft.Deployment.WindowsInstaller.dll;C:\Work Files\Development\<product>\<solution>\<project>.Install.CustomAction\CustomAction.config"" exited with code 1. <project>.Install.CustomAction
接着出现这个错误
No CA or UI entry points found in module
您知道是什么原因造成的吗?我已经指定了一个入口点并在我的 .wxs 文件中引用了 dll,但它似乎对我不起作用。
我认为应该是:
public static ActionResult ...