2

SQL Server 2005 Compact EditionSQLServerCE31-EN.msi)をインストールする必要があるWindowsデスクトップアプリケーションを開発しています。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は、インストール済みとしてすでに検出されている場合、前提条件をスキップします。ただし、一部のマシン(SQL Server CompactEdition3.5が既にインストールされているWindows7Ultimate 64ビット)では、 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="&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>

上記の前提条件ファイルを改善できますか?

4

2 に答える 2

2

HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ Installer \ Productsハイブの製品コードを使用して、SQL ServerCE3.1がインストールされているかどうかを確認できます。

たとえば、SQLCE3.5の製品コードは{F0B430D1-B6AA-473D-9B06-AA3DD01FD0B8}です。

レジストリには以下があります:(コードが転送を行っていることに注意してください)HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ Installer \ Products \ 1D034B0FAA6BD374B960AAD30DF10D8B

SQL CE 3.1製品コードは、ORCAツールを介して見つけることができます。詳細な手順は次のとおりです。

ORCAソフトウェアを起動するORCAを使用してSQLCE3.1 msiファイルを開き、[プロパティ]をクリックして、右側のパネルで[製品コード]を確認します。

ダウンロード:ORCAMSIエディター http://www.technipages.com/download-orca-msi-editor.html

これがお役に立てば幸いです…</p>

于 2010-10-21T05:55:34.930 に答える
1

答えの短いバージョン:

MicrosoftのRobbieMengの助けを借りて、このレジストリキーをチェックすることは、前提条件がすでにインストールされているかどうかをチェックする信頼できる方法であることがわかりました。

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\1D034B0FAA6BD374B960AAD30DF10D8B
于 2010-10-21T14:17:43.013 に答える