InstallShield如何检查是否安装了SQL Server 2005(3.1)Compact Edition(CE)

时间:2010-10-19 15:12:42

标签: sql-server sql-server-2005 installshield prerequisites

我正在开发一个Windows桌面应用程序,需要安装 SQL Server 2005 Compact Edition SQLServerCE31-EN.msi)。我正在使用 InstallShield 2011 将其作为安装过程中的先决条件进行安装。

为了提出先决条件定义,我使用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 Ultimate 64位 SQL Server Compact Edition 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>

上述先决条件文件可以改进吗?

2 个答案:

答案 0 :(得分: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软件 使用ORCA打开SQL CE 3.1 msi文件 单击“属性”并在右侧面板中选中“产品代码”

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

希望这会有所帮助......

答案 1 :(得分:1)

答案的简短版本:

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

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