0

我需要您的帮助 - 我无法让 VS 安装程序在 Windows XP KN SP3 上运行,因为我遇到了 Microsoft SQL Express 版本检查器可执行文件错误,因为“SqlExpressChk.exe 不是有效的 Win32 应用程序”而且我不知道如何解决它,已经尝试了很多东西。详情如下。

我有一个 VS Setup 项目,其中包含要从本地计算机安装的 3 个先决条件(未下载)。它们是 .NET 4 Framework、SQL Server 2008 R2 和 Windows Installer 4.5。我已经从 MS 下载中心下载了所有必要的引导程序文件并保存到我的本地开发机器中,因此 VS 安装项目可以正常构建。

我正在 Windows KN SP3(在 Hyper-V 上运行)上测试安装程序,但是当您运行安装程序时,会发生以下错误: SqlExpressChk.exe 不是有效的 Win32 应用程序错误

这表明可执行文件是 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"/>

我不明白这个价值反映了什么,但也许你们中的一个人会这样做?

你怎么看?

问候,谢尔盖

ps

我尝试过的事情包括重新下载包,重新构建项目,在目标 windows xp 机器上安装 sql server 2008 r2(安装程序本身运行良好,顺便说一句)并尝试找到版本检查器的本地版本,但找不到。甚至尝试修改 EF 模型以在 SQL CE 上工作,这样我就不需要依赖 SQL Express,但是我在 EF 中遇到了一个单独的问题,这阻止了我这样做。多次重启win xp。

4

1 回答 1

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/

于 2015-04-12T02:28:58.927 回答