Inno Setup - 在安装过程后删除安装程序

Pro*_*gon 1 inno-setup

作为我的游戏复制保护的一部分,安装程序需要在安装过程后自行删除。这段代码:

[Code]
procedure MyAfterInstall();
begin
  DeleteFile('F:\TEST_SETUP\setup.exe');
end;
Run Code Online (Sandbox Code Playgroud)

...什么都不做,因为安装程序运行。是否有解决方案可以运行“命令行”或 cmd 来获取安装程序的完整路径(它可能在客户端光盘上的任何地方)并在安装后将其删除?

小智 5

在您的 [CODE] 部分添加以下方法,您就全部设置好了...

[CODE]
procedure CurStepChanged(CurStep: TSetupStep);
var
  strContent: String;
  intErrorCode: Integer;
  strSelf_Delete_BAT: String;
begin
  if CurStep=ssDone then
  begin
    strContent := ':try_delete' + #13 + #10 +
          'del "' + ExpandConstant('{srcexe}') + '"' + #13 + #10 +
          'if exist "' + ExpandConstant('{srcexe}') + '" goto try_delete' + #13 + #10 +
          'del %0';

    strSelf_Delete_BAT := ExtractFilePath(ExpandConstant('{tmp}')) + 'SelfDelete.bat';
    SaveStringToFile(strSelf_Delete_BAT, strContent, False);
    Exec(strSelf_Delete_BAT, '', '', SW_HIDE, ewNoWait, intErrorCode);
  end;
end;
Run Code Online (Sandbox Code Playgroud)