在InnoSetup中安装后删除文件

Ele*_*ios 12 installer inno-setup file

我需要在安装完成后删除一些文件.

我正在使用[RUN]部分调用CMD来删除文件,但是我想通过使用InnoSetup代码来改进删除而不是批处理然后我看到了[InstallDelete]部分,但这会在[RUN]部分之前删除文件所以...在[RUN]部分后我可以做些什么来删除文件?

这是我的脚本:

#define InstallerName "VirtualBox-4.2.16-r86992-MultiArch_amd64.msi"
#define ExtensionName "Oracle_VM_VirtualBox_Extension_Pack-4.2.16-86992.vbox-extpack"

[Setup]
AppName=VirtualBox
blah blah blah...
blah blah blah...

[Files]
Source: {tmp}\*; DestDir: {tmp}; Flags: deleteafterinstall recursesubdirs createallsubdirs ignoreversion

[Run]
Filename: {tmp}\{#InstallerName}; Parameters: "/passive /norestart ADDLOCAL=VBoxApplication INSTALLDIR=""{app}"""; StatusMsg: Instalando VirtualBox...; Flags: shellexec RunHidden WaitUntilTerminated
Filename: {tmp}\xml.exe; Parameters: "ed --inplace -N N=""http://www.innotek.de/VirtualBox-settings"" --update ""//N:ExtraDataItem[@name='GUI/UpdateDate']/@value"" --value never ""{%userprofile}\.virtualbox\virtualbox.xml"""; StatusMsg: Instalando VirtualBox...; Flags: RunHidden WaitUntilTerminated
Filename: {app}\VBoxManage.exe; Parameters: "extpack install --replace ""{tmp}\{#ExtensionName}"""; StatusMsg: Instalando Extension Pack...; Flags: RunHidden WaitUntilTerminated
Filename: {app}\virtualbox.exe; Description: {cm:LaunchProgram,VirtualBox}; Flags: shellexec postinstall unchecked skipifsilent nowait

[InstallDelete]
Name: {commondesktop}\Oracle VM VirtualBox.lnk; Type: files
Name: {commonstartmenu}\Programs\Oracle VM VirtualBox; Type: filesandordirs
Run Code Online (Sandbox Code Playgroud)

Ser*_*yuz 13

您可以在CurStepChanged事件处理程序的安装后步骤中删除文件

[Code]
procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssPostInstall then begin
    DeleteFile(ExpandConstant('{commondesktop}\Oracle VM VirtualBox.lnk'));
    ..
Run Code Online (Sandbox Code Playgroud)

  • @Elektro-AFAIK,不。但是我认为脚本中的“代码”是InnoSetup代码的一部分,但这是我的看法。 (2认同)
  • 您可以从“[Run]”部分执行例如“del”命令,但在这种情况下,您几乎无法控制该命令是否成功。我个人更喜欢这种使用“[Code]”部分的方式。 (2认同)

Mir*_*ral 12

如果您正在尝试删除临时文件(例如,子安装所需):

您安装的任何内容{tmp}将在安装结束时自动删除.

如果{tmp}由于某种原因你无法安装,那么你可以使用条目deleteafterinstall上的标志[Files].

如果您正在尝试删除该子安装程序创建的文件,那么您应该联系供应商或检查他们的文档,看看是否有一个命令行参数,您可以通过该参数来禁止首先安装该项目.通常应该有桌面图标等可选项.