[Code]
type
TSystemTime = record
wYear: Word;
wMonth: Word;
wDayOfWeek: Word;
wDay: Word;
wHour: Word;
wMinute: Word;
wSecond: Word;
wMilliseconds: Word;
end;
procedure GetLocalTime(var lpSystemTime: TSystemTime); external 'GetLocalTime@kernel32.dll';
function DateToInt(ATime: TSystemTime): Cardinal;
begin
//Converts dates to a integer with the format YYYYMMDD,
//which is easy to understand and directly comparable
Result := ATime.wYear * 10000 + aTime.wMonth * 100 + aTime.wDay;
end;
function InitializeSetup(): Boolean;
var
LocTime: TSystemTime;
begin
GetLocalTime(LocTime);
if DateToInt(LocTime) > 20121001 then //(10/1/2012)
begin
Result := False;
MsgBox('Now it''s forbidden to install this program', mbError, MB_OK);
end;
end;
这是我需要的,一个有效期的安装程序。我添加了这段代码:它在日期已经过去并且给出消息时有效,但是当日期有效时没有启动安装程序。
给出了这样的信息: InitializeSetup返回False;中止。 得到EAbort例外。 取消初始化设置。 ***设置退出代码:1
你可以帮帮我吗?感谢答案 0 :(得分:3)
当脚本中存在InitializeSetup时, result 的默认值为 false ,即如果您希望安装程序继续,则必须明确设置结果< / em>值为 true 。
我还建议您简化代码并使用内置日期例程 GetDateTimeString 。以下代码应该完成这项工作。希望这会有所帮助。
[Code]
const MY_EXPIRY_DATE_STR = '20131112'; //Date format: yyyymmdd
function InitializeSetup(): Boolean;
begin
//If current date exceeds MY_EXPIRY_DATE_STR then return false and exit Installer.
result := CompareStr(GetDateTimeString('yyyymmdd', #0,#0), MY_EXPIRY_DATE_STR) <= 0;
if not result then
MsgBox('Now it''s forbidden to install this program', mbError, MB_OK);
end;
答案 1 :(得分:1)
在IDE中运行安装程序并且InitializeSetup()
事件函数返回false时,您将收到该消息。
这不会影响编译设置。