Basis Skript für die Installation von VFP-Programmen mit InnoSetup

Da das mitgelieferte InstallShield Express zunehmend Probleme machte, wurde ich vor die Aufgabe gestellt ein neues Setup unter InnoSetup zu erstellen:

Herausgekommen ist dabei folgendes Basis-Skript, welches vorwiegend von den Ideen/Anregungen der folgenden Seite gespeist ist:

http://fox.wikis.com/wc.dll?Wiki~InnoSetup~VFP (englisch)

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{CE1C964D-2660-4526-A437-E3C57262750A}
AppName=MyApp
AppVerName=MyApp 1.0
AppCopyright=Copyright © 2009 Musterfirma
AppPublisher=Musterfirma
AppPublisherURL=http://www.musterfirma.de
AppSupportURL=http://www.musterfirma.de
AppUpdatesURL=http://www.musterfirma.de
DirExistsWarning=Auto
DefaultDirName={pf}\myapp-folder
DefaultGroupName=MyApp
LicenseFile=C:\…\lizenz.rtf
InfoBeforeFile=C:\…\readme.rtf
OutputDir=C:\…\InnoSetup\MyApp\output
OutputBaseFilename=myapp-setup.exe
SetupIconFile=C:\…\InnoSetup\myapp\myapp.ico
Compression=lzma
SolidCompression=yes
PrivilegesRequired=admin

[Languages]
Name: „german“; MessagesFile: „compiler:Languages\German.isl“

[Tasks]
Name: „desktopicon“; Description: „{cm:CreateDesktopIcon}“; GroupDescription: „{cm:AdditionalIcons}“; Flags: unchecked
Name: „quicklaunchicon“; Description: „{cm:CreateQuickLaunchIcon}“; GroupDescription: „{cm:AdditionalIcons}“; Flags: unchecked

[Files]
; Programm Bestandteile, nicht OCX/DLL
Source: „C:\…\InnoSetup\myapp\myapp.exe“; DestDir: „{app}“; Flags: ignoreversion

; Microsoft Visual C++ 7.1 Runtime DLL
Source: C:\…\Innosetup\Myapp\winsystem\msvcr71.dll; DestDir: {sys}; Flags: restartreplace uninsneveruninstall sharedfile

; Microsoft Visual FoxPro 9.0 Runtime Support Libraries
;bezgl. GDIPlus gab es unterschiedliche Angaben, ob dieses in System oder unter Shared abgelegt werden sollte. Da ;ich Problem mit System hatte, habe ich mich für das Shared-Verzeichnis entschieden

Source: C:…\Myapp\winsystem\gdiplus.dll; DestDir: {cf}\Microsoft Shared\VFP; Flags: sharedfile uninsneveruninstall restartreplace
Source: C:\Programme\Common Files\Microsoft Shared\VFP\vfp9r.dll; DestDir: {cf}\Microsoft Shared\VFP; Flags: regserver sharedfile uninsneveruninstall restartreplace
Source: C:\Programme\Common Files\Microsoft Shared\VFP\vfp9t.dll; DestDir: {cf}\Microsoft Shared\VFP; Flags: sharedfile uninsneveruninstall restartreplace
Source: C:\Programme\Common Files\Microsoft Shared\VFP\vfp9renu.dll; DestDir: {cf}\Microsoft Shared\VFP; Flags: sharedfile uninsneveruninstall restartreplace
Source: C:\Programme\Common Files\Microsoft Shared\VFP\vfp9rdeu.dll; DestDir: {cf}\Microsoft Shared\VFP; Flags: sharedfile uninsneveruninstall restartreplace

; Microsoft HTML Help Runtime Files for Visual FoxPro 9.0
Source: C:\Programme\Common Files\Microsoft Shared\VFP\foxhhelp9.exe; DestDir: {cf}\Microsoft Shared\VFP; Flags: sharedfile uninsneveruninstall restartreplace
Source: C:\Programme\Common Files\Microsoft Shared\VFP\foxhhelpps9.dll; DestDir: {cf}\Microsoft Shared\VFP; Flags: regserver sharedfile restartreplace uninsneveruninstall
; NOTE: Don’t use „Flags: ignoreversion“ on any shared system files

; Microsoft Report Runtime Files for Visual FoxPro 9.0
Source: C:\Programme\Common Files\Microsoft Shared\VFP\ReportPreview.app; DestDir: {cf}\Microsoft Shared\VFP; Flags: sharedfile uninsneveruninstall restartreplace
Source: C:\Programme\Common Files\Microsoft Shared\VFP\ReportOutput.app; DestDir: {cf}\Microsoft Shared\VFP; Flags: sharedfile uninsneveruninstall restartreplace
Source: C:\Programme\Common Files\Microsoft Shared\VFP\ReportBuilder.app; DestDir: {cf}\Microsoft Shared\VFP; Flags: sharedfile uninsneveruninstall restartreplace

[Icons]
Name: „{group}“; Filename: „{app}\myapp.exe“; WorkingDir: „{app}“; comment: „Mein Programm“
Name: „{commondesktop}\Myapp“; Filename: „{app}\myapp.exe“; Tasks: desktopicon
Name: „{userappdata}\Microsoft\Internet Explorer\Quick Launch\Myapp“; Filename: „{app}\myapp.exe“; Tasks: quicklaunchicon

[Run]
Filename: „{app}\myapp.exe“; Description: „{cm:LaunchProgram,MyApp}“; Flags: nowait postinstall skipifsilent

; NOTE:  notwendig, damit das Hilfesystem richtig registriert wird
Filename: {cf}\Microsoft Shared\VFP\foxhhelp9.exe; Parameters: /regserver

Da im Rahmen der Anwendung auch weitere OCX-Dateien bzw. Runtimes (u.a. Visual Basic) zum Einsatz kommen, bin ich hier wie folgt vorgegangen:

Ich habe einfach die entsprechenden Dateien über InstallShield – Express zusammengesucht. Da InnoSetup es nicht erlaubt diese direkt aus einem System-Verzeichnis einzuspeisen, habe ich für all diese Dateien ein eigenes System-Unterverzeichnis innerhalb meines Setup-Verzeichnisses angelegt und diese Dateien hierhin kopiert.

Zudem habe ich sichergestellt, dass die Versionsnummern dieser Dateien (DLL/OCX) dem entsprechen, was auch unter InstallShield Express angegeben ist.

Als Beispiel einer OCX, habe ich folgende Angaben + Flags gesetzt

Source: C:\…\Innosetup\Myapp\winsystem\comctl32.ocx; DestDir: {sys};  Flags: regserver restartreplace uninsneveruninstall sharedfile

Für die VB-Runtime:

Source: C:\…\Innosetup\Myapp\winsystem\msvbvm60.dll; DestDir: {sys}; OnlyBelowVersion: 0,6; Flags: regserver restartreplace uninsneveruninstall sharedfile onlyifdoesntexist

Die fertige Installation habe ich dann unter Windows XP (Virtual PC) sowie mutig ;) auch auf meinem Entwicklunsgrechner getestet – jeweils ohne Probleme, mit Ausnahme eines Fehlers, der aber bereits durch die Deinstallation der Installshield Express Installation aufgetreten ist. Installshield hatte zwar eine Komponente, in diesem Fall BBlistView entfernt, aber leider nicht die Registry-Keys gelöscht. Als Folge kam es dann bei der Installation mit InnoSetup zu einem Fehler. Ein einfaches Ignorieren löste das Problem aber, da die Komponente ja bereits eingetragen, also nur kopiert werden musste.

Werbung & Infos:

Bitdefender Black Friday-Angebot-2021


Verwandte Themen: