我已经将 IExpress 用于自提取器。我想防止从临时位置删除文件。有没有可能?
如果没有,那么任何其他自提取器都可以做同样的事情吗?
使用 IExpress似乎无法直接使用,尽管您可以以一种笨拙的方式解决它。还有其他存档器可以直接执行此操作;WinRAR 浮现在脑海中,但我相信还有更多。
IExpress 似乎具有三种模式:
将文件提取到临时目录(似乎类似于%temp%\IXP000.TMP
),运行安装命令,运行可选的安装后命令,删除临时目录。
提取文件; 该位置必须在命令行中指定,否则将提示用户输入位置。(我看不到在向导或.sed
文件中设置提取目录的任何方法。)
创建一个.cab
文件。(但老实说,我只是使用makecab
或cabarc
......)
一种解决方法是将 IExpress 存档捆绑在IExpress 存档中;内部存档(包含您的实际文件)是仅提取类型(2),外部存档(仅包含您的内部存档)是安装程序类型(1)。外部 IExpress 存档有一个安装命令,如:
cmd /c innerArchive.exe /q /t:"%temp%\persistent"
这会将文件留在%temp%\persistent
. (在cmd /c
上执行变量扩展需要%temp%
。)
如果您确实需要运行命令来安装某些东西,则可以将其指定为安装后命令(%temp%\persistent
如果您正在运行内部存档中的文件,请参考)。同样,您可能需要cmd /c
扩展它。
另一种可能更直接的方法是一个简单的批处理文件:
@echo off
xcopy /y * "%temp%\persistent\"
rem Execute any other commands here...
然后,您只需要一个 IExpress 存档,即执行批处理文件的安装程序类型 (1)。确保你像运行它cmd /c persist.bat
- 否则它将被执行command.com
,这是不好的。