Простое настраиваемое действие WiX в пользовательском интерфейсе преждевременно заканчивается в Windows 7

Мой пользовательский интерфейс установщика WiX получает ошибку при использовании настраиваемого действия. Интересно то, что установщик работает нормально в Windows 10, но при запуске его в Windows 7 установщик прерывается.

Из журналов установщика отображается код ошибки 2896, Погуглив дальше код ошибки, указал мне, что это может быть несоответствие версии.net framework. Поэтому я изменил свой CustomAction.config следующее:

<startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0" />
        <supportedRuntime version="v3.0" />
        <supportedRuntime version="v3.5" />
        <supportedRuntime version="v2.0.50727"/>

</startup>

Я проверил установленную версию с помощью следующей команды:

reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP"

я что-то здесь упускаю?

РЕДАКТИРОВАТЬ: Вот код настраиваемого действия для вашей справки:

namespace ValidateIP
{
    public class CustomActions
    {
        [CustomAction]
        public static ActionResult ValidateIP(Session session)
        {
            session.Log("Begin ValidateIP");
            if (string.IsNullOrEmpty(session["IPVAL"]))
            {
                session["VALIDIP"] = "0";
            }
            else
            {
                session["VALIDIP"] = "1";
            }
            return ActionResult.Success;
        }
    }
}

2 ответа

Таким образом, получается, что, хотя я использовал другую версию.Net в моем файле CustomAction.config, но в проекте Custom Action целевая версия.Net была 4.5. Так что это заменило свойства конфигурации. Как только я уменьшил его до 3,5, он начал работать. Спасибо всем за все предложения.

Я не эксперт по настраиваемым действиям с управляемым кодом, Крис Пейнтер - человек для этого, но позвольте мне проверить пару вещей:

  • Требуется ли для этого пользовательского действия права администратора?
  • Если это так, настроено ли оно как пользовательское действие отложенного режима, запускаемое в контексте системы?
  • В какой последовательности выполняется настраиваемое действие? GUI? Выполнить? И то и другое?
  • Что на самом деле делает пользовательское действие?
  • От каких классов.NET и функций.NET и Widows зависит пользовательское действие? (насколько мы знаем, вы могли бы создавать экземпляры COM-серверов, например)

Подробно, отладка, ведение журнала: Смотрите installsite.org о ведении журнала. Из этого контента я бы попробовал:

msiexec.exe /i C:\Path\Your.msi /L*vx! C:\Your.log

Это полная, многословная регистрация (*v) с дополнительной отладочной информацией (x) и непрерывная регистрация (!) (в отличие от написания журнала в пакетном режиме). Последний делает установку намного медленнее, но гарантирует, что ни один буфер журнала не будет потерян из-за сбоев.


Некоторые ссылки (для сохранности):

Другие вопросы по тегам