我在使用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代码重写这个批处理并放在代码部分,但我不知道如何。
答案 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]
部分中的文件夹时,我也会删除代码中的文件。为了保持一致性。