Проект установки VS - Sqlexpresschk.exe не является приложением win32 при запуске из Win XP KN Pro SP3
Мне нужна ваша помощь - у меня проблема с настройкой VS для работы в Windows XP KN SP3, потому что я сталкиваюсь с ошибкой в исполняемом файле Microsoft SQL Express Version Checker, потому что "SqlExpressChk.exe не является допустимым приложением Win32", и я не знаю как это исправить, перепробовав уже много вещей. Подробности следуют.
У меня есть проект установки VS с 3 предварительными требованиями, которые должны быть установлены с локального компьютера (не загружены). Это.NET 4 Framework, SQL Server 2008 R2 и установщик Windows 4.5. Я загрузил все необходимые файлы начальной загрузки из MS Download Center и сохранил на своем локальном компьютере разработчика, чтобы проект VS Setup работал нормально.
Я тестирую программу установки в Windows KN SP3 (работает на 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"/>
Я не понимаю, что отражает эта ценность, но, возможно, один из вас понимает?
Как вы думаете?
С уважением, Сергей
п.с.
Вещи, которые я пробовал, включают повторную загрузку пакетов, повторную сборку проекта, установку sql server 2008 r2 на целевой машине windows xp (кстати, программа установки работает нормально, кстати) и попытка найти локальную версию средства проверки версий, но не смог найти. Даже пытаясь изменить EF Models для работы на SQL CE, чтобы мне не нужно было зависеть от SQL Express, но у меня есть отдельная проблема в EF, которая мешает мне это делать. Перезапуск win xp много раз.
1 ответ
Я думаю, что я понял это. Сначала я создал резервную копию C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\Bootstrapper\Packages\SqlExpress2008R2\SqlExpressChk.exe. Затем я скопировал SqlExpressChk.exe из C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\SqlExpress2008 в C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\Bootstrapper\Packages\SqlExpress2008R2.
Я нашел другую статью в Интернете, которая подтвердила, что я не сошел с ума: https://robindotnet.wordpress.com/2010/03/21/how-to-pass-arguments-to-an-offline-clickonce-application/