Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Kennt jemand InnoSetup ? (https://www.delphipraxis.net/18159-kennt-jemand-innosetup.html)

Hansa 15. Mär 2004 17:38


Kennt jemand InnoSetup ?
 
Hi,

Installshield ist wohl nichts. Zumindest nicht ohne Schulungszentrum. 8) Scheint in C++ programmiert zu sein. :mrgreen: Innosetup führt wesentlich schneller zum Ziel. Aber da muß mehr von Hand eingestellt werden. Deshalb wollte ich mal fragen, wer das benutzt.

Alibi 15. Mär 2004 17:41

Re: Kennt jemand InnoSetup ?
 
Ich, wobei doch die Hilfe extrem gut ist, von dem Teil, hab noch nie irgendwelche andere Hilfe gebraucht.

r_kerber 15. Mär 2004 17:41

Re: Kennt jemand InnoSetup ?
 
Hallo Hansa,

Dir ist klar, dass Du mit InnoSetup die BDE nicht installieren darfst? Zum anderen wurde hierzu auch schon viel geschrieben: Hier im Forum sucheninnosetup.
BTW: Ich persönlich nutze Wise und bin damit zufrieden. Mit IS konnte ich mich auch nicht anfreunden!

MCeddy 15. Mär 2004 17:52

Re: Kennt jemand InnoSetup ?
 
Hi. Inno-Setup nutz ich auch. Ich empfehle dir mal neben dem Compiler auch noch ISTool (Inno-Setup muss installiert sein!) runterzuladen und zu installieren.
Damit kannst du dann einfacher eigene Setups für Inno erstellen. Das bietet dir nämlich kleine Assistenten, die dann den Code für Inno automatisch erstellen. Ist sogar mit deutscher Benutzeroberfläche... :wink:

Inno-Setup gibt's hier

und zu der Sache mit BDE gibt's hier nen Artikel: http://www.jrsoftware.org/iskb.php?a=bde

mfg

MCeddy02
:cheers:

Hansa 15. Mär 2004 17:53

Re: Kennt jemand InnoSetup ?
 
Zitat:

Zitat von r_kerber
Dir ist klar, dass Du mit InnoSetup die BDE nicht installieren darfst?

Uff, das hätte noch gefehlt, das die noch installiert werden muß. :-D Wieso darf man das eigentlich nicht ? :gruebel: Jetzt kommt noch Wise ins Spiel ? Ja, was mach ich denn jetzt ?

Die Anforderungen sehen so aus:

1. mehrere eigene EXE und INIs sollen kopiert werden.
2. die Datenbank (in diesem Falle Firebird)

Dann noch ein paar Icons/Bilder und alles muß im Fall der Fälle wieder restlos verschwinden.

Alexander 15. Mär 2004 17:55

Re: Kennt jemand InnoSetup ?
 
Also es funktioniert schon und eigentlich ist es glaube ich auch legal (meine ich zumindest), allerdigns haftest du für Schäden, die bei der Installation der BDE auftreten.
Alexander

r_kerber 15. Mär 2004 17:58

Re: Kennt jemand InnoSetup ?
 
Zitat:

Zitat von Hansa
Zitat:

Zitat von r_kerber
Dir ist klar, dass Du mit InnoSetup die BDE nicht installieren darfst?

... Wieso darf man das eigentlich nicht ?

Weil man die BDE nur mit Programmen installieren darf, die von Borland zertifiziert sind.
Wise ist ähnlich leistungsfähig wie InstallShield, IMHO aber entschieden einfacher zu bedienen. Was Du machen willst, kann Wise mit links :-)

Hansa 15. Mär 2004 18:06

Re: Kennt jemand InnoSetup ?
 
nur von Borland zertifizierte Programme ? :shock: Anscheinend wissen die, warum sie jedem abraten die BDE zu benutzen. :lol:

Zitat:

Zitat von r_kerber
Wise ist ähnlich leistungsfähig wie InstallShield, IMHO aber entschieden einfacher zu bedienen. Was Du machen willst, kann Wise mit links :-)

Hört sich schon mal gut an. Na denne, wenn ich schon 1 Tag mit dem InstallShield verbringe und 1 St. mit Innosetup und mehr Ergebnissen, dann guck ich mir doch auch mal das Wise an.

r_kerber 15. Mär 2004 18:18

Re: Kennt jemand InnoSetup ?
 
Wise ist aber nicht kostenlos!

Luckie 15. Mär 2004 18:25

Re: Kennt jemand InnoSetup ?
 
Eine weiter alternative wäre noch Nullsoft Scriptable Install System [NSIS] http://nsis.sourceforge.net/ Hat eine wesentlich kleiner Overhead als Inno. Dokos zu Inno und NSIS findes du bei Mathias: http://www.simmack.de/developer/doku/

moritz 15. Mär 2004 19:33

Re: Kennt jemand InnoSetup ?
 
Hallo

Wenn du willst kann ich dir den InnoScript vom BirthdayRemember schicken, der enthält recht viel (Auch Pascalcode).

Gruß

Hansa 15. Mär 2004 19:39

Re: Kennt jemand InnoSetup ?
 
@Onz: dann mache das mal. Wäre echt nett. Was hat das überhaupt mit dem Pascal - Code zu tun ? Müßte ich schon wissen.

Und Luckie, der Link ist gut. Das lese ich mir nachher noch durch, Drucker druckt schon. 8)

Wise lasse ich vorerst mal doch aussen vor. Zuerst muß ich mir mal das Simmack'sche durchlesen.

MathiasSimmack 15. Mär 2004 19:42

Re: Kennt jemand InnoSetup ?
 
Zitat:

Zitat von Hansa
@Onz: dann mache das mal. Wäre echt nett. Was hat das überhaupt mit dem Pascal - Code zu tun ? Müßte ich schon wissen.

In der aktuellen Version von Inno Setup kannst du eigenen Code schreiben. Der orientiert sich an Delphi und ist eigentlich relativ umfangreich.

Allerdings enthält meine IS-Doku nicht ein Wort dazu. ;) Mein Angebot steht noch: Wer Erfahrung damit hat, darf gern die entsprechenden Kapitel machen, und sein/ihr Name kommt dann mit ins Copyright.

moritz 15. Mär 2004 19:44

Re: Kennt jemand InnoSetup ?
 
Nimm das! :-D

Zitat:

[Setup]
AppName=BirthdayRemember
AppVerName=BirthdayRemember 6.0.3
AppPublisher=Ich
AppPublisherURL=http://www.BirthdayRemember.de
AppSupportURL=http://www.BirthdayRemember.de
AppUpdatesURL=http://www.BirthdayRemember.de
DefaultDirName={pf}\BirthdayRemember
DefaultGroupName=BirthdayRemember
InfoBeforeFile=Hinweis.rtf
WizardImageFile=WizardImageFile.bmp
ShowLanguageDialog=yes
SolidCompression=yes
WizardSmallImageFile=WizardSmallImageFile.bmp
UninstallStyle=modern
CompressLevel=9
AllowCancelDuringInstall=no
ExtraDiskSpaceRequired=10240

[Languages]
Name: "de"; MessagesFile: "deutsch.isl"; InfoBeforeFile: "Hinweis.rtf"
Name: "en"; MessagesFile: "englisch.isl"; InfoBeforeFile: "HinweisEn.rtf"

[Tasks]
Name: "desktopicon"; Description: "Ein &Desktopicon erstellen"; GroupDescription: "Zusätzliche Icons:"; Flags: unchecked
Name: "quicklaunchicon"; Description: "Ein &Quicklaunchicon erstellen"; GroupDescription: "Zusätzliche Icons:"; Flags: unchecked

[Files]
Source: "..\Executable\BirthdayRemember.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\Executable\BRCrypt.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\Executable\StandardRememberSound.wav"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\Executable\languages\*.*"; DestDir: "{app}\languages\"; Flags: ignoreversion
Source: "..\Executable\manual\*.*"; DestDir: "{app}\manual\"; Flags: ignoreversion

[INI]
Filename: "{app}\BirthdayRemember.url"; Section: "InternetShortcut"; Key: "URL"; String: "http://www.BirthdayRemember.de"

[Icons]
Name: "{group}\BirthdayRemember"; Filename: "{app}\BirthdayRemember.exe"
Name: "{group}\BirthdayRemember Hilfe"; Filename: "{app}\manual\index.html"
Name: "{group}\BirthdayRemember im Web"; Filename: "{app}\BirthdayRemember.url"
Name: "{group}\BirthdayRemember Deinstallieren"; Filename: "{uninstallexe}"
Name: "{userdesktop}\BirthdayRemember"; Filename: "{app}\BirthdayRemember.exe"; Tasks: desktopicon
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\BirthdayRemember"; Filename: "{app}\BirthdayRemember.exe"; Tasks: quicklaunchicon

[Run]
Filename: "{app}\manual\index.html"; Description: "ReadMe anzeigen"; Flags: nowait postinstall skipifsilent runmaximized shellexec
Filename: "{app}\BirthdayRemember.exe"; Description: "BirthdayRemember jetzt starten"; Flags: nowait postinstall skipifsilent

[UninstallDelete]
Type: files; Name: "{app}\languages\*.*"

[Registry]
Root: HKCU; Subkey: "Software\Microsoft\Windows\CurrentVersion\Run "; ValueName: "BirthdayRemember"; Flags: uninsdeletevalue;

[code]

procedure vLabelOnClick(Sender: TObject);
var
Dummy: Integer;
begin
InstShellExec('http://www.BirthdayRemember.de', '', '', SW_SHOWNORMAL, Dummy);
end;


function InitializeSetup(): Boolean;
var vString1,vString2: String;
begin
Result:=True;
if ActiveLanguage='de' then
begin
vString1:='BirthdayRemember läuft gerade. Bitte beenden Sie BirthdayRemember, bevor Sie das Setup starten.';
vString2:='Es kann sein, dass das Update nicht richtig ausgeführt werden kann. Wollen Sie trotzdem fortfahren?';
end else
begin
vString1:='BirthdayRemember is running at the moment. Please close BirthdayRemember and continue.';
vString2:='It could be that this update cannot be written succesfully. Continue everyway?';
end;
while FindWindowByWindowName('BirthdayRemember')<>0 do
begin
case MsgBox(vString1,mbConfirmation,MB_ABORTRETRYIGNORE ) of
idAbort: begin
Result:=False;
Break;
end;
idIgnore: if MsgBox(vString2,mbConfirmation,MB_YESNO)=idYes then
Break;
end;
end;
end;

procedure InitializeWizard();
var vLabel: TNewStaticText;
begin
vLabel := TNewStaticText.Create(WizardForm);
vLabel.Top := WizardForm.CancelButton.Top+5;
vLabel.Left := WizardForm.ClientWidth - WizardForm.CancelButton.Left - WizardForm.CancelButton.Width;
vLabel.Caption := 'http://www.BirthdayRemember.de';
vLabel.Font.Style := vLabel.Font.Style + [fsUnderLine];
vLabel.Font.Color := clBlue;
vLabel.Cursor := crHand;
vLabel.OnClick := @vLabelOnClick;
vLabel.Parent := WizardForm;
end;

function NextButtonClick(CurPage: Integer): Boolean;
begin
Result:=True
if CurPage=5 then
if DirExists(WizardForm.DirEdit.Text) and (FileExists(WizardForm.DirEdit.Text+'\BirthdayReme mber.exe') or FileExists(WizardForm.DirEdit.Text+'BirthdayRememb er.exe')) and (Not(FileExists(WizardForm.DirEdit.Text+'\BRCrypt. dll') or FileExists(WizardForm.DirEdit.Text+'BRCrypt.dll')) ) then
begin
Result:=False;
if ActiveLanguage='de' then
MsgBox('In dem Verzeichnis:'+#10#13+#10#13+WizardForm.DirEdit.Tex t+#10#13+#10#13+'ist bereits eine vorherige Version von BirthdayRemember installiert. Wenn sie BirthdayRemember 6.0.3 in dieses Verzeichnis installieren, kann es zu Datenverlust kommen. Bitte wählen Sie ein anderes Verzeichnis.'+#13#10+#13#10+'Im ReadMe finden Sie wichtige Informationen für den Import der Daten aus BirthdayRemember Version <= 5.5',MbInformation,Mb_Ok)
else
MsgBox('In the directory:'+#10#13+#10#13+WizardForm.DirEdit.Text+ #10#13+#10#13+'is already a previous version of BirthdayRemember installed. If you install BirthdayRemember 6.0.3 in this directory, entries could be deleted. Please select an other directory.'+#13#10+#13#10+'Im ReadMe finden Sie wichtige Informationen für den Import der Daten aus BirthdayRemember Version <= 5.5',MbInformation,Mb_Ok)
end;
end;

MathiasSimmack 15. Mär 2004 19:46

Re: Kennt jemand InnoSetup ?
 
Och Onz. Zwischen "schicken" und "hier abdrucken" gibt´s doch aber einen Unterschied. :roll:

moritz 15. Mär 2004 19:47

Re: Kennt jemand InnoSetup ?
 
Zitat:

Zitat von MathiasSimmack
Mein Angebot steht noch: Wer Erfahrung damit hat, darf gern die entsprechenden Kapitel machen, und sein/ihr Name kommt dann mit ins Copyright.

Wo? Wie? Wann? Was? Ich könnte dir Helfen, quatsch mich mal per ICQ an :)

Gruß

Luckie 15. Mär 2004 20:30

Re: Kennt jemand InnoSetup ?
 
Meld dich bei ihm per E-mail, er hat kein ICQ.

Hansa 18. Mär 2004 11:30

Re: Kennt jemand InnoSetup ?
 
Habe mir mal das Simmacksche Tutorial durchgelesen. Das sieht ja alles gut aus. Jedenfalls wesentlich besser, als das Installshield. Aber eine Sache vermisse ich. Vielleicht kann die hier geklärt werden : was ist, wenn ich ein Programm mitliefern will, welches selbst installiert werden muß ? Bei mir wäre das die Datenbank. Und dabei will ich keinem zumuten diese von Hand zu installieren / deinstallieren. Hinzu kommt, daß sie vielleicht schon auf dem Rechner drauf ist. Dann darf sie nicht installiert werden und auf gar keinen Fall deinstalliert. :mrgreen:

MathiasSimmack 18. Mär 2004 11:57

Re: Kennt jemand InnoSetup ?
 
Erst mal herzlichen Dank für das Lob.

Dein Problem lässt sich mit den Bordmitteln von Inno Setup eigentlich IMHO lösen. Du (nicht dein Kunde ;)) müsstest nur selbst herausfinden ob sich die Datenbank irgendwie im System verewigt. Ich meine damit typische Registry-Einträge unter "Software\<Firma>\" und solche Sachen.

Damit hättest du einen Ansatzpunkt und könntest beim Start des Setup nach eben solchen Einträgen suchen und diese dann auswerten (erwartete Datenbankversion, usw.).
Und dann kannst du ggf. die Installation dieser Datenbank von Hand (sprich: im Setup) auslösen lassen.

Hansa 18. Mär 2004 12:25

Re: Kennt jemand InnoSetup ?
 
Ui, hört sich (zumindest für mich) schwierig an. Ich glaube, ich lasse das doch besser den Enduser machen. Installation mit/ohne Datenbank. Wer die hat (Interbase/Firebird) müßte das wissen. Obwohl irgendeine Sicherheitsprüfung müßte noch rein. Das schöne Tuto muß ich aber noch genauer untersuchen. :shock: Wie ich das sehe, brauche ich da wahrscheinlich doch nur die EXE mit dem 2. Setup da einzufügen bei dem {app} oder bei ? und dann... :gruebel:

Dann hätte ich zumindest eine Version für Leute, die die Datenbank definitiv nicht haben und deshalb sowieso brauchen. So und jetzt hole ich das alles mit.

MathiasSimmack 19. Mär 2004 15:36

Re: Kennt jemand InnoSetup ?
 
Bei NSIS würde ich wie folgt vorgehen: Beim Start des Setup, wie schon erwähnt, würde ich nach Einträgen der Datenbank suchen. Wenn die nicht vorhanden sind, dann das Datenbank-Setup starten. Sind die Einträge schon vorhanden, dann würde ich versuchen, evtl. die Version der installierten Datenbank herauszufinden. Ist die älter als die, die meinem Setup beiliegt, dann würde ich wieder das Setup der Datenbank starten. Natürlich so starten, dass das Setup des Programms im Hintergrund wartet.

Ich bin sicher, das lässt sich bei Inno Setup auch machen. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz