8 Replies Latest reply on Jan 25, 2013 2:18 AM by Markus.Zierer

    MSIInstallProduct und embedded Transforms

    derniwi Master
      Hallo,

      per msiexec.exe kann man bei dem Parameter TRANSFORMS auch Dateien angeben, die "irgendwie" im MSI eingebunden sind:
      msiexec.exe /i setup.msi TRANSFORMS=:1031.mst


      Das Schlüsselzeichen ist hier der Doppelpunkt vor dem 1031.mst. Wäre es nicht nett, wenn der MSIInstallProduct -Befehl auch solche Dateien erkennen würde und man diese bei auswählen könnte? Evtl. auch gesteuert über eine Variable.

      Ich habe hier gerade die zweite Anwendung, die eine solche Möglichkeit anbietet. Aktuell rufe ich den msiexec-Befehl auf, um dann die Anwendung in der gewünschten Sprache zu installieren. Alternativ kann ich auch in der Script.inc basteln, aber darf den Befehl dann nicht mehr in der Packaging Workbench bearbeiten.

      Was meint ihr?

      Gruß
      Nils
        • 1. Re: MSIInstallProduct und embedded Transforms
          Markus.Zierer Expert
          Also beim MSIInstallProduct gibts im Fenster unten den Button "Add Transform". Damit kannst Du ein Transform File angeben. Bei der Verwendung des Assistenten muss dieses jedoch tatsächlich vorhanden sein. Ansonsten erscheint ne Fehlermeldung.

          Verwendung einer Variable ist "offiziell" nicht möglich, aufgrund der Vorab beschriebenen Verhaltensweise. ABER:

          Wenn man irgendein Transform angibt, anschliessend auf den Advanced Editor wechselt und hier jetzt den Namen des Transforms gegen eine Variable austauscht, funktioniert das auch. Das hab ich schon öfters gemacht und weis daher, dass das funktioniert.
          • 2. Re: MSIInstallProduct und embedded Transforms
            derniwi Master
            Ja, das habe ich auch schon gesehen und gemacht. Ist halt leider nicht so wirklich unterstützt. Aber ich denke, ich mache mal wieder einen FR für diese "embedded" Transformationen.
            • 3. Re: MSIInstallProduct und embedded Transforms
              Markus.Zierer Expert
              Dafür brauchst du keinen FR machen, denn die Funktionalität gibt es ja bereits. Das was Du als "embedded Transform" bezeichnest ist nichts weiter als die Standardfunktionalität von MSI. Und diese Funktion wiederum ist auch über den MSIInstallProduct Befehl verfügbar. Eben durch die Möglichkeit, Transforms einbinden zu können.

              Darüber hinaus kannst Du bei MSI Paketen sogar eigene Transforms erstellen. Um damit z.B. Eingaben auf dem MSI Dialog (Lizenzschlüssel, Benutzernamen etc.) aufzuzeichnen oder Standard Installationen abzuändern usw.
              • 4. Re: MSIInstallProduct und embedded Transforms
                derniwi Master
                Folgende Überlegungen:
                1) diese speziellen Transformationen liegen nicht im Dateisystem, somit können sie über den Dialog zuerst einmal nicht verwendet werden.
                2) weiterhin muss man mit einem weiteren Tool die MSI anschauen, um herauszufinden, welche Transformationen vorhanden sind.
                3) man muss über den erweiterten Editor die Zeilen anpassen
                4) die Transformationen unterstützen aktuell keine Variablen...

                Dies sind alles Punkte, die mMn FrontRange am Befehl MSIInstallProduct verbessern könnte. Auch ein Return-Code könnte ausgewertet werden, was dann analog zu anderen Befehlen ein neues Kommand MSIInstallProductEx ergeben würde...
                • 5. Re: MSIInstallProduct und embedded Transforms
                  Markus.Zierer Expert
                  Hallo,

                  Zu 1;
                  Damit du ein Transform in einem Paket verwenden kannst, muss dieses natürlich zur Installation verfügbar sein. Daher macht es durchaus Sinn zu prüfen, ob das Transform tatsächlich verfügbar ist oder nicht. Ansonsten besteht die Gefahr, dass die Installation fehl schlägt.

                  Zu 2;
                  Stimmt so nicht. In DSM hast Du sehr wohl einen Transform Editor mit welchem Du die Tables direkt bearbeiten kannst. Ähnlich wie mit Orca. Die Frage ist, ob Du damit was Anfangen kannst. Denn für ein direktes Bearbeiten der Transform Tables, ist es unabdingbar sich ziemlich gut mit MSI auszukennen. Und das können, meiner Erfahrung nach, nur die wenigsten (ich übrigens auch nicht).

                  Zu 3;
                  Auch das ist so nicht korrekt. Der Korrekte Weg, aus FR Sicht, um dieses Problem zu lösen wäre es, über IF conditions die unterschiedlichen Transforms voneinander zu separieren. Das bedeutet dann halt, dass man je verwendeten Transform einen eigenen MSIInstallProduct Befehl hat. Wie gesagt, das wäre die "saubere" Vorgehensweise. Da ich aber ein Faules Schwein bin, und nicht 15x den gleichen Befehl nehmen will, habe ich einen "dirty" Workaround gefunden. Und der ist eben, wie beschrieben.
                  Der Punkt ist aber, man kann an dieser Stelle keine Variable verwenden und gleichzeitig Sicherstellen dass die MSI Installation klappt. Ganz einfach deswegen, weil zum Zeitpunkt der Scripterstellung gar nicht geprüft werden kann, ob überhaupt ein valides Transform vorliegt. Das bringt die Natur einer Variable mit sich. Und genau aus diesem Grund, wird diese Möglichkeit auch nicht im Befehl vorgesehen sein. Für mich ist das jedenfalls Nachvollziehbar.

                  Zu 4;
                  Natürlich nicht. Ein Transform ist ja auch kein DSM Produkt, sondern eine Technologie von MS. Und solange MS an dieser Stelle keine Variablen einführt, wird es in DSM auch keine Möglichkeit geben, so etwas zu realisieren. Das ist kein Punkt für FR oder DSM, das liegt in den Händen von MS.
                  • 6. Re: MSIInstallProduct und embedded Transforms
                    FrankScholer Master
                    Hi,

                    hört sich für mich ganz vernünftig an... mach doch einfach nen FR auf, dann wirste sehen, ob das PM das auch so sieht und den Aufwand als im guten Verhältnis zum Nutzen sieht.

                    Wenn ja, wird es (irgendwann ;-) gemacht, wenn nein, wird dein FR abgelehnt. Aber wenn FrontRange garnix davon weiß, dass die User eine bestimmte Funktionalität haben wollen / als sinnvoll erachten würden, kommt's ganz sicher nicht rein...

                    Grüße Frank
                    • 7. Re: MSIInstallProduct und embedded Transforms
                      derniwi Master
                      Hallo Markus,

                      bitte nicht auf den Schlips getreten fühlen.

                      [QUOTE=Markus.Zierer;39458]Zu 1;
                      Damit du ein Transform in einem Paket verwenden kannst, muss dieses natürlich zur Installation verfügbar sein.
                      Das trift auf ganz normale Transformationen durchaus zu. Von diesen spreche ich aber nicht. Ich habe hier min. zwei MSI-Pakete, bei denen innerhalb des MSI Transformationen enthalten sind. Diese liegen dann eben nicht direkt im Dateisystem vor, können aber trotzdem verwendet werden. Und zwar fast so, wie normale .MST. Der passende MsiExec-Befehl sieht so aus:
                      msiexec.exe /i setup.msi TRANSFORMS=:1031.mst

                      (rot markiert ist der Doppelpunkt, der eben angibt, dass die MST im MSI eingebunden ist. Orca zeigt diese nicht an)
                      Hierzu noch etwas von MS:
                      [URL="http://msdn.microsoft.com/en-us/library/windows/desktop/aa368347%28v=vs.85%29.aspx"]Embedded Transforms (Windows)
                      [URL="http://msdn.microsoft.com/en-us/library/windows/desktop/aa367576%28v=vs.85%29.aspx"]Applying Transforms (Windows)

                      Ein Beispiel für eine solche MSI wäre das ca. 21MB große Skype Setup.

                      Zu 2;
                      Stimmt so nicht. In DSM hast Du sehr wohl einen Transform Editor mit welchem Du die Tables direkt bearbeiten kannst. Ähnlich wie mit Orca.


                      Dieser kennt die "embedded transforms" leider auch nicht.

                      Wie gesagt, bin kein Besserwisser und will auch niemand meine Meinung aufzwingen, also bitte nicht persönlich nehmen. Ich wollte nur mein Problem beschreiben und suche eine praktikable Lösung, die aber wohl nur über einen FR auffindbar ist. Es muss ja kein komplett neuer Befehl werden, es kann ja durchaus eine abwärtskompatible Erweiterung geben.. aber das muss FrontRange entscheiden.

                      Gruß
                      Nils
                      • 8. Re: MSIInstallProduct und embedded Transforms
                        Markus.Zierer Expert
                        Das ist schon OK. Ich sagte ja, ich bin selbst nicht DER MSI Spezialist. Das Thema mit den embedded MSTs kannte ich bisher nicht. Jetzt bin ich wieder etwas schlauer...