Author Archives: Stefan Hotan

Wise Package Studio 8 Ankündigung

Wise Package Studio geht mit dem nächsten Upgrade in die Runde 8.

Mit Wise Package Studio 8 wird die Unterstützung von Windows 7 gewährleistest sowie die Datenbank Anbindung mit SQL Server 2008 für die Professional Edition bereit gestellt.
Weiter wurden zahlreiche kleinere Bug-Fixes behoben und am SVS Package Editor  sowie am SOE Snapshot wurde die Hand angelegt.

Das Freigabedatum wird mit Ende diesem Monat erwartet womit wir eine ausführliche Liste von den Verbesserungen sowie den Erweiterungen bekannt geben können.
Als langjähriger Wise Value Added Reseller (VAR) können wir Ihnen gerne nähere Auskunft über die neue Version von Wise Package Studio geben.

Unsere Wise Schulung ist bereits auf die neue Version angepasst und wird mit dem Tag der Veröffentlichung mit der neuen Version von Wise Package Studio durchgeführt.

MSI Patch – Feature Level 0 Effekt

Die Anzahl von Programmupdates, die auf Microsoft Windows Installer Patch-Dateien (.MSP) aufbauen, nehmen kontinuierlich zu. Dabei können Patch-Dateien auf unterschiedliche Wege ein Produkt aktualisieren.

Die folgenden Details zu einer Administrativen-Installation (Netzwerk-Installation) sind ein Bestandteil aus unserer Windows Installer Schulung ‘Schwarzgurtpaketierung’, die wir ab nächstem Jahr in unser Kursprogram aufgenommen und kürzlich als Power-Workshop im grösseren Kundenumfeld präsentiert haben.

Eine Möglichkeit der Patch-Integration ist eine Admin-Installation durchzuführen und diese mit einer Patch-Datei zu aktualisieren. Die aktualisierte Windows Installer Installation kann sowohl auf neuen Rechnern installiert werden, sowie bestehende Installationen über einen Reparatur-Zyklus auf den neuen Stand bringen.

In den meisten Fällen muss von der Original-Installation eine Admin-Installation durchgeführt werden (msiexec.exe -a datei.msi). Obwohl dies eine ‘High-Level’ Aktion ist, also eine grundlegende Windows Installer Funktion, ist dies keine Garantie dafür, dass der Software-Hersteller diese vollumfänglich unterstützt.

Ein Seiteneffekt kann die Feature Level 0 Problematik sein. Diese führt dazu, dass nicht alle Dateien extrahiert werden, da die Condition Tabelle bei einer Admin-Installation nicht abgearbeitet werden.
Es ist also vor einer Admin-Installation darauf zu achten, ob in der Feature-Tabelle ein Feature mit dem Level 0 existiert. Sollte dieses Feature-Level während einer normalen Installation geändert werden, so ist vor der Admin-Installation der Wert des Features zu erhöhen und nach der Admin-Installation wieder zurück zu stellen. Danach kann die Patch-Datei integriert werden.

condition
Mit Hilfe der Condition Tabelle kann ein Software-Hersteller während der Installation ein Feature-Level anhand von Konditionen verändern. Dies geschieht jedoch nicht während einer Admin-Installation, was zu Dateiverlusten führen kann.

Weitere Informationen zu unseren Wise Kursen sind auf unserer Schulungsseite zu finden http://www.ontrex.ch.

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”.

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

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

Unable to merge new configuration

Durch die Einführung des Dual-Token in Windows Vista müssen die Setup-Autoren bei der Erstellung von Custom Actions darauf achten, dass Aktionen, welche Änderungen an Per-Machine Ressoucen vornehmen, als In-Script (deferred) Aktionen unter dem System Kontext ausgeführt werden. Nur dadurch wird eine Aktion im Admin-Token durchgeführt.

Bei älteren Installationen kann es vorkommen, dass eine Aktion, welche mit Variablen (Properties) arbeitet, im Immediate Bereich der ExecuteSequence Tabellen ausgeführt wurden. Ab Vista werden diese zum Grösstenteil nicht mehr funktionieren, da diese nun im Standard LPU ausgeführt werden und dadurch zu wenig Rechte besitzen. Im Grunde genommen ist dies auch der richtige Ansatz, denn spätestens bei einem Self-Repair einer Installation mit Standard Benutzerrechten unter Windows XP hätte diese Aktionen das gleiche Problem wie in einem Dual-Token Umfeld.

Davon betroffen ist auch das Borland BDE Merge Module. Wenn diese Merge Module unter Windows Vista oder Windows 7 verwendet wird, so bleibt die Installation mit der Meldung ‘Unable to merge new configuration. Use BDE Amdinistrator to merge your new configuration.’ stehen. Das Fenster muss manuell geschlossen werden.

Unable to merge new configuration

Die Frage stellt sich nun, was muss getan werden, um dieses Problem zu lösen. Die Antwort jedoch fällt nicht so einfach aus.
Wenn man die Log-Datei der Installation ansieht

Doing action: BDEConfig.E966F0CB_76B3_11D3_945B_00C04FB1760A

dann wird dieses Fenster durch die BDEConfig Aktion verursacht. Die Aktion wird nach InstallFinalize im Immediate, sprich im Standard LPU ausgeführt, und dafür ist die Aktion nicht vorgesehen. Leider wurde der Support für die BDE Technologie schon seit einem Jahrzehnt eingestellt. Mittlerweile kann man sogar das Merge Module nicht mehr herunterladen, geschweige denn eine aktuelle, verbesserte Version von Borland beziehen.

Damit die Installation unter Vista ohne die Dialog-Box durchläuft, muss die Kondition in der InstallExecuteSequence Tabelle abgeändert werden. Dieser Eingriff sollte direkt im Merge Module vorgenommen werden (ModuleInstallExecuteSequence Tabelle).

BDE Config Image

Mit dem Zusatz ‘AND VersionNT < 600’ wird die Aktion nur noch unter Betriebssystemen vor Windows Vista durchgeführt.

Durch diesen Eingriff wird die BDEMERGE.INI nicht mehr abgearbeitet. Das lässt sich leider nicht verhindern. Diese Funktion muss nachgebaut, sollten Änderungen in der idapi32.cfg vorgenommen werden.

Eine Möglichkeit bietet das Wise Installation System 9, es beinhaltet Funktionen wie Add BDE Alias (Da der BDE Support eingestellt wurde, sind die BDE Funktionen in den aktuellen Versionen des Wise Installation System nicht mehr vorhanden).

Eine weitere Möglichkeit bietet die idapinst.dll. Diese DLL beinhaltet die Funktionen wie MergeCfg oder AddAlias. Die Dokumentation über diese Funktionen sind heute so gut wie unauffindbar. Mann spürt hier ganz klar, dass der Support von BDE schon lange eingestellt wurde.

Wenn nun alle Stricke reissen sollten, dann wäre eine weitere Möglichkeit das betroffene Programm zum Beispiel mit SVS oder APP-V zu virtualisieren, da dadurch eine eigenständige idapi32.cfg verwendet werden kann.

Stefan Hotan
A member of the Ontrex SPA Team