Мне нужна ваша помощь. У меня возникла проблема с тем, что VS Setup работает в Windows XP KN SP3, потому что я столкнулся с ошибкой с исполняемым файлом Microsoft SQL Express Version Checker, потому что «SqlExpressChk.exe не является допустимым приложением Win32», и я не знаю, как его исправить, уже много чего пробовав. Подробности следуют.VS Setup Project - Sqlexpresschk.exe не является допустимым приложением win32 при запуске от Win XP KN Pro SP3
У меня есть проект установки VS с 3 предварительными требованиями, которые должны быть установлены с локальной машины (не загружены). Это .NET 4 Framework, SQL Server 2008 R2 и установщик Windows 4.5. Я загрузил все необходимые файлы bootstrapper из Центра загрузки MS и сохранил их на своем локальном компьютере-разработчике, чтобы проект VS Setup был строгим.
Я тестирование установки на Windows, К.Н. с пакетом обновления 3 (работает на Hyper-V), однако при запуске установки, возникает следующее сообщение об ошибке:
который предполагает, что исполняемый 64-бит. Почему программа установки использует 64-разрядную версию проверки, если она знает, что мы находимся на 32-битной машине? Если я могу получить 32-битную версию этой проверки, то, возможно, настройка будет продолжена, но я не могу ее найти.
Установить журнал показывает следующее (хотя это может быть неправильно, так как если sqlexpresschk.exe не был запущен, то как бы регистратор знать фактические значения?):
Running checks for package 'SQL Server 2008 R2 Express', phase BuildList Running external check with command 'SqlExpress2008R2\SqlExpressChk.exe' and parameters '10.50.1600 1033' Process exited with code 0 Setting value '0 {int}' for property 'SQLExpressChk' The following properties have been set for package 'SQL Server 2008 R2 Express': Property: [SQLExpressChk] = 0 {int} Running checks for command 'SqlExpress2008R2\SQLEXPR32_x86_ENU.EXE' Result of running operator 'ValueNotExists' on property 'VersionNT': false Result of running operator 'VersionLessThan' on property 'VersionNT' and value '5.1.3': false Result of running operator 'VersionEqualTo' on property 'VersionNT' and value '5.2.0': false Result of running operator 'VersionEqualTo' on property 'VersionNT' and value '5.2.1': false Result of running operator 'ValueEqualTo' on property 'AdminUser' and value 'false': false Result of running operator 'ValueEqualTo' on property 'SQLExpressChk' and value '-1': false Result of running operator 'ValueEqualTo' on property 'SQLExpressChk' and value '-2': false Result of running operator 'ValueEqualTo' on property 'SQLExpressChk' and value '-3': false Result of running operator 'ValueEqualTo' on property 'SQLExpressChk' and value '-4': false Result of running operator 'ValueLessThan' on property 'SQLExpressChk' and value '-4': false Result of running operator 'ValueNotEqualTo' on property 'ProcessorArchitecture' and value 'Intel': false Result of running operator 'ValueNotEqualTo' on property 'SQLExpressChk' and value '1': true Result of checks for command 'SqlExpress2008R2\SQLEXPR32_x86_ENU.EXE' is 'Bypass' Running checks for command 'SqlExpress2008R2\SQLEXPR32_x86_ENU.EXE' Result of running operator 'ValueNotEqualTo' on property 'ProcessorArchitecture' and value 'Intel': false Result of running operator 'ValueNotEqualTo' on property 'SQLExpressChk' and value '2': true Result of checks for command 'SqlExpress2008R2\SQLEXPR32_x86_ENU.EXE' is 'Bypass' Running checks for command 'SqlExpress2008R2\SQLEXPR_x64_ENU.EXE' Result of running operator 'ValueNotEqualTo' on property 'ProcessorArchitecture' and value 'amd64': true Result of checks for command 'SqlExpress2008R2\SQLEXPR_x64_ENU.EXE' is 'Bypass' Running checks for command 'SqlExpress2008R2\SQLEXPR_x64_ENU.EXE' Result of running operator 'ValueNotEqualTo' on property 'ProcessorArchitecture' and value 'amd64': true Result of checks for command 'SqlExpress2008R2\SQLEXPR_x64_ENU.EXE' is 'Bypass' 'SQL Server 2008 R2 Express' RunCheck result: No Install Needed
Он в обход установить, из-за
Result of running operator 'ValueNotEqualTo' on property 'SQLExpressChk' and value '1': true
Поскольку в package.xml:
<BypassIf Property="SQLExpressChk" Compare="ValueNotEqualTo" Value="1"/>
Я не понимаю, что отражает это значение, но, возможно, один из вас?
Как вы думаете?
С уважением, Сергей
P.S.
Вещи, которые я пробовал, включают в себя повторную загрузку пакетов, перестройку проекта, установку SQL Server 2008 r2 на целевом компьютере Windows XP (настройка выполняется отлично сама по себе, кстати) и попытка найти локальную версию проверки версии, но не смог найти его. Даже пытаюсь изменить модели EF для работы с SQL CE, поэтому мне не нужно будет зависеть от SQL Express, но у меня возникает отдельная проблема в EF, которая мешает мне это делать. Перезапуск win xp много раз.
ли вы когда-нибудь посчастливится с этим? Я пытаюсь использовать проект установки VS2013, щелкая SQL Server 2008 R2 Express как prereq, и я получаю сообщение «Недействительное приложение Win32». – DaleyKD
Нет - я закончил рефакторинг моей модели EF для работы с SQL CE в конце. Я бы рекомендовал использовать проект установщика WIX vs vs setup вообще и, возможно, используя WIX, волшебным образом исправит эту ошибку.Лично для меня, WIX все время отныне - прочная документация и множество опций. – Sergey