Я использую WiX 3.5.1930 в Visual Studio 2010, ориентирован на .NET Framework 3.5.(Более поздние еженедельные сборки WiX, похоже, сильно повреждены по сравнению с их шаблоном настраиваемых действий, по крайней мере, на данный момент. 1930 - это самая последняя сборка, которая, кажется, создает C # CA с рабочими ссылками.)
Iесть две сборки пользовательских действий, написанные на 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 переводит ее (на английском языке) в "Один из файлов библиотеки, необходимый для запуска этого приложения, поврежден".
Второе редактирование: run peverifyпротив DLL (вытащил копию из \ 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" />