【问题标题】:VS Setup Project - Sqlexpresschk.exe is not a valid win32 application when ran from Win XP KN Pro SP3VS 安装项目 - 从 Win XP KN Pro SP3 运行时,Sqlexpresschk.exe 不是有效的 win32 应用程序
【发布时间】:2014-11-01 15:30:23
【问题描述】:

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

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

我正在 Windows KN SP3(在 Hyper-V 上运行)上测试安装程序,但是当您运行安装程序时,会出现以下错误:

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

【问题讨论】:

  • 你遇到过这种情况吗?我正在尝试使用 VS2013 安装项目,单击 SQL Server 2008 R2 Express 作为先决条件,我收到“不是有效的 Win32 应用程序”错误。
  • 否 - 我最终重构了我的 EF 模型以使用 SQL CE。我建议通常使用 WIX 安装程序项目与 vs 设置,也许使用 WIX 会神奇地修复此错误。就我个人而言,从现在开始,WIX 一直都是 - 可靠的文档和大量的选项。

标签: sql-server-2008-r2 installation windows-xp-sp3 vsinstaller


【解决方案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/

【讨论】:

    猜你喜欢
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    • 1970-01-01
    • 2013-05-03
    • 1970-01-01
    • 1970-01-01
    • 2014-11-15
    相关资源
    最近更新 更多