我有一个7 zip的自解压exe,它被归档如下:
[mainfolder]
start.exe (a C++ bootstrapper)
[subfolder] (contains all my applications assemblies and executable
现在我的config.txt正在运行start.exe(通过"RunProgram"),它实际上会在[子文件夹]中运行一个可执行文件。现在,这是失败的,因为到"start.exe"启动时,[子文件夹]中的所有文件的提取仍未完成(我确实在提取位置找到了所有文件)。
另一件奇怪的事情是,如果我指定在配置文件中的子文件夹内运行exe,即"RunProgram",或者甚至我指定一个随机文本到"RunProgram),那么[子文件夹]中所有文件的提取就完成了——至少提取完成了。
如果更喜欢在[主文件夹]中运行文件,会导致[子文件夹]提取不完整,这可能是什么?请帮忙。
这是一个错误的分析,问题不在于提取。。它一直在正确地提取。但当我试图调用bootstrapper时,它曾调用另一个exe并退出,所以SFX认为该进程已经完成执行并正在删除文件。
因此,当存在来自diff应用程序的调用链时,应注意至少您启动的应用程序(通过"RunProgram"、"ExecuteFile"或任何东西..)保持活动状态,直到所有需要的应用程序退出。
一个解决方法是嵌套sfx。您首先制作一个包含所有必要文件的sfx,然后将其与引导程序和一个提取该文件的脚本嵌套在一起,并在另一个将运行该脚本的sfx中运行引导程序。
查看更多:带有7-zip的SFX:在提取文件之前,是否可以运行包含的.bat文件?