我在Visual Studio 2010中使用了WiX 3.5.1930,目标是.NET Framework 3.5。 (后来的每周版本的WiX似乎在他们的自定义动作模板方面已经非常糟糕,至少现在是这样。1930是最近的版本,似乎使可建立的C#CA带有工作参考。)通过WiX使用的C#中的自定义操作失败,错误1154
我有两个用C#编写的自定义操作程序集。其中一个工作正常。其他失败,出现以下错误:
CustomActionnNameHere returned actual error code 1154 (note this may not be 100% accurate if translation happened inside sandbox)
我比较了的.csproj文件和.wixproj文件,并尽我可以告诉差异是适当的(例如包含的.cs文件列表。)。我已将非工作的.wxs更改为调用正在工作的自定义操作,而不是非工作的自定义操作,并且它的工作方式与后者相同。
还有什么我可以看看这个工作?
编辑:刚刚完成1154指的是一个无效的DLL - net helpmsg将其翻译成英语中的“运行此应用程序所需的一个库文件已损坏”。
第二次编辑:针对dll运行peverify(在安装程序运行时从\ windows \ installer中抓取了一份副本),并且表示在dll中一切正常。该DLL只有“返回成功”的自定义操作方法,所以它没有太多的验证,但它确实确认DLL没有损坏。
三编辑:在破碎的自定义操作的代码如下:
using Microsoft.Deployment.WindowsInstaller;
namespace Framework.Installer.Database {
public class CustomActions {
[CustomAction]
public static ActionResult RunMigration(Session session) {
return ActionResult.Success;
}
}
}
不多了。是.wxs的相关部分如下:
<InstallExecuteSequence>
<Custom Action="DotNetMigratorCustomActionPreviousUp" After="SetMigrationPropertiesPreviousUp"><![CDATA[(&Database = 3)]]></Custom>
</InstallExecuteSequence>
<Binary Id="DotNetMigratorCustomActionDll"
SourceFile="$(var.Framework.Installer.Database.CustomActions.TargetDir)\SoftwareAnswers.Framework.Installer.Database.CustomActions.dll" />
<CustomAction Id="DotNetMigratorCustomActionPreviousUp"
Return="check"
BinaryKey="DotNetMigratorCustomActionDll"
DllEntry="RunMigration"
Execute="deferred" />
你是如何做这个自定义动作的?你在使用DTF吗? – 2010-08-24 23:53:02
如果我使用部署工具基础(DTF - 为未来的搜索者拼写 - 我不知道它是什么,直到我刚刚查找它),我不知道我是。正如我所建议的,我正在使用自定义操作支持来让我参与到构建的操作中。我相信这是在下面使用DTF,但这并没有真正直接暴露出我所能说的最好的。 – 2010-08-25 11:49:37