Nachdem Sie die Entwicklung einer Anwendungssoftware abgeschlossen haben, müssen Sie auch einen standardisierten Installationsprogramm für die Software erstellen .
Viele Zeitungsartikel stellen viele Methoden zur Erstellung von Installationsprogrammen für InstallationShield und andere Tool -Software ein Einzelstil kann Start -up -Methoden und Verknüpfungen nicht flexibel steuern. Tatsächlich sind die verschiedenen Laufschritte des Installationsprogramms relativ festgelegt, sodass wir dem Installateur selbst schreiben können. Das Folgende ist eine detaillierte Einführung in die Verwendung von Delphi zum Schreiben eines Installationsprogramms mit eigenen Software -Eigenschaften.
In verwandten Magazinen wurden mehrere Prinzipien, die Installateure erreichen müssen, wie z. B. einmalige Konfiguration, nicht ausführlich beschrieben. Hier führen wir hauptsächlich mehrere Hauptprozesse in das Schreiben des Installateurs vor:
1. Erstellen Sie das Programm, das in Ressourcendateien installiert werden muss
Schritt 1: Schreiben Sie die Skriptdatei myres.rc -Ressourcen, die von Notepad usw. geschrieben werden können.
Mydbsrc mydbsrcFile c: /resdemo/mynbdb.mdb
Mydbjet mydbjetfile c: /resdemo/mdac_typ.exe
Mydbapp mydbappfile c: /resdemo/tnbdemo.exe
7001 ICON C: /resdemo/setup.ico
Schritt 2: Verwenden Sie BRCC32, um Ressourcendatei Myres.res zu kompilieren und zu generieren.
BRCC32.exe Myres.rc
2. Schreiben Sie den Installationsprogrammcode
Schritt 1: Fügen Sie die Anweisung {$ r mymyres.res} zur setup.dpr -Datei hinzu, damit die Ressourcendatei beim Kompilieren der Datei enthalten ist.
Schritt 2: Schreiben Sie die Hintergrundschnittstelle zur Installation des Programms.
// Der Farbgradienteneffekt des Grenzflächenfarbs wird erreicht, indem benachbarte rechteckige Blöcke nacheinander mit Gradientenbürsten bürsten.
// Die Installationsschnittstelle mit anderen Spezialeffekten kann ebenfalls realisiert werden.
var i, j: Ganzzahl;
DCT: Trect;
Beginnen
Form1.WindowState: = wsmaximized;
J: = Form1.Width;
// Formehöhe erhalten
für i: = 0 bis 255 tun
// Legen Sie hier einen Farbwert in RGB () fest
Beginnen
Canvas.brush.color: = rgb (0,0,255-i);
// Die Pinselfarbe des Rechtecks wird jedes Mal gezeichnet (links, oben, rechts, unten)
// DCT: = RECT (i*2,0, (i+1)*2, j);
DCT: = RECT (0, I*2, J, (i+1)*3);
// rechteckiger Bereich für jedes Bürsten
Canvas.FillRect (DCT);
Form1.canvas.textrect (DCT, 30,40, '' Ningbo University Courseware Management System v1.0 '');
// Farbe füllen
Ende;
Ende;
Schritt 3: Erstellen Sie das Hauptprogrammarbeitsverzeichnis
// Verzeichnisumgebung und Konfigurationsdateien festlegen
Wenn nicht DirectoryExists (edtdir.text), dann dann
// Wenn MessageBox (getFocus, '' Dieses Verzeichnis existiert nicht, wird es erstellt? '', '', 'Frage' ', 1) = idok dann dann
versuchen
Erzwungene Directories (edtdir.text);
außer
MessageBox (getFocus, '' Verzeichnis erstellen fehlgeschlagen! '', '' Information '', 0);
Ausfahrt;
Ende
// sonst beenden;
// modalResult: = mrok;
Schritt 4: Generieren Sie die Hauptprogrammkonfigurationsdatei
Variable:
var
SetupInfo: Tinifile;
// Konfigurieren Sie den aktuellen Datenarbeitspfad und wählen Sie den Treiber in Bezug auf Ihr System aus.
setupinfo: = Tinifile.create (trim (frmPathSelect.edtdir.text)+''/setup.ini '');
SetUpInfo.Writestring ('' Access '', '' WorkdbPath '', Trim (frmPathSelect.edtdir.text)+''/mynbdb.mdb '' ';
SetUpInfo.Writestring ('' Access '', '' BackdbPath '', Trim (frmPathsele.edtdir.text)+''/mynbdbbak.mdb '');
setupInfo.free;
Schritt 5: Stellen Sie die relevanten Dateien aus der Ressourcendatei wieder her.
Variable:
var
Res: Tresourcestream;
Resname, Resnewname: String;
RegFile: TreginiFile;
Beginnen
// Datenbankdatei aus der Ressourcendatei wiederherstellen
resnewname: = trim (frmPathSelect.edtdir.text)+''/mynbdb.mdb '';
Resname: = '' mydbsrc '';
res: = tresourcestream.create (Hinstance, Resname, pchar ('' mydbsrcFile '');
res.savetofile (resnewname);
res.Free;
// die Hauptprogrammdatei aus der Ressourcendatei wiederherstellen
resnewname: = trim (frmPathSelect.edtdir.text)+''/tnbdemo.exe '';
Resname: = '' mydbapp '';
res: = tresourcestream.create (Hinstance, Resname, pchar ('' mydbappFile '');
res.savetofile (resnewname);
res.Free;
// Schreiben Sie den Hauptnamen- und Ausführungsdateinameninformationen in der Registrierung
// verwendet beim Upgrade des Hauptprogramms.
RegFile: = Treginifile.create;
RegFile.rootkey: = hKey_local_machine;
RegFile.Writestring ('' Software/MYNB '', '' Exepath '', Trim (resnewname));
RegFile.Free;
Ende
Schritt 6: Installieren Sie den Datenbank -Treiber (entsprechend SETP 4)
// den Datenbanktreiber installieren
var
cmdlinePchar: Array [0..120] von char;
Startupinfo: tstartupinfo;
processInfo: tprocessinformation;
Beginnen
screen.cursor: = crhourglass;
strpCopy (cmdlinepchar, trim (frmPathSelect.edtdir.Text)+'' /mdac_typ.exe /q '');
fillChar (startupinfo, sizeof (startupinfo),#0);
mit Startupinfo tun
Beginnen
CB: = sizeof (startupinfo);
dwflags: = startf_useshowwindow oder startf_usestdHandles;
WshowWindow: = sw_hide;
Ende;
Wenn Createprocess (NIL, CMDLINEPCHAR, NIL, NIL, TRUE, 0, NIL, NIL, STARTUPINFO, ProcessInfo) dann
// einen Prozess erstellen
Beginnen
WaitForsingleObject (processInfo.hprocess, unendlich);
Ende
anders
Beginnen
Ausfahrt;
Ende;
screen.cursor: = crdefault;
DeleteFile (pChar (trim (frmPathSelect.edtdir.text)+''/mdac_typ.exe ''));
Ende;
Schritt 7: Erstellen einer Programmgruppe
Variable:
var
Smacro: String;
Szmacro: Array [0..254] von Char;
SgroupDesc, SgroupName: String;
SPROGDESC: Saite;
Sprogicon: String;
// Erstellen Sie die Hauptprogrammgruppe
// Öffnen Sie den Dialogkanal
Wenn ddeclientconv1.openlink dann
Beginnen
// Erstellen Sie eine Gruppe
SgroupDesc: = '' Ningbo University Courtsware Management System '';
SgroupName: = '' Ningbo University Courseware Management System v1.0 '';
// Makro machen
SMACRO: = '' [CreateGroup (''+SgroupDesc+'', ''+SgroupName+'')] '';
StrpCopy (Szmacro, SMACRO);
ddeclientConv1.executemacro (szmacro, false);
// Symbolbild erstellen
Sprogicon: = trim (frmPathSelect.edtdir.Text)+''/tnbdemo.exe '' ;;
SPROGDESC: = '' Ningbo University Courtsware Management System '';
SMACRO: = '' [addItem (''+sprogicon+'', ''+sprogdesc+'')] '';
StrpCopy (Szmacro, Smacro);
ddeclientConv1.executemacro (Szmacro, False);
ddeclientconv1.closselink;
Ende;
Schritt 8: Erstellen Sie eine Desktop -Verknüpfung
// verwendet Shlobj, Comobj, ActiveX;
var
tmpObject: iUunkNOWN;
tmpSlink: iShellLink;
tmppFile: ipersistfile;
PIDL: Pitemidlist;
StartupDirectory: Array [0..max_path] von char;
StartupFileName: String;
LinkFileName: Widestring;
C1: Thandle;
Beginnen
StartupFileName: = '' '' tnbdemo.exe '' '';
tmpObject: = createComObject (clsid_shelllink);
tmpSlink: = tmpObject as iShellLink;
tmppFile: = tmpObject als ipersistfile;
tmpSlink.setPath (pChar (startupFileName));
tmpSlink.setworkingDirectory (pChar (extractFilepath (startupFileName)));
ShGetSpecialFolderLocation (0, csidl_desktopDirectory, PIDL);
ShgetPathfromidList (PIDL, StartupDirectory);
LinkFileName: = startUpDirectory + '' /mynotepad.lnk '';
ShowMessage (linkFileName);
tmppFile.save (pwchar (linkFileName), falsch);
C1: = Windows.findwindowex (Windows.Findwindowex (Windows.Findwindow ('' Progman ',' 'Program Manager' '), 0,' 'Shelldll_defview' ',' '' '), 0,' 'SySlistView32' ' ',' '' ');
PostMessage (c1, wm_keydown, vk_f5,0);
PostMessage (C1, Wm_keyup, VK_F5,1 SHL 31);
Ende;
Schritt 9: Starten Sie die Maschine neu
Beginnen
ExitWindowsex (2,0);
Ende;
Das oben genannte ist der Hauptaussage des Programms, das aus meinem Entwicklungssystem herausgeschnitten und einige Win -API -Anrufe verwendet wurde. Während des Installationsprozesses können Sie einige schnelle Schnittstellen und jeden Schritt entsprechend Ihren Anforderungen erstellen.