Пользовательское действие в C #, используемое через WiX, завершается с ошибкой 1154

Я использую WiX 3.5.1930 в Visual Studio 2010, ориентируясь на .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 переводит ее (на английском языке) в «Один из файлов библиотеки, необходимый для запуска этого приложения, поврежден».

Второе редактирование: запустил 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" />
17
задан quetzalcoatl 28 February 2014 в 19:34
поделиться

1 ответ

Попробуйте поместить свой вызов пользовательского действия в

<InstallExecuteSequence/>

в надежде получить лучшее сообщение об ошибке . Я получил разные сообщения об ошибках в зависимости от того, как было вызвано действие. Кроме того, попробуйте использовать fuslogvw.exe. Это также может дать вам довольно приятное сообщение об ошибке.

0
ответ дан 30 November 2019 в 10:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: