IExpress停止从临时位置删除文件

时间:2012-11-27 09:40:56

标签: c# visual-studio iexpress

我使用IExpress作为自我提取器。我想阻止文件从临时位置删除。有可能吗?

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

1 个答案:

答案 0 :(得分:3)

使用IExpress似乎不能直接,尽管你可以以笨拙的方式解决它。还有其他存档可以直接执行此操作; WinRAR让人想起,不过我确信还有更多。

IExpress似乎有三种模式:

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

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

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

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