Я разрабатываю настольное приложение 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 Compact Edition[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>
Можно ли улучшить указанный выше файл предварительных требований?