Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

Single MSI Paket mit Prerequisites


9 replies to this topic

Sandor1990

Sandor1990
  • Full Members
  • 33 posts

Posted 11 October 2011 - 09:49

Hallo,

ist es möglich, ein einfaches MSI Paket inklusive Prerequisites (es kann sich auch um Feature-abhängige Prerequisites handeln) zu erstellen, OHNE einen Bootstrapper (setup.exe) zu verwenden?
Kann ein mutlilinguales Setup als einzelnes MSI Paket erstellt werden ohne Setup.exe (ich habe diesbezgl. den Artikel http://www.installsi...dlang/index.htm gefunden, möchte aber keine automatische Auswahl, sondern vielmehr eine Art "MSI-Bootstrapper". Gibt's sowas?)


Gruß und DANKE!
Sand0r

Sandor1990

Sandor1990
  • Full Members
  • 33 posts

Posted 11 October 2011 - 12:03

Okay, also laut:
http://wix.mindcaper...ki/Bootstrapper

können nicht 2 Instanzen von MSI laufen, daher kann eine MSI Datei auch keine andere aufrufen...

Freund

Freund
  • Full Members
  • 8 posts

Posted 11 October 2011 - 16:07

Hallo,

so weit ich weiß kann man mit Installshield 2012 Chained .msi Packages einbinden. Es sollte damit also funktionieren.

Gruß, Freund

ali

ali
  • Full Members
  • 1,008 posts

Posted 11 October 2011 - 16:17

wenn das 2. MSI in der Dialog Sequenz aufgerufen wird, dann sollte das gehen. Nicht gehen tut es nach dem Übergang in die Excute Sequenz. Erst nach Beendigung der InstallFinalize Sequenz, als letzte Aktion, könntest du quasi ein 2. MSI anschubsen über eine CA Type 226 also Asynchron mit sofortiger Ausführung. Das 2, MSI startet dann kurz bevor das Erste sich beendet. Ansonsten benötigst du die Setup.exe in der Setup.ini sind dann die Prerequisites aufgeführt, die zur Start bzw. Featureabhängig abgearbeitet werden. Featureabhängige Prerequisites laufen nicht im Silentmode.

Edit:
oder wie Freund schreibt über Chaind MSI, habe ich aber selbst noch keine Erfahrungen mit gemacht, ob das so sicher läuft bzw. abgearbeitet wird. Ältere Systeme als WIN XP SP2 werden damit auch nicht unterstützt (MSI4.5).

Edited by ali, 11 October 2011 - 16:25.


Sandor1990

Sandor1990
  • Full Members
  • 33 posts

Posted 12 October 2011 - 09:55

Okay, danke erstmal!

Das Problem ist, ich habe das .NET Framework 4.0 und Visual C++ 2010 SP1 als Prerequisites. Die gibts aber nicht als MSI-Pakete...

Ist "best practise" in diesem Fall ein Setup.exe-Bootstrapper?
Diverse Kunden von uns möchten eben nur MSI... dry.gif

Sandor1990

Sandor1990
  • Full Members
  • 33 posts

Posted 12 October 2011 - 12:52

Habe mir anders Abhilfe verschafft und einfach ein Script geschrieben, dass nen Regeintrag ausliest. Wenn er nicht vorhanden ist, wird die entsprechende Setuproutine (von Visual C++ SP1 - .NET Framework hat ja bereits eine Bootstrapper-freie Abfrage) über LauchAppAndWait(); gestartet. Funktioniert soweit wunderbar smile.gif

ali

ali
  • Full Members
  • 1,008 posts

Posted 12 October 2011 - 13:19

Hallo, erstmal zum Thema

QUOTE
Ist "best practise" in diesem Fall ein Setup.exe-Bootstrapper?


Do not ship concurrent installations.
Concurrent Installations, also called Nested Installations, install another Windows Installer package during a currently running installation. The use of concurrent installations is not a good practice because they are difficult for customers to service. Patching and upgrading may not work with concurrent installations. The recommended alternative to using concurrent installations is to instead use a setup application and external UI handler to install several Windows Installer packages sequentially.

For more information about using an external UI handler see Monitoring an Installation Using MsiSetExternalUI. For more information about using a record-based external handler, see Monitoring an Installation Using MsiSetExternalUIRecord.

Concurrent installations are sometimes used in controlled corporate environments to install applications that are not intended for the public. Follow these guidelines if you decide to use concurrent installations.

•Do not use concurrent installations to install or update a shipping product.
•Concurrent installations should not share components.
•An administrative installation should not contain a concurrent installation.
•Integrated ProgressBars should not be used with concurrent installations.
•Resources that are to be advertised should not be installed by a concurrent installation.
•A package that performs a concurrent installation of an application should also uninstall the concurrent application when the parent product is uninstalled. A nested installation exists under the context of the parent product in the Add/Remove Programs in Control Panel.

sonst habe ich da nichts gefunden
Best Practices
------------------

.Net FRamework 4 wird doch bereits über Microsoft Update verteilt. Ich habe hier in meinem Setup lediglich eine Prüfung auf das Vorhandensein eingebaut, wenn das Paket nicht installiert sein sollte, dann wird eine MSGBox ausgegeben, mit einem Link zum Download.

Für VS2010 ist doch auch bereits ein weiterverteilbare Paket im Setup, das würde ich für diesem Fall auch als Prerequisite aufnehmen. Musst du ja nur anklicken und evtl. mit einem DummyFeature verknüpfen, ist ein bisserl eleganter als ein Script, welches auch noch durch div. Sicherheitstools geblockt werden kann, zumindest wenn dein Setup nicht mit einer digitalen Signatur versehen sein sollte.

Edited by ali, 12 October 2011 - 13:39.


Sandor1990

Sandor1990
  • Full Members
  • 33 posts

Posted 12 October 2011 - 13:52

Danke erstmal!

Ja das mit .Net Framework habe ich auch entdeckt! smile.gif

Es handelt sich um Visual C++ 2010 Service Pack 1, dafür gibts nur ne Redistributable (Prerequisite). Das Problem dabei, dass ich dann einen Bootstrapper brauche, den ich nicht einbauen möchte! wink.gif

ali

ali
  • Full Members
  • 1,008 posts

Posted 12 October 2011 - 19:30

achso, stimmt, hattest du ja schon geschrieben.

Ich würde aber bei Script eine Prüfung einbauen ob Script ausgeführt wird. zb. über Script ein Property setzen und dann Prüfen ob das Property gesetzt ist. Wenn nicht einfach per CA eine InfoBox aus der user32.dll als Warnung ausgeben

Edited by ali, 12 October 2011 - 19:32.


Sandor1990

Sandor1990
  • Full Members
  • 33 posts

Posted 14 October 2011 - 08:29

Okay, probier ich mal! Danke auf jeden Fall smile.gif