【发布时间】:2010-08-24 19:38:08
【问题描述】:
我在 Visual Studio 2010 中使用 WiX 3.5.1930,目标是 .NET Framework 3.5。 (就其自定义操作模板而言,后来每周构建的 WiX 似乎非常糟糕,至少目前如此。1930 是最近的构建,它似乎使可构建的 C# CA 具有工作参考。)
我有两个用 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 吗?
-
如果我使用的是部署工具基金会(DTF - 为未来的搜索者明确说明 - 在我查找之前我不知道它是什么)我不知道我是。正如我建议的那样,我正在使用自定义操作支持来让我参与构建的操作。我相信这是在下面使用 DTF,但据我所知,这并没有真正直接暴露出来。
标签: c# wix wix3.5 custom-action votive