SQL CE 4.0 как предпосылка для InstallShield
Я делаю свой собственный файл prq для выполнения установки SQL CE 4.0 с моей установкой приложения WPF. Установщик продолжает терпеть неудачу, и я не уверен почему. Похоже, что он пытается запустить CE EXE, но затем окно справки установщика Windows появляется со всеми этими параметрами справки командной строки. Я нажимаю ОК, а затем он говорит, что установка CE не удалась. Я не знаю, как определить, что идет не так.
Вот мое содержимое файла prq:
<?xml version="1.0" encoding="UTF-8"?>
<SetupPrereq>
<conditions>
<condition Type="32" Comparison="2" Path="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Compact Edition\v4.0\ENU" FileName="DesktopRuntimeVersion" ReturnValue="4.0.8482.1"></condition>
</conditions>
<files>
<file LocalFile="<ISProductFolder>\SetupPrerequisites\SSCERuntime_x86-ENU.exe" URL="http://www.microsoft.com/download/en/details.aspx?id=17876" FileSize="0,0"></file>
</files>
<execute file="SSCERuntime_x86-ENU.exe" cmdline="/passive /norestart" cmdlinesilent="/passive /norestart"></execute>
<properties Id="{F7BF54C1-CA2C-4410-98DB-480769CE6547}" Description="This prerequisite installs the Microsoft SQL Server Compact 4.0."></properties>
</SetupPrereq>
Любая помощь приветствуется.
2 ответа
Я был в состоянии заставить это работать от того, что кажется так
<?xml version="1.0" encoding="UTF-8"?>
<SetupPrereq>
<conditions>
<condition Type="32" Comparison="2" Path="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Compact Edition\v4.0\ENU" FileName="DesktopRuntimeVersion" ReturnValue="4.0.8482.1"></condition>
</conditions>
<files>
<file LocalFile=".\SSCERuntime_x86-ENU.exe" URL="http://download.microsoft.com/download/0/5/D/05DCCDB5-57E0-4314-A016-874F228A8FAD/SSCERuntime_x86-ENU.exe" FileSize="0,0"></file>
</files>
<execute file="SSCERuntime_x86-ENU.exe" cmdline="/i /passive" cmdlinesilent="/i /passive"></execute>
<properties Id="{05DCCDB5-57E0-4314-A016-874F228A8FAD}" Description="This prerequisite installs the Microsoft SQL Server Compact 4.0 x86."></properties>
</SetupPrereq>
Скрипт x64
<?xml version="1.0" encoding="UTF-8"?>
<SetupPrereq>
<conditions>
<condition Type="32" Comparison="2" Path="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Compact Edition\v4.0\ENU" FileName="DesktopRuntimeVersion" ReturnValue="4.0.8482.1"></condition>
</conditions>
<files>
<file LocalFile=".\SSCERuntime_x64-ENU.exe" URL="http://download.microsoft.com/download/0/5/D/05DCCDB5-57E0-4314-A016-874F228A8FAD/SSCERuntime_x64-ENU.exe" FileSize="0,0"></file>
</files>
<execute file="SSCERuntime_x64-ENU.exe" cmdline="/i /passive" cmdlinesilent="/i /passive"></execute>
<properties Id="{05DCCDB5-57E0-4314-A016-874F228A8FAD}" Description="This prerequisite installs the Microsoft SQL Server Compact 4.0 x64."></properties>
</SetupPrereq>
В ответ на комментарий риши Джасапары я сделал сценарии на основе предыдущего ответа.
Идея та же - создать два скрипта, один для x86 и другой для платформы x64. Вы должны выбрать обе предварительные условия в своем проекте InstallShield, но со сценариями, перечисленными ниже на странице установки на целевой машине, вы увидите только ту, которая соответствует архитектуре процессора машины.
Microsoft SQL CE 4.0 x86.prq:
<?xml version="1.0" encoding="UTF-8"?>
<SetupPrereq>
<conditions>
<condition Type="32" Comparison="2" Path="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Compact Edition\v4.0\ENU" FileName="DesktopRuntimeVersion" ReturnValue="4.0.8482.1"></condition>
</conditions>
<operatingsystemconditions>
<operatingsystemcondition CSDVersion="" Bits="1"></operatingsystemcondition>
</operatingsystemconditions>
<files>
<file LocalFile=".\SSCERuntime_x86-ENU.exe" URL="http://download.microsoft.com/download/0/5/D/05DCCDB5-57E0-4314-A016-874F228A8FAD/SSCERuntime_x86-ENU.exe" CheckSum="0A55733CF406FBD05DFCFF5A27A0B4F7" FileSize="0,2379544"></file>
</files>
<execute file="SSCERuntime_x86-ENU.exe"></execute>
<properties Id="{2754916B-119B-4428-9F94-DC9E45072CCC}"></properties>
<behavior Failure="4" Reboot="2"></behavior>
</SetupPrereq>
Microsoft SQL CE 4.0 x64.prq:
<?xml version="1.0" encoding="UTF-8"?>
<SetupPrereq>
<conditions>
<condition Type="32" Comparison="2" Path="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Compact Edition\v4.0\ENU" FileName="DesktopRuntimeVersion" ReturnValue="4.0.8482.1"></condition>
</conditions>
<operatingsystemconditions>
<operatingsystemcondition CSDVersion="" Bits="2"></operatingsystemcondition>
</operatingsystemconditions>
<files>
<file LocalFile=".\SSCERuntime_x64-ENU.exe" URL="http://download.microsoft.com/download/0/5/D/05DCCDB5-57E0-4314-A016-874F228A8FAD/SSCERuntime_x64-ENU.exe" CheckSum="A417082ECAEDD95AFB41F73DC140C350" FileSize="0,2621240"></file>
</files>
<execute file="SSCERuntime_x64-ENU.exe"></execute>
<properties Id="{7CB7BE3C-614A-403F-94D9-5652285A3EDF}"></properties>
<behavior Failure="4" Reboot="2"></behavior>
</SetupPrereq>
Как видите, основное отличие заключается в дополнительных "условиях операционной системы", в которых определяется правильный установочный пакет SQL CE.
Я протестировал его на Windows 7 32- и 64-битных системах, и он на самом деле работает нормально.