2010-10-19 60 views
2

我正在开发一个Windows桌面应用程序,该应用程序需要安装SQL Server 2005精简版SQLServerCE31-EN.msi)。我正在使用InstallShield 2011将其作为安装过程中的先决条件进行安装。InstallShield如何检查是否安装了SQL Server 2005(3.1)精简版(CE)

为了拿出我用Process Monitor地看到,当SQLServerCE31-EN.msi手动运行这些注册表位置进行检查(不是通过安装程序)的首要预定义:

32位:HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server Compact Edition\v3.1

64位:HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Microsoft SQL Server Compact Edition\v3.1

大多数情况下,此检查似乎有效,InstallShield在检测到已安装的情况下跳过了先决条件。但是一个有些机器(Windows 7旗舰版64位SQL Server精简版3.5已安装)的键不存在,即使的Microsoft SQL Server 2005精简版[ENU]计划上市功能

在以下两个位置(在64位计算机上)都有一个注册表项,可以用来检查安装了SQL Server Compact Edition 3.5的,但是如果安装了3.1,则不会显示任何内容。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Compact Edition\v3.5 
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SQL Server Compact Edition\v3.5 

我相当肯定可以安装这两个版本,而不是3.5升级3.1,即使它显然是较新的版本。

如何检查SQL Server 2005 Compact Edition是否已安装?

执行的InstallShield用户在那里,这是目前我们使用的是.prq文件:

<?xml version="1.0" encoding="UTF-8"?> 
<SetupPrereq> 
<conditions> 
    <condition Type="1" Comparison="2" Path="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Compact Edition\v3.1" FileName="" ReturnValue="" Bits="2"></condition> 
</conditions> 
<files> 
    <file LocalFile="&lt;ISProjectFolder&gt;\..\InstallShieldPreRequisites\Microsoft SQL Server 2005 Compact Edition\SQLServerCE31-EN.msi" URL="http://download.microsoft.com/download/f/5/4/f54529c6-e316-4637-a211-95818fcd4451/SQLServerCE31-EN.msi" CheckSum="54854BAC91E616BF8F71184C05AD0355" FileSize="0,1819136"></file> 
</files> 
<execute file="SQLServerCE31-EN.msi" cmdline="/passive /norestart" cmdlinesilent="/passive /norestart" requiresmsiengine="1"></execute> 
<properties Id="{51BB3FEE-3851-4ECC-909A-C9D8EAF83254}" Description="This prerequisite installs Microsoft SQL Server 2005 Compact Edition"></properties> 
</SetupPrereq> 

能的前提文件之上加以改进?

回答

1

短版的答案:

感谢Microsoft的Robbie Meng的帮助,我们发现检查此注册表项是检查是否已安装先决条件的可靠方法:

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\1D034B0FAA6BD374B960AAD30DF10D8B 
2

您可以使用产品代码在HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ Installer \ Products配置单元中检查是否安装了SQL Server CE 3.1。

例如SQL CE 3.5的产品代码是{F0B430D1-B6AA-473D-9B06-AA3DD01FD0B8}

我们会在注册表中找到以下:(注意代码有做一些转移)HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ Installer \ Products \ 1D034B0FAA6BD374B960AAD30DF10D8B

您可以通过ORCA工具找到SQL CE 3.1产品代码。以下是详细步骤:

启动ORCA软件 打开SQL CE 3。与ORCA 1个MSI文件单击属性,并检查产品代码在右侧面板中

下载:ORCA MSI编辑 http://www.technipages.com/download-orca-msi-editor.html

希望这有助于...

+0

谢谢,我在这里发布了一些进一步的评论:http://social.msdn.microsoft.com/Forums/en-US/sqlce/thread/3f161f2e-3908-4911-9bfd-e42188872ebf – tjrobinson 2010-10-21 09:31:45

相关问题