Hallo,
ich muss beim Ausführen einer Installation wissen, wie alt die Installation ist - dazu will ich das aktuelle Systemdatum mit dem Erstellungsdatum der Installation vergleichen. (Vergleich mittels jeweils primitiver Umrechnung des Datums in y*365+m*30+d).
nur wie komme ich an das Erstelldatum der Installation?
Auslieferung als PackageForTheWeb, das aus dem Internet heruntergeladen werden kann oder auf CD ausgeliefert wird. Das Datum dieser Datei kann sich also ändern, wenn die Datei z.B. heruntergeladen wurde.
Irgendwelche Ideen?
Danke im Voraus und ein schönes Wochenende!
Stefan G.
This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Datum, an dem die Installation erzeugt wurde
Started by
Gini
, Oct 24 2003 16:40
4 replies to this topic
Posted 27 October 2003 - 08:59
Bitte schau dir mal die Funktion an, vielleicht hilft Sie dir ja. Diese Funktion verwende ich um zu prüfen ob das Setup noch ausgeführt werden kann:
external prototype CheckAblauf(number, number, number);
/////////////////////////////////////////////////////////////////////////////////////////////////
// Function CheckAblauf
// Prüft ob die Zeit für die Installation abgelaufen ist
/////////////////////////////////////////////////////////////////////////////////////////////////
function CheckAblauf(nTag, nMonat, nJahr)
string svResult, svMonth, svDay, svYear, strAblauf;
number nvResult, nvYear, nvMonth, nvDay;
LIST DateList;
begin
strAblauf = "Nein";
// Aktuelles Datum ermitteln
GetSystemInfo( DATE , nvResult , svResult );
DateList = ListCreate(STRINGLIST);
StrGetTokens(DateList,svResult,"-");
// Monat, Tag und Jahr ermitteln
ListGetFirstString(DateList,svMonth); ListGetNextString (DateList,svDay); ListGetNextString (DateList,svYear);
// Datum in numerische Werte umwandeln
StrToNum(nvYear,svYear); StrToNum(nvMonth,svMonth); StrToNum(nvDay,svDay);
// Berechnung ob Version noch gültig
if (nvYear > nJahr) then
strAblauf = "Ja";
endif;
if (nvYear = nJahr) then
if (nvMonth > nMonat) then
strAblauf = "Ja";
else
if (nvMonth = nMonat) then
if (nvDay > nTag) then
strAblauf = "Ja";
endif;
endif;
endif;
endif;
// Soll SETUP abgebrochen werden?
if strAblauf = "Ja" then
NumToStr(svDay, nTag); NumToStr(svMonth, nMonat); NumToStr(svYear, nJahr);
MessageBox(svDay + "." + svMonth + "." + svYear + @TIME_EXP,WARNING); Exit;
endif;
end;
external prototype CheckAblauf(number, number, number);
/////////////////////////////////////////////////////////////////////////////////////////////////
// Function CheckAblauf
// Prüft ob die Zeit für die Installation abgelaufen ist
/////////////////////////////////////////////////////////////////////////////////////////////////
function CheckAblauf(nTag, nMonat, nJahr)
string svResult, svMonth, svDay, svYear, strAblauf;
number nvResult, nvYear, nvMonth, nvDay;
LIST DateList;
begin
strAblauf = "Nein";
// Aktuelles Datum ermitteln
GetSystemInfo( DATE , nvResult , svResult );
DateList = ListCreate(STRINGLIST);
StrGetTokens(DateList,svResult,"-");
// Monat, Tag und Jahr ermitteln
ListGetFirstString(DateList,svMonth); ListGetNextString (DateList,svDay); ListGetNextString (DateList,svYear);
// Datum in numerische Werte umwandeln
StrToNum(nvYear,svYear); StrToNum(nvMonth,svMonth); StrToNum(nvDay,svDay);
// Berechnung ob Version noch gültig
if (nvYear > nJahr) then
strAblauf = "Ja";
endif;
if (nvYear = nJahr) then
if (nvMonth > nMonat) then
strAblauf = "Ja";
else
if (nvMonth = nMonat) then
if (nvDay > nTag) then
strAblauf = "Ja";
endif;
endif;
endif;
endif;
// Soll SETUP abgebrochen werden?
if strAblauf = "Ja" then
NumToStr(svDay, nTag); NumToStr(svMonth, nMonat); NumToStr(svYear, nJahr);
MessageBox(svDay + "." + svMonth + "." + svYear + @TIME_EXP,WARNING); Exit;
endif;
end;
Posted 28 October 2003 - 19:05
Danke - zum Vergleich hatte ich allerdings schon eine Funktion.
ich hätte gern eben beim Ausführen das Erstelldatum abgefragt und im Script nur einen Zeitraum hinterlegt. Bis ich da eine Lösung habe definiere ich es in einem ablaufdatum.h...
Gruß,
Gini
ich hätte gern eben beim Ausführen das Erstelldatum abgefragt und im Script nur einen Zeitraum hinterlegt. Bis ich da eine Lösung habe definiere ich es in einem ablaufdatum.h...
Gruß,
Gini
Posted 29 October 2003 - 11:34
Mir ist keine Funktion bekannt, die das erstelldatum zurück liefert. Ich würde in einem Post-Build-Schritt (bei den Medien-Einstellungen) das aktuelle Datum in eine Datei schreiben und zur Laufzeit dort auslesen.
Wenn du automatisiert über die Kommandozeile kompilierst kannst du das Datum auch als Preprozessor-Define auf der Kommandozeile übergeben.
Wenn du automatisiert über die Kommandozeile kompilierst kannst du das Datum auch als Preprozessor-Define auf der Kommandozeile übergeben.
Stefan Krüger
InstallSite.org twitter facebook
Posted 11 June 2004 - 14:06
QUOTE (Gini @ 2003-10-24 15:40) |
... nur wie komme ich an das Erstelldatum der Installation? ... |
GetFileInfo(SRCDIR^"setup.exe",FILE_DATE,nvResult,sVersionsDate );
PackageForTheWeb entpackt sich ja normalerweise in das Temp-Verzeichnis und beim Installationsstart ist das dann das SRCDIR.
Die entpackte setup.exe, die darin liegt hat eigentlich immer das Datum wo das Setup kompiliert wurde. Alternativ geht auch das <Produktname>.msi File welches auch das Datum ändert, wenn während des Builds nur das InstallShield Script geändert wurde, also ohne daß Dateien neu mit kompiliert wurden.