2012-02-07 10 views
8

Tworzę własny plik prq do wykonania instalacji SQL CE 4.0 przy mojej instalacji aplikacji WPF. Instalator ciągle się zawiesza i nie jestem pewien dlaczego. Wygląda na to, że próbuje uruchomić plik CE exe, ale następnie pojawi się okno pomocy Instalatora Windows zawierające wszystkie te opcje pomocy wiersza poleceń. Klikam OK, a następnie pojawia się informacja, że ​​instalacja CE nie powiodła się. Nie wiem, jak ustalić, co jest nie tak.SQL CE 4.0 jako InstallShield Wymaganie wstępne

Oto moje PRQ zawartość pliku:

<?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="&lt;ISProductFolder&gt;\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> 

Każda pomoc będzie mile widziane.

+0

Można również rozważyć prywatne opcje wdrażania dostępne w SQL CE. Jak pamiętam (udokumentowane w odpowiedzi przeze mnie gdzieś tutaj na SO) jest to garść bibliotek DLL i niektóre ustawienia w App.Config. Pozwala to na robienie wszystkiego w jednym MSI bez potrzeby łączenia innych MSI. –

+0

Spojrzałem na prywatne rozmieszczenie i wydawało mi się zbyt włochate. Mnóstwo możliwości zrobienia czegoś złego. W końcu usunąłem opcje cmdline, a instalator po prostu uruchamia polecenie instalacji CE, więc działa to dobrze. – Beanwah

+0

To naprawdę działa bardzo dobrze. W rzeczywistości w ciągu ostatnich kilku dni zobaczyłem tutaj nowe pytanie/odpowiedź, w którym osoba powiedziała, że ​​zrobiło prywatne wdrożenie i było naprawdę proste i działało świetnie. Tak czy inaczej, wybór należy do ciebie. –

Odpowiedz

6

udało mi się zmusić go do pracy z tego, co wydaje się tak

<?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> 

skrypt 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> 
+0

Dziękujemy za udostępnienie! – mmmmmm

+0

@Enzero: Zrobiłem 2 różne pliki PRQ dla x86 i x64. Ale podczas instalacji pokazuje oba pliki zgodnie z wymaganiami. Jak mogę pominąć instalację pliku x86 dla terminala x64? –

2

W odpowiedzi na wypowiedź rishiJasapara za zrobiłem skrypty na podstawie poprzedniej odpowiedzi.

Pomysł jest taki sam, aby utworzyć dwa skrypty, jeden dla x86 i drugi dla platformy x64. Musisz wybrać oba wstępne wymagania w projekcie InstallShield, ale ze skryptami wymienionymi poniżej na stronie instalacji na komputerze docelowym zobaczysz jedyną, która odpowiada architekturze procesora komputera.

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> 

Jak widać, główną różnicą jest to dodatkowe "operatingsystemconditions" na wich prawidłowego Pakiet instalacyjny SQL CE jest określony.

Przetestowałem to na systemach Windows 7 w wersji 32- i 64-bitowej i faktycznie działa dobrze.

Powiązane problemy