Entwickler-Ecke

Programmierwerkzeuge - MSI Installationen erstellen


Vera - Di 03.01.06 11:25
Titel: MSI Installationen erstellen
Hallo Forum! :P

Mein Chef möchte, dass unsere Software mit Hilfe des Windows Installer verteilt wird. Programme wie InstallShield oder Wise sind uns da etwas zu teuer und haben für unserer Ansprüche auch zu viele Funktionen. Ich hab auch WiX [http://sourceforge.net/projects/wix/] gefunden (war ein nettes Gespräch mit meinen Chef als ich ihm von "WiX" erzählt habe :-D). Allerdings finde ich die XML Dateien die man für WiX erstellen muss nicht sonderlich komfortabel. Im großen und ganzen haben die von WiX doch einfach die MSI-Tabellen in XML Form gebracht. :(

Jetzt meine Frage: Kennt Ihr noch andere Programme die MSI Dateien erstellen können? Mir wäre es am liebsten wenn die Projektdateien simplen Textdateien sind. Diese lassen sich dann besser mit einem VersionsControlSystem handeln. Außerdem muss auch ein Kommandozeilenprogramm vorhanden sein, damit ich die MSI Datei innerhalb des automatischen Build-Prozess erzeugen kann.

Vielen dank für Eure Hilfe!

Bye Vera. :roll:


MisterBum83 - Di 03.01.06 11:45

Also ich benutze [url]http://www.innosetup.com[/url] . Das ist ein super Programm (kostenlos) zum erstellen von Installationen.


Vera - Di 03.01.06 11:48

InnoSetup erstellt aber keine MSI Dateien.


Martin1966 - Di 03.01.06 12:18

Hallo :wink2:

Das Tool msi2xml [http://msi2xml.sourceforge.net/] ist vergleichbar mit WiX. Allerdings wandelt das Tool die Tabellen 1 zu 1 in XML um. Ist also auch nicht so sonderlich konfortabel.

Lg Martin


Tino - Do 05.01.06 14:11

Hi Vera,

ich bastele schon seit Jahren an ein Programm rum welches MSI Dateien erstellen kann. Anhand einer Scriptsprache wird das zu installierende Projekt beschrieben. Ein Klick auf Kompilieren und die MSI Datei (oder auch eine ausführbare Anwendung) wird erstellt. Es ist auch ein Kommandozeilen Programm dabei um zum Beispiel das Setup innerhalb eines Buildvorgangs erstellen zu lassen.

Da es dir sehr auf das Eingabeformat ankommt poste ich hier mal einen Teil eines Beispielscripts damit Du Dir einen ersten Eindruck von der Script machen kannst:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
<Project>
  Name = 'Styledev Installer';
  Author = 'Tino Teuber';

  //
  // Product
  //
  <Product>
    Name = 'Styledev Installer';
    Version = '1.0.0.0';
    Manufacturer = 'Tino Teuber';

    ProductCode = '{3ECB97B5-78D9-4A94-A416-CFA22DF2DA93}';
    PackageCode = '{5A5B4FE9-77F2-49D6-BA0F-CACB0F1C68BB}';
    UpgradeCode = '{53794E7B-51D5-4112-BBDF-C8F752D4D66D}';
    
    InstallFolder = '{ProgramFilesFolder}\Styledev Installer';

    <ControlPanel>
      ProductURL = 'http://www.styledev.de';
      ProductUpdateURL = 'http://www.styledev.de/update';
    </ControlPanel>
  </Product>

  //
  // Components
  //
  <Components>
  
    <Component>
      Name = 'compMain';
      Code = '{CB9FFAB9-A0E2-48E4-9BA5-FB078040173A}';
      Target = '{ProgramFilesFolder}\Styledev Installer';

      <File> Source = '..\Files\sicl32.dll'; </File>
      <File> Source = '..\Files\sivc32.exe'; </File>
      <File> Source = '..\Files\sicc32.exe'; </File>
      <File> Source = '..\Files\bootldr.e32'; </File>
      
      <Shortcut>
        Name = 'Style Installer';
        Directory = '{ProgramMenuFolder}\Styledev Installer';
        Target = '{ProgramFilesFolder}\Styledev Installer\SIVC32.exe';
        WorkingDirectory = '{ProgramFilesFolder}\Styledev Installer';
      </Shortcut>
      
      <Registry> 
         Root = HKCU;
         Key = 'Software/Test';
         Action = raAppend;
         Type = rtMultiString;
         Value = 'Test';
      </Registry>
    </Component>

    <Component>
      Name = 'compDoc';
      Code = '{A5A72380-759F-42FB-9F63-9FEF87F88908}';
      Target = '{ProgramFilesFolder}\Styledev Installer\Help';
      
      <File> Source = '..\Files\si.chm'; </File>

      <Shortcut>
        Name = 'Dokumentation';
        Directory = '{ProgramMenuFolder}\Styledev Installer';
        Target = '{ProgramFilesFolder}\Styledev Installer\Help\si.chm';        
        WorkingDirectory = '{ProgramFilesFolder}\Styledev Installer';
      </Shortcut>
    </Component>

  </Components>

  //
  // Features
  //
  <Features>
    <Feature>
      Title = 'Anwendung';
      Description = 'Installiert die grundlegenden Dateien.';
      Level = 1;
      Display = fdExpanded;
      
      <ComponentLink> Name = 'compMain';</>

      <Feature>
        Title = 'Dokumentation';
        Description = 'Installiert die Dokumentation von Styledev Installer';
        Level = 1;
  
        <ComponentLink> Name = 'compDoc';</>
      </Feature>

    </Feature>
  </Features>

  //
  // Standard Dialogs
  //
  {$INCLUDE UserInterface.sis}

</Project>

Das Programm unterstützt noch nicht alle Möglichkeiten von MSI da sich die ganze Anwendung noch in einem sehr frühen Entwicklungsphase befindet. So ist es zum Beispiel zur Zeit nur möglich Dateien installieren/deinstallieren, Shortcuts zu erstellen und Registry-Werte /-Zweige installieren/deinstallieren zu lassen. Auch die Dialoge lassen sich schon (fast) komplett selbst designen. Conditionals lassen sich auch definieren.

Das Programmpaket besteht aus zwei Anwendungen, einer Bibliothek und einer Hilfedatei:
Wenn du mal Lust hast das Programm zu testen dann melde dich einfach bei mir. Vielleicht reichen die jetzigen Funktionen ja bereits für Deine Anforderungen aus. ;-)

Gruß
Tino


Danny87 - Do 05.01.06 14:28

warum möchte dein chef überhaupt unbedingt, dass eure software mit Hilfe des Windows Installer verteilt wird?
welche vorteile verspricht er sich dadurch? ich benutze seit jahren InnoSetup und bin sehr zufrieden. hat nicht übermässig viele funktionen, aber auch nicht zu wenige. die funktionen die mir innosetup bietet sind sehr sinnvoll und ein besseres (freeware-)tool zum erstellen von setupdateien wirst du kaum finden.


gruss daniel


Tino - Do 05.01.06 14:54

Vorteile von Windows Installer Installationen sind zum Beispiel:
Außerdem muss eine Software durch ein MSI-Paket installiert werden, um zukünftig das Microsoft Logo "Certified for Windows 2000" zu erhalten.

Gruß
Tino


Danny87 - Do 05.01.06 15:01

hmm.... okay.
das hat mich überzeugt.


Vera - Fr 06.01.06 14:52

Hi Tino!

Das sieht doch schon ganz gut aus. Würde mich über eine Testversion von Deinem Programm freuen (am besten per E-Mail). Vielleicht können wir es hier in der Firma ja einsetzen. Dazu muss ich es aber vorher testen. ;-)

bye Vera


Martin1966 - Di 10.01.06 14:28

@Timo: Wäre es möglich, dass du mir das Programm auch mal zukommen lässt? :flehan:


digi_c - Mi 11.01.06 15:17

Also so wie ich es verstanden habe ist der einzige Grund von MSI die Problemlose Verteilung per ADS. Ich glaube bei anderen Installern müssen die Admins noch spezielle Dateien bauen.

Ich würde dir wirklich NSIS(Nullsoft Setup Installer System) ans Herz legen. Das ist von WinAMP und wirklich sehr ausgereift und hat ne Menge Tools.

Ansonsten such mal bei http://www.efb.nu nach MSI Tools.


Robert_G - Mi 11.01.06 17:49

Falls du mit dem VS.Net (>= 2003) arbeitest gäbe es da noch die Setup Projects. Die stellen sich fast komplett von alleine an dein(e) Projekt(e) ein. Auch Abhängigkeiten auf Bibliotheken/Content files werden berücksichtigt.
Ist zwar kein wirklicher Ersatz für InstallSchield & Co aber 100-mal besser als irgendwelche WiX-Vorlagen ( :mrgreen: ) runterzutippen.


Delete - Mi 11.01.06 23:37

user profile iconRobert_G hat folgendes geschrieben:
WiX-Vorlagen ( :mrgreen: )

Ich finde das gut. :mrgreen: Das Teil, das 2004 in der DP verlost wurde, das hätte mich interessiert. War auch ein gutes MSI-Installer-Tool. Ich habe nur den Namen vergessen. :( War aber eh kostenpflichtig.


Robert_G - Mi 11.01.06 23:59

user profile iconMathiasSimmack hat folgendes geschrieben:
Ich finde das gut. :mrgreen:
Ging ja auch eigentlich an dich. Ich konnte mir doch gleich denken, dass du einem WiX thread nicht widerstehen kannst. :mrgreen: Wie gates eigentlich deinen WiX Visuals? Der Anfang sah damals doch sehr nett aus. ;)
Zitat:
Das Teil, das 2004 in der DP verlost wurde, das hätte mich interessiert.
Das war InstallAware, IMHO nicht so cool wie IS...


digi_c - Do 12.01.06 09:29

Also bei uns ist ein Einzelner nur damit beschäftigt die Setups zusammenzustellen aber auch da ist immer nur Installshield am werkeln...


Delete - Do 12.01.06 11:00

user profile iconRobert_G hat folgendes geschrieben:
Wie gates eigentlich deinen WiX Visuals? Der Anfang sah damals doch sehr nett aus. ;)

Über die zwei Editoren für SharpDevelop 1.x bin ich nicht hinaus gekommen. :oops: Beim neuen #d 2 müsste ich mich wohl erst mal mit diesem MSBuild-Kram beschäftigen, weil die ganze Kompilierung von was auch immer da durch geleitet wird.


Vera - Do 12.01.06 12:11

Guten Morgen!!!!

Ich denke ehr, das die ADS Verteilung ein weiteres Argument ist. Weitere hat Tino ja bereits oben gepostet.

MSI ist meiner Meinung nach auch sehr ausgereift. Und wenn MS schafft, das komplette Office Paket damit bereits vor vielen Jahren erfolgreich zu installieren dann denke ich, dass man hier schon von "ausgereift" sprechen kann. ;-)

Auf jeden Fall werden wir MSI verwenden. Die Frage ist nur: Welches Tool wir dafür verwenden. InstallShield und Co sind einfach viel zu teuer und haben auch zu viele Funktionen. Ich will es schön einfach über ein Script machen. ;-) Ich weiß, bei InstallShield kann man die Projektdatei als XML speichern.


@Tino: Eine längere E-Mail bekommst du noch von mir. Dein Programm läuft so weit ganz gut. ;-)


bye bye! Vera!!


blah - So 19.02.06 10:15

Hi leute,

ich werf da noch mal den Advanced Installer in die runde :P
http://www.advancedinstaller.com/

evtl. sagt der ja dem einen oder anderen zu.

MfG blah


Vera - Fr 03.03.06 10:03

Danke für Deine Antwort.

Das Programm habe ich mir auch mal angeschaut. Ich meine, dass man damit keine eigenen Dialog erstellen konnte. Bin mir allerdings nicht mehr ganz sicher warum das Programm von meiner Liste gestrichen wurde. :gruebel:

Bye, Vera!