0

我已经将 IExpress 用于自提取器。我想防止从临时位置删除文件。有没有可能?

如果没有,那么任何其他自提取器都可以做同样的事情吗?

4

1 回答 1

3

使用 IExpress似乎无法直接使用,尽管您可以以一种笨拙的方式解决它。还有其他存档器可以直接执行此操作;WinRAR 浮现在脑海中,但我相信还有更多。

IExpress 似乎具有三种模式:

  1. 将文件提取到临时目录(似乎类似于%temp%\IXP000.TMP),运行安装命令,运行可选的安装后命令,删除临时目录。

  2. 提取文件; 该位置必须在命令行中指定,否则将提示用户输入位置。(我看不到在向导或.sed文件中设置提取目录的任何方法。)

  3. 创建一个.cab文件。(但老实说,我只是使用makecabcabarc......)

一种解决方法是将 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,这是不好的。

于 2012-12-04T07:29:32.780 回答