Ihre Anwendung soll auf einem Kundenrechner eingesetzt werden, auf dem jedoch kein Visual Basic installiert ist. Was nun? Ein Setup muss her! Aber wie erstellt man ein Setup? Das erfahren Sie in unserem Workshop. Warum ein Setup erstellen? Nachfolgendes Szenario ist sicherlich vielen bereits mehr als bekannt. Nachdem man in wochenlanger Arbeit seine Visual Basic Anwendung programmiert hat, soll diese nun endlich auch ausgeliefert werden bzw. einfach einmal zum Test auf einem "sauberen" System oder Fremdrechner installiert werden. Viele (noch unerfahrene) Entwickler glauben nun, es würde ausreichen, einfach die EXE-Datei der Anwendung auf den neuen Rechner zu kopieren. Doch weit gefehlt! Eine in Visual Basic erstellte Anwendung benötigt zur Ausführung immerdie Laufzeitdateien von VB. Des Weiteren müssen natürlich auch alle zusätzlich benutzten Komponenten (ActiveX-DLLs und OCX-Dateien) auf dem Zielrechner vorhanden und ggf. auch korrekt im System als ActiveX-Komponente registriert sein. Nur wenn alle Dateien korrekt installiert wurden, kann die Anwendung auch ordnungsgemäß ausgeführt werden. Welche Dateien gehören in ein Setup? Genau hier fangen die ersten Schwierigkeiten an! "Welche Dateien benötigt meine Anwendung?" Diese Fragen lässt sich leider nicht pauschal beantworten. In jedem Fall die VB6-Laufzeitdateien - auch bekannt als VB6-Runtimedateien. Auch wenn die VB6-Laufzeitdateien bereits auf vielen System vorhanden sind, sollten Sie - um wirklich sicher zu gehen- diese dennoch immer mit installieren. Hierbei handelt es sich um folgende Dateien:
Unter diesen aufgeführten VB6-Laufzeitdateien befinden sich Standard-DLLs, die nicht extra im System registriert werden müssen, aber auch ActiveX-Komponenten, die im System als solche registriert werden sollten. Sollten Sie in Ihrer Anwendung weitere Komponenten verwenden, z.B. die Windows-Common-Controls, das RichTextBox-Control o.a., so müssen diese Dateien ebenfalls mit ins Setup gepackt werden. Sie können sich einen kurzen Überblick über die verwendeten Komponenten schaffen, indem Sie Ihr Projekt in der VB-IDE laden und anschließend einen Blick in die Dialoge "Verweise" und "Komponenten" werfen. Oftmals benötigen externe Komponenten zusätzliche weitere Dateien, wie z.B. die MSVCRT40.DLL. Diese Dateien werden aber nicht separat in den Dialogfenstern "Verweise" und "Komponenten" aufgeführt. Meist finden Sie jedoch einen entsprechenden Hinweis in der Online-Hilfe des Herstellers. Nachfolgend ein Auszug aus der MSDN (betrifft ImageList-Control):
Viele Anbieter von Entwicklerkomponenten erstellen auch eine Abhängigkeitsdatei für die installierten Komponenten. Hierbei handelt es sich um .DEP (Dependency = Abhängigkeit) Dateien, die sich gleichen Verzeichnis befinden, wie die Komponente selbst. In der DEP-Datei sind alle Dateien aufgeführt, die für das Ausführen der Entwicklerkomponente benötigt werden. Typischer Aufbau einer DEP-Datei: [Version] Version=1.0.0.13 [sevClb32.ocx <0007>] Dest=$(WinSysPath) Date=24.04.02 Time=15:00 Version=1.0.0.13 CABFilename= CABINFFile= Uses1=MSVBVM60.DLL Uses2=OLEAUT32.DLL Uses3=OLEPRO32.DLL Uses4=ASYCFILT.DLL Uses5=STDOLE2.TLB Uses6=COMCAT.DLL Uses7=VB6DE.DLL Uses8=SEVIMCOL.DLL [SEVIMCOL.DLL <0007>] Dest=$(WinSysPath) Date=17.07.00 Time=10:00 Version=1.0.0.2 CABFilename= CABINFFile= Um also wirklich sicher zu gehen, dass Sie alle benötigten Dateien mit in das Setup packen, sollten Sie: a) in der Online-Hilfe des Herstellers nachschauen Verpackungs- und Weitergabe-Assistent Der Verpackungs- und Weitergabe-Assistent ist Bestandteil Ihrer Visual Basic Installation (ab Prof. Version). Mit diesem "Werkzeug" lassen sich Installationspakete Ihrer Anwendung erstellen, so dass Ihre Anwendung auf einem Fremdrechner installiert und korrekt ausgeführt werden kann. Der Assistent ermittelt alle von Ihrem Projekt benötigten Dateien (sofern DEP-Dateien vorhanden) und komprimiert diese in eine oder mehrere CAB-Dateien. Um den Microsoft Verpackungs- und Weitergabe-Assistenten nutzen zu können, sollten Sie Ihr Projekt zunächst kompilieren. Nach dem Start des Assistenten wählen Sie die Projektdatei aus (VBP-Datei). Um ein Setup zu erstellen müssen Sie dann den Befehl Verpacken aufrufen. Der Assistent ermittelt nun alle Dateien, die von Ihrer Anwendung benötigt werden. Hierzu "durchforstet" er die Projektdatei nach Verweisen auf externe Komponenten und listet alle gefundenen Komponenten auf. Im großen und ganzen findet der Assistent alle benötigten Dateien selbständig. Sollen weitere Dateien mit ins Setup gepackt werden, z.B. Online-Hilfe, Datendateien u. a., müssen diese manuell hinzugefügt werden. Mit Hilfe des Verpackungs- und Weitergabe-Assistenten ist ein Setup Ihrer Anwendung in relativ kurzer Zeit zusammengestellt. Das Setup selbst besteht aus folgenden Dateien:
So einfach wie sich mit dem Verpackungs- und Weitergabe-Assistent eigene Setups auch erstellen lassen - es gibt auch gravierende Nachteile:
Der Microsoft Verpackungs- und Weitergabe-Assistent eignet sich aber dennoch sehr gut, um zunächst einmal alle benötigten Dateien Ihrer Anwendung zu ermitteln. Diese Dateien werden vom Assistenten im Ordner SUPPORT zwischengespeichert. Gleichzeitig erstellt der Assistent auch eine PDM-Datei mit sämtlichen Informationen über das erstellte Setup. Die PDM-Datei wird hierbei im Projektverzeichnis Ihrer Anwendung abgelegt. Alternativen zum Weitergabe und Verpackungs-Assistenten Nachfolgend möchte ich Ihnen zwei Alternativen zum Verpackungs- und Weitergabe-Assistenten vorstellen. Beide Setup-Tools haben Ihre Vor- und Nachteile, doch präsentieren sie sich als echte Alternative zu Microsoft's Setup-Tool, und auch zu anderen, sehr teuren, kommerziellen Setup-Programmen. Z-Up Maker - der Setup-Maker Einfach zu bedienen trotz Funktionsvielfalt Import-Funktion Zusammenstellen und Ausführen des erstellten Setups Weitere Infos, sowie Download-Möglichkeit der neuesten Version von Z-Up Maker: www.zupmaker.de Freeware: Inno Setup v2.0.19 Inno Setup ist ein Freeware-Installationstool, mit dem sich ebenso professionelle und ansprechende Anwendungs-Setup-Programme erstellen lassen, wie das mit Z-Up Maker möglich ist:
Inno Setup ist völlig frei von Lizenzgebühren, egal ob Sie eine private, Freeware oder kommerzielle Anwendung damit verpacken und vertreiben! Download und Installation von Inno Setup Bevor Sie ein Setup mit Inno Setup erstellen können, brauchen Sie natürlich die Benutzeroberfläche von Inno Setup. Hierzu sollten Sie jetzt zunächst Inno Setup downloaden und installieren. Die neueste Version finden Sie im Downloadbereich der Inno Setup Homepage.Download: Inno Setup v2.0.19 Für unseren Workshop haben wir die derzeit aktuelle Version 2.0.19 herangezogen. Download der deutschen Sprachdatei Download: German-2-2.0.18.isl Weitere Sprachdateien können direkt von der Inno Setup Homepage geladen werden: Informationen über das Entwickler-Team von Inno Setup Erstellen eines eigenen Setups mit Inno Setup Nachfolgend möchte ich Ihnen Schritt für Schritt zeigen, wie sich mit Inno Setup ein Setup-Programm für die eigene Anwendung erstellen lässt.Inno Setup verfügt neben einer sehr umfangreichen Setup-Skript-Sprache auch über einen dialoggesteuerten Assistenten, mit dessen Hilfe sich bereits die meisten Einstellungen für das eigene Anwendungs-Setup festlegen lassen. Aus den vorgenommenen Angaben erzeugt Inno Setup dann automatisch ein Setup-Skript, das von Ihnen letztendlich noch an die individuellen Vorstellungen angepasst werden kann. Basisinformationen über Ihre Anwendung
Nach dem Klicken auf "Weiter" können Sie festlegen, in welches Verzeichnis Ihre Anwendung auf dem Zielsystem installiert werden soll. Standardmäßig wird "Program Files Directory" vorgegeben, d.h. \Programme. Innerhalb dieses Ordners wird dann der Ordner für Ihre Anwendung erstellt, den Sie im nachfolgenden Eingabefeld "Application Directory Name" festlegen können. Ferner können Sie bestimmen, ob der Anwender diese Verzeichnisvorgabe ändern darf oder nicht. Falls nicht, deaktivieren Sie die Einstellung "Allow user to change the application directory". Zu installierende Dateien auswählen Der nächste Schritt besteht darin, unnötige Dateien wieder aus der Dateiliste zu löschen. Suchen Sie also nach folgenden Dateien und entfernen diese aus der Liste:
Die Liste sollte jetzt nur noch die tatsächlich benötigten Dateien enthalten. Haben Sie eine Datei vergessen (z.B. die Online-Hilfe oder zusätzliche Datendateien) fügen Sie diese über die Schaltfläche "Add file(s)" jetzt noch hinzu. Klicken Sie auf Next und legen Sie anschließend die gewünschten Verknüpfungen fest:
Lizenzhinweise und ReadMe-Dateien Hiermit hätte der Inno Setup Skript-Wizard seine Arbeit erledigt. Klicken Sie auf Finish, so erstellt Inno Setup aus den im Assistenten festgelegten Angaben ein Setup-Skript und wechselt autom. in den Skript-Editor. Inno Setup Skript bearbeiten Unsere Anwendung, die wir mit dem Inno Setup verpacken möchten, verwendet folgende zusätzliche Komponenten:
Das Setup Skript, das uns der Inno Setup Assistent erstellt hat, sieht zunächst so aus: ; Script generated by the Inno Setup Script Wizard. ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! [Setup] AppName=WinChat AppVerName=WinChat 1.02 AppPublisher=Dieter Otter AppPublisherURL=http://www.tools4vb.de AppSupportURL=http://www.tools4vb.de AppUpdatesURL=http://www.tools4vb.de DefaultDirName={pf}\WinChat DefaultGroupName=WinChat AlwaysCreateUninstallIcon=yes ; uncomment the following line if you want your installation to run on NT 3.51 too. ; MinVersion=4,3.51 [Tasks] Name: "desktopicon"; Description: "Create a &desktop icon"; GroupDescription: "Additional icons:"; MinVersion: 4,4 Name: "quicklaunchicon"; Description: "Create a &Quick Launch icon"; GroupDescription: "Additional icons:"; MinVersion: 4,4; Flags: unchecked [Files] Source: "WinChat.exe"; DestDir: "{app}"; CopyMode: alwaysoverwrite Source: "WINSKDE.DLL"; DestDir: "{app}"; CopyMode: alwaysoverwrite Source: "COMCAT.DLL"; DestDir: "{app}"; CopyMode: alwaysoverwrite Source: "MSCMCDE.DLL"; DestDir: "{app}"; CopyMode: alwaysoverwrite Source: "MSCOMCTL.OCX"; DestDir: "{app}"; CopyMode: alwaysoverwrite Source: "MSVBVM60.DLL"; DestDir: "{app}"; CopyMode: alwaysoverwrite Source: "MSWINSCK.OCX"; DestDir: "{app}"; CopyMode: alwaysoverwrite Source: "OLEAUT32.DLL"; DestDir: "{app}"; CopyMode: alwaysoverwrite Source: "OLEPRO32.DLL"; DestDir: "{app}"; CopyMode: alwaysoverwrite Source: "RCHTXDE.DLL"; DestDir: "{app}"; CopyMode: alwaysoverwrite Source: "RICHED32.DLL"; DestDir: "{app}"; CopyMode: alwaysoverwrite Source: "RICHTX32.OCX"; DestDir: "{app}"; CopyMode: alwaysoverwrite Source: "STDOLE2.TLB"; DestDir: "{app}"; CopyMode: alwaysoverwrite Source: "VB6DE.DLL"; DestDir: "{app}"; CopyMode: alwaysoverwrite Source: "ASYCFILT.DLL"; DestDir: "{app}"; CopyMode: alwaysoverwrite [INI] Filename: "{app}\WinChat.url"; Section: "InternetShortcut"; Key: "URL"; String: "http://www.tools4vb.de" [Icons] Name: "{group}\WinChat"; Filename: "{app}\WinChat.exe" Name: "{group}\WinChat on the Web"; Filename: "{app}\WinChat.url" Name: "{userdesktop}\WinChat"; Filename: "{app}\WinChat.exe"; MinVersion: 4,4; Tasks: desktopicon Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\WinChat"; Filename: "{app}\WinChat.exe"; MinVersion: 4,4; Tasks: quicklaunchicon [Run] Filename: "{app}\WinChat.exe"; Description: "Launch WinChat"; Flags: nowait postinstall skipifsilent [UninstallDelete] Type: files; Name: "{app}\WinChat.url" Das ganze ist jetzt noch ziemlich "unsortiert", was aber nicht weiter tragisch ist. Wichtiger ist, dass man CopyMode entsprechend ändert: und zwar von alwaysoverwrite auf alwaysskipifsameorolder. Dies bewirkt, dass eine Datei nur dann kopiert wird, wenn eine evtl. bereits vorhandene Datei älter ist, als die zu kopierende Datei. Außerdem sollen Systemdateien bekanntlich in das Systemverzeichnis installiert werden - und nicht in das Anwendungsverzeichnis. Ändern wir demnach DestDir von {app} auf {sys} - aber nur bei den Systemdateien. Der nächste Schritt besteht daraus, festzulegen, welche Dateien explizit im System registriert werden sollen. Hierbei handelt es sich in unserem Beispiel um folgende Dateien:
Bei all diesen Einträgen fügen wir demnach noch die Flags-Eigenschaft hinzu: Source: "COMCAT.DLL"; DestDir: "{sys}"; CopyMode: alwaysskipifsameorolder; Flags: regserver noregerror Zwei Sonderfälle: Source: "STDOLE2.TLB"; DestDir: "{sys}"; CopyMode: alwaysskipifsameorolder; Flags: regtypelib noregerror Die VB-Laufzeitdateien sind häufig bereits in Benutzung, während ein Setup ausgeführt wird und können (falls in einer neueren Version vorliegend) nicht sofort ersetzt werden. Inno Setup kann solche Dateien jedoch "kennzeichnen" und sie nach einem System-Neustart ersetzen. Hierzu ist es allerdings erforderlich, dass Sie die Einträge im Skript entsprechend um einen weiteren Parameter ergänzen: Source: "OLEAUT32.DLL"; DestDir: "{sys}"; CopyMode: alwaysskipifsameorolder; Flags: restartreplace regserver noregerror Nun gibt es auch noch eine ganze Reihe von Dateien, die als gemeinsame Dateien im System gekennzeichnet werden sollen. Man spricht hier auch von SHARED-Files. Bei diesen Dateien handelt es sich um Dateien, die von unterschiedlichen Anwendungen benötigt werden, aber nur ein einziges Mal auf dem System vorhanden sind. Werden Dateien bei der Installation eines Programms als "SHARED" gekennzeichnet, so wird in der Registry der entsprechende Dateizähler um den Wert 1 erhöht. Bei der Deinstallation einer Anwendung wird der interne Dateizähler dann entsprechend um den Wert 1 verringert. Ergibt sich daraus ein Wert von kleiner 1, kann die Datei gelöscht werden, andernfalls bleibt sie weiterhin auf dem System vorhanden. Um bei unserem obigen Beispiel zu bleiben, kennzeichnen wir also noch alle gemeinsame Dateien durch den Eintrag sharedfile (im Flags-Abschnitt): Source: "MSVBVM60.DLL"; DestDir: "{sys}"; CopyMode: alwaysskipifsameorolder; Flags: sharedfile regserver noregerror Jetzt fragen Sie sich sicher, wie man feststellt, welche Dateien registriert werden müssen, in welches Verzeichnis die Dateien zu installieren sind und welche Dateien als "gemeinsame Dateien" (SHARED-Files) zu kennzeichnen sind. Das ist eine berechtigte Frage! Schauen Sie sich deshalb einmal den Inhalt der SETUP.LST an, die der Microsoft Verpackungs- und Weitergabeassistent erstellt: File1=@VB6STKIT.DLL,$(WinSysPathSysFile),,, ... File2=@COMCAT.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),, ... File3=@VB6DE.DLL,$(WinSysPath),,$(Shared), ... File4=@STDOLE2.TLB,$(WinSysPathSysFile),$(TLBRegister),, ... File5=@ASYCFILT.DLL,$(WinSysPathSysFile),,, ... File6=@OLEPRO32.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),, ... File7=@OLEAUT32.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),, ... File8=@msvbvm60.dll,$(WinSysPathSysFile),$(DLLSelfRegister),, ... ... Kurze Erläuterung:
Fazit: Ein kleines Hilfsprogramm Wenn man sich die vom Microsoft Verpackungs- und Weitergabe-Assistenten erstellte SETUP.LST so anschaut, sollte man meinen, dass es nicht allzu schwer sein dürfte, die beiden relevanten Abschnitte [Bootstrap Files] und [Setup1 Files] auszulesen und entsprechend in die für Inno Setup korrekte und verständliche Syntax umzuwandeln. Und da wir ja schließlich Programmierer sind, machen wir das jetzt auch. Wir erstellen uns ein kleines Progrämmchen, dass die SETUP.LST analysiert und den [files]-Abschnitt für das Inno Setup Skript vollautomatisch zusammenstellt. Starten Sie Microsoft Visual Basic und erstellen ein neues Projekt. Platzieren Sie aufder Form folgende Steuerelemente:
Aufbau der SETUP.LST Option Explicit ' Benötigte API Private Declare Function GetPrivateProfileString _ Lib "kernel32" Alias "GetPrivateProfileStringA" ( _ ByVal lpApplicationName As String, _ ByVal lpKeyName As Any, _ ByVal lpDefault As String, _ ByVal lpReturnedString As String, _ ByVal nSize As Long, _ ByVal lpFileName As String) As Long Der Aufruf erfolgt dann später im Programm über die benutzerdefinierte Funktion GetIniString, die Sie jetzt ebenfalls in den Codeteil der Form einfügen. Public Function GetIniString(ByVal sSection As String, _ ByVal sKey As String, _ ByVal sDefault As String, _ ByVal sINIFile As String) As String ' String aus INI-Datei auslesen Dim lResult As Integer Dim sText As String sText = Space$(256) lResult = GetPrivateProfileString(sSection, _ sKey, sDefault, sText, Len(sText), sINIFile) GetIniString = Left$(sText, lResult) End Function Auswahl der SETUP.LST Private Sub cmdOpen_Click() ' Datei auswählen On Local Error Resume Next With CommonDialog1 .CancelError = True .Filter = "Setup.lst (setup.lst)|setup.lst" .FileName = txtSetupFile.Text .ShowOpen If Err = 0 Then txtSetupFile.Text = .FileName End If End With On Local Error GoTo 0 End Sub Sobald eine Datei ausgewählt wurde, aktivieren wir die Schaltfläche cmdCreate: Private Sub txtSetupFile_Change() ' Prüfen cmdCreate.Enabled = (txtSetupFile.Text <> "") End Sub Erstellen eines Files-Eintrags für Inno Setup Private Function CreateInnoSetupLine(ByVal sLine As String, _ sInstallPath As String, _ Optional ByVal bRuntime As Boolean = False) As String Dim sFile As String Dim sPath As String Dim sRegister As String Dim sShared As String Dim sFlags As String Dim AZ As String ' Anführungszeichen AZ = Chr$(34) ' Infos ermitteln Dim sInfo() As String sInfo = Split(sLine, ",") ' Dateiname sFile = Mid$(sInfo(0), 2) ' Pfad-Konstanten umwandeln sPath = sInfo(1) sPath = Replace(LCase$(sPath), "$(winpath)", "{win}") sPath = Replace(LCase$(sPath), "$(winsyspath)", "{sys}") sPath = Replace(LCase$(sPath), "$(winsyspathsysfile)", "{sys}") sPath = Replace(LCase$(sPath), "$(msdaopath)", "{dao}") sPath = Replace(LCase$(sPath), "$(commonfiles)", "{cf}") sPath = Replace(LCase$(sPath), "$(apppath)", "{app}") ' Register? sRegister = "" If LCase$(sInfo(2)) = "$(dllselfregister)" Then sRegister = "regserver noregerror" ElseIf LCase$(sInfo(2)) = "$(tlbregister)" Then sRegister = "regtypelib noregerror" End If ' Shared? sShared = "" If LCase$(sInfo(3)) = "$(shared)" Or bRuntime Then sShared = "sharedfile" End If ' Inno Setup Flags zusammenstellen sFlags = Trim$(sRegister & " " & sShared) If bRuntime Then sFlags = Trim$("restartreplace uninsneveruninstall " & sFlags) ElseIf LCase$(Right$(sFile, 4)) = ".ocx" Then sFlags = Trim$("regstartreplace " & sFlags) End If If sFlags <> "" Then sFlags = "; Flags: " & sFlags ' Inno Setup File-Eintrag zusammenstellen sLine = "Source: " & AZ & sInstallPath & sFile & AZ & "; " & _ "DestDir: " & AZ & sPath & AZ & "; " & _ "CopyMode: alwaysskipifsameorolder" & sFlags CreateInnoSetupLine = sLine End Function Auslesen der SETUP.LST Private Sub cmdCreate_Click() ' Setup.lst auslesen Dim sLine As String Dim sInstallPath As String Dim nCount As Long Dim sINIFile As String Dim sInfo() As String ' Pfad zur SETUP.LST und den Installationsdateien sINIFile = txtSetupFile.Text sInstallPath = Left$(sINIFile, InStrRev(sINIFile, "\")) & "support\" txtFiles.Text = "[Files]" & vbCrLf ' Abschnitt [Bootstrap Files] aulesen nCount = 0 Do nCount = nCount + 1 sLine = GetIniString("Bootstrap Files", _ "File" & CStr(nCount), "", sINIFile) ' kein weiterer Eintrag... If sLine = "" Then Exit Do ' Datei-Infos ermitteln und in die korrekte Syntax ' von Inno Setup umwandeln sLine = CreateInnoSetupLine(sLine, sInstallPath, True) txtFiles.Text = txtFiles.Text & sLine & vbCrLf Loop ' Abschnitt [Setup1 Files] auslesen nCount = 0 Do nCount = nCount + 1 sLine = GetIniString("Setup1 Files", _ "File" & CStr(nCount), "", sINIFile) ' kein weiterer Eintrag... If sLine = "" Then Exit Do ' Datei-Infos ermitteln und in die korrekte Syntax ' von Inno Setup umwandeln sLine = CreateInnoSetupLine(sLine, sInstallPath) txtFiles.Text = txtFiles.Text & sLine & vbCrLf Loop End Sub Das war's. Unser kleines Hilfsprogramm ist fertig. Speichern Sie das Projekt nun und starten es anschließend. Wählen Sie dann eine vom Microsoft Verpackungs- und Weitergabe-Assistenten erstellte SETUP1.LST und klicken auf die Schaltfläche Abschnitt [Files] erzeugen. Jetzt kopieren Sie den gesamten Inhalt der TextBox in die Zwischenablage und fügen den Abschnitt dann in das Setup-Skript von Inno-Setup ein. Kompilieren und Erstellen des Setupprogramms Bevor Sie das Inno Setup Skript kompilieren, sollten Sie noch folgende Einträge im Abschnitt [Setup] hinzufügen: [Setup] MessagesFile=compiler:German-2-2.0.18.ISL DisableStartupPrompt=yes
Die englischen Texte im Abschnitt [Tasks] sollten Sie ebenfalls ändern: [Tasks] Name: "desktopicon"; Description: "Icon auf dem Desktop erstellen"; GroupDescription: "Zusätzliche Icons:"; MinVersion: 4,4 Name: "quicklaunchicon"; Description: "Icon 'Schnellstartbereich' der Taskleiste erstellen"; GroupDescription: "Zusätzliche Icons:"; MinVersion: 4,4; Flags: unchecked WICHTIG! Aus diesem Grund sollte das Setupprogramm vor dem Ausführen der Installation prüfen, ob der Anwender als Administrator angemeldet ist. Dies erreichen Sie durch folgenden Eintrag im Abschnitt [Setup]: [Setup] ... AdminPrivilegesRequired=yes ... Ist diese Einstellung nicht gesetzt und der Anwender hat keine administrativen Rechte, erscheint beim Versuch Dateien zu ersetzen eine Zugriffsverletzung. Kompilieren des Skripts Weitere Features von Inno Setup Bei den bisher beschriebenen Features handelt es sich bei weitem noch nicht um alle Möglichkeiten, die Ihnen Inno Setup bietet. Es würde auch den Rahmen dieses Workshops sprengen, wenn ich alle Features hier beschreiben würde. Weitere Features von Inno Setup sind z.B.:
All diese Möglichkeiten finden Sie ausführlich in der Inno Setup Online-Hilfe beschrieben. Unterstützung bei Fragen zu Inno Setup Ich hoffe, ich konnte Ihnen mit diesem Workshop den Ein- oder auch Umstieg in das sehr leistungsfähige Inno Setup erleichtern und wünsche Ihnen nun viel Spaß beim Erstellen Ihrer individuellen Installationsprogramme. Dieser Workshop wurde bereits 68.616 mal aufgerufen.
Anzeige
Diesen und auch alle anderen Workshops finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevISDN 1.0 Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats Januar 2025 Dieter Otter Zeilen einer MultiLine-TextBox ermitteln (VB.NET) Dieser Zipp zeigt, wie man die Zeilen einer MultiLine-TextBox exakt so ermitteln kann, wie diese auch in der TextBox dargestellt werden. sevZIP40 Pro DLL Zippen und Unzippen wie die Profis! Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. |
|||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |