Ontrex MSI Kurse hoch im Kurs

Die Ontrex-Kurse im Bereich der Windows Installer Technologie im Verbund mit Wise Package Studio erfreuen sich seit dem Zusammenkommen mit der Firma Hotan Engineering GmbH einer hohen Beliebtheit.

Mit dem Wise – MSI Grundkurs I, der monatlich durchgeführt wird, bieten wir Ihnen einen technischen Einblick in die Windows Installer Technologie und führen Sie in eine Reihe von Microsoft und Wise Package Studio Programmen ein.

Aufbauend auf dem Grundkurs bieten wir mehrmals im Jahr den Wise – MSI für Fortgeschrittene II Kurs an.

Seit nun mehr als elf Jahren werden unsere Kenntnisse und Erfahrungen, die wir mit Kundenprojekte erfahren, in unsere Schulungen eingebaut. Die Software-Paketierung bleibt, wie die Welt der Informatik, nicht stehen und passt sich an die Anforderungen der zeitgemässen Applikationen an.

Dieses Jahr haben wir sogenannte Power-Workshops zu unseren bestehenden Kursen hinzugefügt. Die Power-Workshops sind für Software-Paketierer gedacht, die das Aktuellste aus der Software-Paketierung in Erfahrung bringen wollen oder sich weiter in der Software Paketierung spezialisieren wollen.

Am 17. September findet unser nächster und neuester Power-Workshop ‘Schwarzgurt Paketieren’ statt, in dem wir weitergehende Themen der Software-Paketierung erklären und deren professionelle Handhabung aufzeigen.

Weitere Informationen zu unseren aktuellen Kursen finden Sie auf unserer Homepage unter Schulung.
Weitere Informationen und die Online-Anmeldung zum Power-Workshop ‘Schwarzgurt Paketieren’ finden Sie auf unserer Homepage unter “Events”.

Java Runtime Internet Explorer Integration testen

Bei der Abnahme oder dem Applikationtests der Java Runtime sollte man ein besonderes Augenmerk auf die verschiedenen Integrationsmöglichkeiten eines Java Applets legen.

Wer vorzugsweise seine repaketierte Runtime jeweils auf der offiziellen Java.com Seite testet kann schnell in eine Falle geraten. Der Test mag funktionieren, doch die Runtime ist nicht vollumfänglich funktionsfähig.

Der Grund hierfür  ist, das ein Java Applet  über drei verschiedene Wege initialisiert werden kann.
Bei Java.com wird nur eine Initzialisierung getestet, die über den <OBJECT> HTML Tag geht.

Ein schneller und zuverlässiger Test kann man auf folgender Seite durchführen:
http://browserspy.dk/java.php

java

Die Integration wird mittels <OBJECT> und <APPLET> Tag getestet und kann somit eine zuverlässige Aussage machen ob die Integration funktioniert.

Windows 7 Driver Kit verfügbar

Anfangs August hat Microsoft das neuste Windows 7 Driver SDK Kit veröffentlicht.

Dies beinhaltet unter anderem die neuste Version des difxapp.msm Merge Modules welches nun Unterstützung für folgende Betriebsysteme bietet:

  • Windows 7
  • Windows Vista
  • Windows XP
  • Windows Server 2008 R2
  • Windows Server 2008
  • Windows Server 2003

Downloadlink:

http://www.microsoft.com/downloads/details.aspx?FamilyID=2105564e-1a9a-4bf4-8d74-ec5b52da3d00&displaylang=en

Wir empfehlen das neuste difxapp.msm Merge Module bei der Installationserstellung zu verwenden.

Windows Installer 5.0 SDK verfügbar

Microsoft hat die RTM Version der Windows  7 SDK herausgegeben. Was bedeutet das die Windows Installer Programme wie Orca, Verbose Log Analyzer und die Validations-Dateien (.CUB) in der Version 5.0 erhältlich sind.

Die ISO Datei der Platform SDK kann per sofort herunter geladen werden.

Mit der Veröffentlichung des Windows 7 RTM Betriebsystems, ist der Windows Installer 5.0 nun auch veröffentlicht.
Wann die Windows Installer 5.0 Redistributable erhältlich ist, wurde noch nicht bekannt gegeben.

%HOMEDRIVE%%HOMEPATH% – MSI Error 1324

Es muss nicht gleich zum Windows Installer Error 1324 kommen, doch woher kommt bei einer Installation die %HOMEDRIVE%%HOMEPATH% Information?

Diese Frage und deren Auswirkungen sind Imgrunde einfach zu verstehen.

Ursache:
Die System-Variablen im Shortcut werden vom Explorer aufgelöst und die Applikation, welche in der Regel Per-Machine installiert wurde und deren Shortcut sich ebenfalls im AllUsers Profil befindet, wird das aktuelles Arbeitsverzeichnis des Benuters genommen. Damit kann der Softwarehersteller ohne grosse Mühe eine Per-Machine Installation durchführen, ohne eigene Shortcuts für jeden Benutzer erstellen zu müssen.

Wirkung:
Bei einer standard Installation von Windows wird dieses Verzeichnis direkt ins Root des aktuellen Benutzerprofils zeigen. Dieser Umstand ist nicht optimal, da keine Dateien ins Root des Benutzerprofiles geschrieben werden sollen. Eine Alternative in diesem Fall wäre %APPDATA%, sofern die Daten Roamen dürfen.

Je nach AD und GP Umgebung werden diese beiden System-Variablen auf ein Verzeichnis eines Datei-Servers umgebogen, dann sind diese Variablen durchaus gebrauchtbar.

Umsetzung nach einem Snap-Shot:
Nach einem Snap-Shot mit Wise Package Studio befindet sich der Pfad in der Directory Tabelle.

HomeDirectory

Solange dieser nur als WorkingDir in der Shortcut Tabelle verwendet wird, besteht kein Anlas diesen zu änderen.

Wenn nun jedoch dieses Verzeichnis auch noch anderweitig in der Intallation verwendet wird, dann können grössere Probleme nicht ausgeschlossen werden. Ein bekanntes Problem zeichnet sich mit dem Windows Installer Error 1324 ab.

Bei diesem Fehler muss das Problem über die Directory Tabelle gesucht und gelöst werden. Die %HOMEDRIVE%%HOMEPATH% Variablen sind nichts anderes als der ProfilesFolder Eintrag in der Directory Tabelle, welcher seit Wise Package Studio SP3 auch dem Paketierer zur Verfügung steht.

Wer diese Variablen bei einem Shorcut aus der Diretory Tabelle bekommen möchte, kann folgender Weg einschlagen:

1. Den Eintrag in der Directory Tabelle löschen, sofern nur Abhängigkeiten zum WkDir in der MSI Datei besteht.

2. Das WkDir in der Shortcut Tabelle auf eine eigene (PublicProperty) Variable verweisen.
HomeShortcut

3. Diese Variable in der Property Tabelle einrichten.
HomeProperty

Das Endresultat ist wohl gleich, doch die Bereitstellung der Daten ist verfolgt einen schöneren Weg.

Stefan Hotan
A member of the Ontrex SPA Team

Side-by-side configuration is incorrect

In letzter Zeit ist die Meldung ‘The application has failed to start because its side-by-side configuration is incorrect’ anzutreffen. Dies bei Windows Vista ohne SP2.

VistaError

Wer versucht das Problem über die Ereignisanzeige zu lösen, wird sich in den Tiefen von .Net wohl verirren.

Ich möchte hier nicht wirklich tiefgründig werden, da dieses Problem mit SP2 oder Windows 7 behoben wurde, braucht man lediglich unter Windows Vista SP1 die folgenden zwei Hotfixes zu installieren:
Windows6.0-KB958481-x86
Windows6.0-KB958483-x86

Nach der Einspielung dieser Hotfixes wird die Applikation funktionieren.

Stefan Hotan
A member of the Ontrex SPA

Repaketieren einer MSI Installation

In diesem Blog erkläre ich, welche Elemente beim Repaketieren einer MSI Installation auftauchen und wie mit diesen umzugehen ist.

Im Jahr 2004 habe ich ein Artikel auf myITforum.com mit dem Titel ‘The three biggest mistakes in Windows Installer repackaging ‘ veröffentlicht, der unter Punkt 3 beschreibt, dass es nicht falsch sein muss, eine MSI Installation zu repaketieren.

Beim Repaketieren einer MSI Datei sind auf folgende sechs Punkte Rücksicht zu nehmen:

1. Darwin Descriptoren
Diese Registry-Keys werden anhand der Advertising Tabellen erstellt und sollen nicht über die repaketierte MSI mit installiert werden, da die repaketierte MSI eigene Darwin Descriptoren generiert (sollte der Support des Advertisings gewünscht sein). Es gibt zwei Darwin Descriptoren in der Regsitry, die sich wie folgt identifizieren lassen:

In der CLSID Sektion des Classes Root Hive, erkennbar als InprocServer32 Wert
darwinclass

Oder als Command Verb in einem Programmatic Identifier (ProgID)
darwinprogid

2. Windows Installer Datei Registrationen
Jede MSI Installation registriert sich am Ende des Installationsprozesses auf dem PC. Neben der lokalen Kopie der MSI Datei werden Transformdateien, Patch Dateien und Ikonen von Shortcuts im C:WindowsInstaller Verzeichnis niedergelegt. Diese sind aus der repaketierten MSI Installation zu löschen.

installerdir

3. Windows Installer Registry Registrationen
Neben den Windows Installer Dateien werden in den folgenden Bereichen der Registry Einträge vorgenommen, die zu löschen sind:

toexclude

Weitere Registry-Einträge wie Uninstall und SharedDlls Informationen sind anhand der Repackaging Best Practices zu verwalten.

4. Advertised Shortcuts
Sollte die Hersteller MSI Installation Advertised Shortcuts erstellen, so werden diese in der repaketierten MSI Installation nicht funktionieren, da diese Binär sind und nicht interpretiert werden können.
Die Shortcuts müssen entweder manuell nachgebaut werden, oder bei der Hersteller Installation kann über die Befehlszeile ein Argument mitgegeben werden, welches anstelle von advertised Shortcuts normale Shortcuts erstellen wird. Das Argument DISABLEADVTSHORTCUTS zwingt die MSI Installation normale Shortcuts zu erstellen, welche von einem Repaketierungs-Tool interpretiert werden können.

disableadvtshortcuts

5. .NET Assemblies
Achten Sie auf Einträge in der MSIAssembly Tabelle des Hersteller MSIs, da diese aufwändig sind in CustomActions umzuschreiben. Es können alle Einträge vom Hersteller MSI kopiert und in die repaketierte MSI übernommen werden. Anpassungen sind in den meisten Fällen von Nöten, da die Komponenten-Namen und Datei-Einträge in der File Tabelle unterschiedlich ausfallen werden.
Beispiel: Die MSIAssembly Tabelle von einer Hersteller MSI
assemblyvendor

Die angepasste MSIAssembly Tabelle nach dem Repaketieren
assemblyrep
Nicht zu vergessen ist danach das Gleiche mit der MsiAssemblyName Tabelle zu tun.

6. Update Funktionalität sicherstellen
Die Sicherstellung der Kompatibilität für Major Updates, die vom Hersteller bei zukünftigen MSI Installationen erwartet wird, kann über den Produkt Code (Property) und den UpgradeCode (Property) berücksichtigt werden. Beide Werte werden während dem Repaketierungsprozess neu generiert und sollten vom originalen MSI Paket übernommen werden.

msicode

Bei der Repaketierung einer Hersteller MSI wird die Unterstützung von Hersteller-Patches (MSP Dateien) verloren gehen. MSP Dateien müssen ebenfalls repaketiert werden und mit einem geeigneten Tool wie dem Wise PatchCreationWizard von Symantec manuell erstellt werden.

Unter Berücksichtigung dieser sechs Punkte steht nun nichts mehr im Wege, eine Hersteller MSI in eine eigene MSI zu repaketieren.

Stefan Hotan
A member of the Ontrex SPA Team

RegSvr32 failed – Invalid access to memory location

Und auf einmal war sie da – Die Meldung ‘LoadLibrary .dll failed’ die nie zuvor gesehen war.

regsvr32

Das Analysieren mit dem Dependency Walker jedoch zeigt keinerlei Probleme mit dieser Datei, denn es handelt sich um eine Sicherheitserweiterung des Betriebssystemes. Die Data Execution Prevention (DEP) ist für diesen Umstand verantwortlich. DEP wurde gegen Viren und andere sicherheitsrelevanten Funktionen entwickelt. Unter anderem wird DEP die Registration von 16-bit COM Objekten verhindern.

In der Repaketierung kann dieses Problem behoben werden, indem die Self-Registration über die Registry-Tabelle durchgeführt wird.
Um die DLL oder OCX Datei wieder registrieren zu können, muss DEP konfiguriert werden. Die Konfiguration zu DEP findet man unter ‘System Properties’ – ‘Performance’.
Unter ‘Data Execution Prevention’ ist die Option ‘Turn on DEP for all programs and services except those I select:’ anzuwählen und die RegSvr32.exe im System32 Ordner zu wählen.

DataExecution Prevention

Mit dieser Einstellung kann nun die Self-Register Information ausgelesen werden und die entsprechende Registration über die Windows Installer Tabellen erfolgen. Auf diese Weise muss bei den Endanwendern keine DEP Konfiguration durchgeführt werden.

Stefan Hotan
A member of the Ontrex SPA

Schöner Wise-Scripten

Neben der Erstellung von MSI-Paketen bietet Wise Package Studio noch nützliche andere Funktionen. Ich greife heute die vergleichsweise einfache Implementierung von mächtigen Scripts mittels Wise Script heraus.

Durch die Bedienung des Editors via Drag&Drop sind syntaktische Fehler im Quellcode fast unmöglich, einfacher kann man beispielsweise Änderungen an INI-Dateien, Registry-Einträge oder Pfadvariablen automatisiert kaum vornehmen.

Durch Kompilieren des Scripts wird dann eine EXE-Datei erstellt, die ohne weitere Runtimes auf Windows-System lauffähig ist.
Einen Schönheitsfehler hat ein kompiliertes Wise Script dennoch: Den blauen Hintergrund zur Laufzeit.

Kompiliertes Wise Script mit blauem Hintergrund

Dieses Problem lässt sich umgehen, indem man das WSE-Projekt in einem beliebigen Editor, beispielsweise Notepad, öffnet und folgendes Bit “kippt”:

Wise Script in Notepad

Nachdem die vorletzte “0” in der Zeile “Windows Flags” in “1” geändert wurde, muss das WSE-Projekt gespeichert und erneut mit dem Wise Script Editor kompiliert werden.
Nun läuft die EXE-Datei ohne störenden blauen Hintergrund ab.

Wise Script ohne blauen Hintergrund

Tino John
Member of the Ontrex SPA Team

Verzögerter Start eines Dienstes dank MsiServiceConfig Tabelle

Ab Microsoft Windows Installer 5.0 kann die MsiServiceConfig Tabelle verwendet werden, um einen Dienst verzögert zu starten.
Der Service Control Manager (SCM) wurde mit dieser Option in Windows Vista erweitert.
Mit der MsiServiceConfig Tabelle können diese neuen Funktionalitäten des SCM für einen Dienst konfiguriert werden.

Einen Dienst verzögert zu starten soll helfen die Zeitspanne eines Systemstartes zu optimieren. Wenn ein Dienst nicht unmittelbar zum Zeitpunkt des System Start benötigt wird, so kann dieser zu einem späteren Zeitpunkt  gestartet werden. Ein Dienst der verzögert gestartet wird, wird innerhalb von 2 Minuten nach dem System Start gestartet. Ein Setup Autor kann nun bei einem Dienst entscheiden, ob dieser sofort zur Verfügung stehen muss, oder ob es sich um einen Dienst einer Anwendung handelt, welcher auch zu einem späteren Zeitpunkt gestartet werden kann.

Der Dienst selber wird wie gewohnt über die ServiceInstall Tabelle installiert und über die ServiceControl Tabelle gestartet, ggf. gestoppt oder gelöscht.

Sollte die MsiServiceConfig Tabelle nicht im Schema der Installation sein, so kann die Tabelle mit Orca 5.0 oder einem Setup Authoring Tool (welches die Windows Installer 5.0 Technologie unterstützt) erstellt werden.

MsiServiceConfig

Die Felder sind für einen verzögerten Start wie folgt auszufüllen:

ServiceConfigure: ist ein Identifier
Name: Name des Dienstes der in der ServiceInstall Tabelle steht, oder der Name eines bereits installierten Dienstes.
Event: 1
ConfigType: 3
Argument: 1
Component_: Name einer Komponente aus der Installation

Der nächste und auch der letzte Punkt ist dem Windows Installer mit der MsiConfigureServices Aktion mitzuteilen, dass ein Service mit den neuen Optionen zu konfigurieren ist.

MsiConfigureServices

Die MsiConfigureServices Aktion wird zwischen der InstallServices und der StartServices gestellt.

Weitere Informationen zu den neuen SCM Funktionen:
http://msdn.microsoft.com/en-us/library/bb203962(VS.85).aspx

Stefan Hotan
Member of the Ontrex SPA Team