Простое настраиваемое действие 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
) и непрерывная регистрация (!
) (в отличие от написания журнала в пакетном режиме). Последний делает установку намного медленнее, но гарантирует, что ни один буфер журнала не будет потерян из-за сбоев.
Некоторые ссылки (для сохранности):