Inno设置:创建有效期为一年的应用程序

时间:2016-04-24 13:14:04

标签: inno-setup pascalscript

我用新代码测试我的软件。

const MY_EXPIRY_DATE_STR = '20131112'; //Date format: yyyymmdd

function InitializeSetup(): Boolean;
var
  ErrorCode: Integer;
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
    begin
    MsgBox('Now it''s forbidden to install this program', mbError, MB_OK);
end 
      if (MsgBox('Autocad will compulsory closed,so please save your drawings and then press OK', mbConfirmation, MB_OK) = IDOK) then
         begin
           ShellExec('open', 'taskkill.exe', '/f /im acad.exe','', SW_HIDE, ewNoWait, ErrorCode);
           ShellExec('open', 'tskill.exe', ' ACAD', '', SW_HIDE, ewNoWait, ErrorCode);
           Result := True;
         end
       else
         begin
           Result := False;
         end;
    end;

问题是安装程序显示错误消息(现在禁止安装此程序)但它继续安装。我希望它退出安装程序。

1 个答案:

答案 0 :(得分:3)

当你的失效条件得到满足时,你忘了从函数返回。

  if not result then
    begin
    MsgBox('Now it''s forbidden to install this program', mbError, MB_OK);
end 

应该是:

  if not Result then
    begin
      MsgBox('Now it''s forbidden to install this program', mbError, MB_OK);
      Exit;
    end;

如果没有Exit,则会执行以下语句,并可能再次将Result设置为“True”。

另请注意格式。如果你做对了,你很可能不会问这个问题。