Невозможно запустить пользовательское действие Wix в MSI - PullRequest
7 голосов
/ 07 апреля 2010

Я пытаюсь создать пользовательское действие для моей установки Wix, но оно просто не работает, и я не знаю, почему.

Вот бит в соответствующем файле Wix:

<Binary Id="INSTALLERHELPER" SourceFile=".\Lib\InstallerHelper.dll" />
<CustomAction Id="HelperAction" BinaryKey="INSTALLERHELPER" DllEntry="CustomAction1" Execute="immediate" />

Вот полный файл класса для моего пользовательского действия:

using Microsoft.Deployment.WindowsInstaller;

namespace InstallerHelper
{
  public class CustomActions
  {
    [CustomAction]
    public static ActionResult CustomAction1(Session session)
    {
      session.Log("Begin CustomAction1");

      return ActionResult.Success;
    }
  }
}

Действие запускается нажатием кнопки в пользовательском интерфейсе (на данный момент):

  <Control Id="Next" Type="PushButton" X="248" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)" >
      <Publish Event="DoAction" Value="HelperAction">1</Publish>
  </Control>

Когда я запускаю MSI, я получаю эту ошибку в журнале:

MSI (c) (08:5C) [10:08:36:978]: Connected to service for CA interface.
MSI (c) (08:4C) [10:08:37:030]: Note: 1: 1723 2: SQLHelperAction 3: CustomAction1 4: C:\Users\NATHAN~1.TYL\AppData\Local\Temp\MSI684F.tmp 
Error 1723. There is a problem with this Windows Installer package. A DLL required for this install to complete could not be run. Contact your support personnel or package vendor.  Action SQLHelperAction, entry: CustomAction1, library: C:\Users\NATHAN~1.TYL\AppData\Local\Temp\MSI684F.tmp 
MSI (c) (08:4C) [10:08:38:501]: Product: SessionWorks :: Judge Edition -- Error 1723. There is a problem with this Windows Installer package. A DLL required for this install to complete could not be run. Contact your support personnel or package vendor.  Action SQLHelperAction, entry: CustomAction1, library: C:\Users\NATHAN~1.TYL\AppData\Local\Temp\MSI684F.tmp 

Action ended 10:08:38: SQLHelperAction. Return value 3.
DEBUG: Error 2896:  Executing action SQLHelperAction failed.
The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2896. The arguments are: SQLHelperAction, , 

Ни одного из двух кодов ошибок или сообщений, которые он мне дает, недостаточно, чтобы сказать мне, что не так. Или, может быть, я просто не понимаю, что они говорят неправильно.

Сначала я подумал, что это может быть из-за того, что я использовал Wix 3.5, поэтому просто чтобы убедиться, что я пытался использовать Wix 3.0, но я получаю ту же ошибку.

Есть идеи, что я делаю не так?

Ответы [ 7 ]

8 голосов
/ 10 января 2014

вместо ссылки .dll на файл .CA.dll, это работает для меня.

7 голосов
/ 25 августа 2010

Для сборки пользовательских действий требуется файл конфигурации и установите для атрибута useLegacyV2RuntimeActivationPolicy значение true. Убедитесь, что вы называете свой конфигурационный файл CustomAction.config. Если нет, это не сработает. Я предполагаю, что вы работаете на .NET 4 Framework.

См. здесь для получения дополнительной информации. Кроме того, как уже указывал AntonyW, fuslogvw.exe очень полезен в этом сценарии.

6 голосов
/ 12 апреля 2010

Пользовательские действия, запущенные через DoAction, не могут записывать в файл журнала.

Меня это также смутило, когда я впервые начал использовать WiX.что происходит, вы можете использовать System.Diagnostics.Debugger.Launch() в начале пользовательского действия.Это предложит вам присоединить Visual Studio к процессу, чтобы вы могли отладить его.

1 голос
/ 05 августа 2016

Еще один возможный ответ - вы, возможно, указали правильную CA DLL и указали правильный метод, но если метод не оформлен с помощью [CustomAction], вы получите эту ошибку.

1 голос
/ 15 апреля 2014

Эта ошибка возникает, когда у вас есть конфигурация проекта установщика / платформа, установленная на debug / x64, и конфигурация проекта настраиваемого действия / платформа, настроенная на debug / x86 соответственно.

Исправьте настройку платформы для построения проектов для той же платформы

В моем случае смена платорама решила проблему.

Спасибо Йогеш

0 голосов
/ 01 ноября 2013

Вы пытались изменить настройки библиотеки времени выполнения в библиотеке пользовательских действий? Параметры режима отладки / MDd и / MtD требуют, в частности, отладочных версий среды выполнения C ++, которые недоступны на рабочих машинах (для них нет распространяемой лицензии). Если вы используете параметр компилятора / MD, вам также может потребоваться установить требуемую версию среды выполнения Visual Studio C ++ на компьютерах пользователей, для этого есть модуль слияния: Распространяемый пакет C ++ с WIX .

0 голосов
/ 20 апреля 2013

Для меня, это была моя CustomAction DllEntry не соответствует имени моего метода. т.е.

<CustomAction Id="CheckingPID" BinaryKey="CheckPID.CA" DllEntry="BadValue" />

public static ActionResult CheckPID(Session session)
...