Monthly Archive for April, 2010

.NET Installation Repaketieren

Seit vielen Jahren gibt es Programme, welche auf das Microsoft .NET Framework aufbauen. Deren Anzahl wächst täglich und sind dabei die klassischen 32Bit Com Objekt orientieren Applikationen zu verdrängen. Dementsprechend kommt es häufiger vor, dass eine .NET Framework Applikation repaketiert wird.

Je nach Applikation kann das interpretieren der Ressourcen sehr komplex ausfallen. Speziell dann, wenn Assemblies ins Global Assembly Cache installiert, Interop Registrationen durchgeführt, Native Images erstellt, VC++ Runtimes bereitgestellt und vielleicht noch an den .NET Securities gedreht wird.

Wer .NET Applikationen repaketiert muss die Welt deren Ressourcen verstehen lernen. Eine einfache .NET Applikation aus Sicht der .NET Ressourcen ist einfach zu repaketieren, kommen jedoch weitere .NET Ressourcengebiete dazu, dann ist ohne Grundwissen ein Überblick schwer zu erhalten.

Die .NET Ressourcen können im Grossen und Ganzen in fünf Segmente unterteilt werden:

Nicht jede .NET Applikation benötigt zwangsweise eine komplexe Integration. Im besten Falle besteht die Applikation aus privaten Assemblies und benötigt keine der dargestellten .NET Ressourcen.

Die Herausforderung in der Repaketierung besteht darin, die Ressourcen anhand des Deltas dem richtigen Ressourcen-Typ zuzuordnen und die optimale Installationsmethode zu verwenden. Wir haben uns diesem Problem angenommen und diesen Teil in den ‘Wise – MSI Blackbelt III’ Kurs eingebunden. Diesen Eintageskurs führen wir 1-2 mal pro Jahr durch. Neben dem Thema .NET werden weitere interessante Themen für Fachkräfte im Bereich der Software Paketierung besprochen.

MSI Assembly Converter

Anlässlich unserer Schwarzgurt-Paketierungsausbildung haben wir ein Tool entwickelt, dass bei repaktierten Hersteller MSI Installationen die MsiAssembly und MsiAssemblyName Tabellen in die neue Installation konvertiert. Das Tool mit der Bezeichnung MSI Assembly converter ist nun für die Öffentlichkeit freigegeben.

Download: MSI Assembly converter

Unser Konverter wird aus der Quelleinstallation alle MsiAssembly und MsiAssemblyName Einträge auslesen und diese in die eigene Installation anhand der neuen Installations-Struktur aufbereiten. Es kommt gerne vor, das die Hersteller-Installation mit GUIDs arbeitet, dessen Umsetzung in eine neue Installation sich als sehr Aufwendig erweisen kann.

Beispiel einer Hersteller MSI mit .NET Assemblies

Das Ergebnis nach der Konvertierung in die eigene Installationsdatei. Der Konverter richtet sich nach der neuen Feature und Datei-Namen der Ziel-Installation aus.

Weitere Informationen zu unserem Schwarzgurt Training und weiteren Software Paketierungsausbildungen finden Sie auf unserer Homepage: http://www.ontrex.ch

Wise Setup Capture – security restriction

Mit der aktuellen Version des Wise Package Studios erscheint ab Windows Vista beim Setup-Capture die Meldung ‘The operating system currently has a security restriction that interferes with Virtual Capture and SmartMonitor’.

Wenn der SmartMonitor und der Virtual Capture nicht verwendet werden, also nur das klassische Snap-Shot Verfahren gebraucht wird, dann kann diese Meldung mit ‘No’ ignoriert werden.
Mit folgendem Registry-Key kann diese Nachricht unterdrückt werden:
[HKCUSoftwareWise SolutionsWindows Installer EditorHideMessages]
“20153″=dword:00000006

Hinter dieser Option steht eine Sicherheitserweiterung, die mit der Vista Version von Windows eingeführt wurde. Wird der Hinweis mit ‘Yes’ beantwortet, so wird folgender Registry-Key geschrieben:
[HKLMSOFTWAREWow6432NodeMicrosoftWindows NTCurrentVersionWindows]
“LoadAppInit_DLLs”=dword:00000001

Die LoadAppInit DLLs ist eine Beriebsystem-Funktion, welche bei jedem Prozess zusätzliche DLL’s ladet. Wise Package Studio verwendet diese Funktion um die Datei HookDll.dll in den Speicher eines jeden Prozesses einzubinden. Damit wird es ermöglicht, einen Installationsprozess zu überwachen und dessen Vorgehen mit SmartMonitor oder VirtualCapture aufzuzeichnen.
HookDll.dll