Inno Setup安装后清除包含特定扩展名的文件

时间:2017-01-17 12:35:04

标签: inno-setup

我在使用inno设置安装后遇到了剩余的问题。

我在Flags: deleteafterinstall部分设置了[FILE],它运行良好,直到我添加了一些代码,在安装时将目标文件夹重命名为不同的名称,然后Inno Setup将所有文件保留下来那个看起来很乱的国旗。

作为解决方案,我创建了这个简单的批处理文件,我在安装结束时通过[CODE]部分运行。

Clean_Up.bat:

del /s /f *.rej
del /s /f *.orig
del /s /f sed*
del /s /f *.patch
del /s /f *.exe
del /s /f *.bat

我以这种方式复制这批:

[FILE]
Source: "{#CompPath}\BatchFiles\Clean_Up.bat"; DestDir: "{app}\subfolder"; Flags: deleteafterinstall

我用它启动它:

[RUN]
Filename: "{app}\res_mods\Clean_Up.bat"; flags: runhidden;

问题是这个批次假设还要清理.batch文件,结果是CleanUp.bat也被删除了,这是不需要的。

我想通过将其复制到{app}而不是{app}\subfolder来解决此问题,并将批处理文件编辑为:

del /s /f subfolder\*.rej
del /s /f subfolder\*.orig
del /s /f subfolder\sed*
del /s /f subfolder\*.patch
del /s /f subfolder\*.exe
del /s /f subfolder\*.bat

然而,它给了我错误:The system cannot find the file specified.

有人可以告诉我如何让它发挥作用吗?我认为最好的方法是用pascal代码重写这个批处理并放在代码部分,但我不知道如何。

1 个答案:

答案 0 :(得分:1)

当您运行批处理文件时,子文件夹已重命名。所以你需要使用新名称:

del /s /f res_mods\*.rej
del /s /f res_mods\*.orig
...

或使用WorkingDir parameter在子文件夹中运行批处理文件:

[Run]
Filename: "{app}\clean_up.bat"; WorkingDir: "{app}\res_mods"; Flags: runhidden;

然后您可以使用原始批处理文件:

del /s /f *.rej
del /s /f *.orig
...

您也可以直接在del部分直接执行[Run]命令来避免使用批处理文件:

[Run]
Filename: "{cmd}"; Parameters: "/C del /s /f *.rej"; WorkingDir: "{app}\res_mods"; \
    Flags: runhidden
Filename: "{cmd}"; Parameters: "/C del /s /f *.orig"; WorkingDir: "{app}\res_mods"; \
    Flags: runhidden
...

虽然就个人而言,当您重命名[Code]部分中的文件夹时,我也会删除代码中的文件。为了保持一致性。