我使用IExpress作为自我提取器。我想阻止文件从临时位置删除。有可能吗?
如果没有,那么任何其他自我提取器可以做同样的事情吗?
答案 0 :(得分:3)
使用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
执行,这是不好的。