我正在开发一个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="<ISProjectFolder>\..\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>
能的前提文件之上加以改进?
谢谢,我在这里发布了一些进一步的评论:http://social.msdn.microsoft.com/Forums/en-US/sqlce/thread/3f161f2e-3908-4911-9bfd-e42188872ebf – tjrobinson 2010-10-21 09:31:45