0

Мне нужна ваша помощь. У меня возникла проблема с тем, что 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), однако при запуске установки, возникает следующее сообщение об ошибке: SqlExpressChk.exe is not a valid Win32 application error

который предполагает, что исполняемый 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 много раз.

+0

ли вы когда-нибудь посчастливится с этим? Я пытаюсь использовать проект установки VS2013, щелкая SQL Server 2008 R2 Express как prereq, и я получаю сообщение «Недействительное приложение Win32». – DaleyKD

+0

Нет - я закончил рефакторинг моей модели EF для работы с SQL CE в конце. Я бы рекомендовал использовать проект установщика WIX vs vs setup вообще и, возможно, используя WIX, волшебным образом исправит эту ошибку.Лично для меня, WIX все время отныне - прочная документация и множество опций. – Sergey

ответ

1

Я думаю, что понял. Во-первых, я создал резервную копию C: \ Program Files (x86) \ Microsoft SDK \ Windows \ v8.1A \ Bootstrapper \ Packages \ SqlExpress2008R2 \ SqlExpressChk.exe. Затем я скопировал файл SqlExpressChk.exe из C: \ Program Files (x86) \ Microsoft SDK \ Windows \ v7.0A \ Bootstrapper \ Packages \ SqlExpress2008 в C: \ Program Files (x86) \ Microsoft SDK \ Windows \ v8.1A \ Bootstrapper \ Packages \ SqlExpress2008R2.

я нашел другую статью в Интернете, что проверить, что я не сошел с ума: https://robindotnet.wordpress.com/2010/03/21/how-to-pass-arguments-to-an-offline-clickonce-application/