VS安装项目 - 从Win XP KN Pro SP3运行时,Sqlexpresschk.exe不是有效的win32应用程序

问题描述:

我需要您的帮助 - 我有一个VS安装程序在Windows XP KN SP3上工作的问题,因为我遇到错误与Microsoft SQL Express版本检查器可执行文件,因为“SqlExpressChk.exe不是有效的Win32应用程序”,我不知道如何解决它,已经尝试了很多东西。详情如下。VS安装项目 - 从Win XP KN Pro SP3运行时,Sqlexpresschk.exe不是有效的win32应用程序

我有一个VS安装项目,其中3个先决条件将从本地机器上安装(未下载)。他们是.NET 4框架,SQL Server 2008 R2和Windows Installer 4.5。我已经从MS下载中心下载了所有必要的引导程序文件并保存到我的本地开发机器中,以便VS安装项目可以正常工作。

我测试在Windows KN SP3安装(Hyper-V上运行),但是当您运行安装程序,会出现以下错误: SqlExpressChk.exe is not a valid Win32 application error

这表明可执行文件是64位的。如果安装程序知道我们位于32位机器上,为什么要使用64位版本的检查器?如果我可以使用这个检查器的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"/> 

我不明白这个值反映了什么,但是也许你们中的一个呢?

您认为如何?

问候, 谢尔盖

附:

我试过的东西包括重新下载软件包,重新构建项目,在目标windows xp机器上安装sql server 2008 r2(安装程序运行正常,顺便说一句),并试图找到本地版本的版本检查器,但找不到一个。即使试图修改EF模型以在SQL CE上工作,所以我不需要依赖SQL Express,但是我在EF中遇到了一个单独的问题,这使得我无法执行此操作。多次重新启动win xp。

+0

你曾经有运气呢?我正在尝试使用VS2013安装项目,单击SQL Server 2008 R2 Express作为先决条件,并且出现“不是有效的Win32应用程序”错误。 – DaleyKD 2015-04-11 21:35:49

+0

不 - 我最终重构了我的EF模型,最终使用了SQL CE。我会建议使用WIX安装程序项目vs vs一般安装程序,也许使用WIX将奇迹般地修复此错误。就我个人而言,从现在开始,WIX一直保持着稳定的文档和多种选择。 – Sergey 2015-04-11 21:43:17

我想我明白了。首先,我备份了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 \引导程序\软件包\ SqlExpress2008R2。

我发现另一篇文章网上说证实了我是不是疯了:https://robindotnet.wordpress.com/2010/03/21/how-to-pass-arguments-to-an-offline-clickonce-application/