我将创建一个自解压存档但是我在连接默认提取路径时遇到了问题。我想在与自解压存档程序相同的路径中提取我的文件。不幸的是,文件正在另一个路径中提取(C:\ Users \ computer \ AppData \ Temp \ IXP000.TMP)。是否可以设置路径?
答案 0 :(得分:4)
我无法使用IExpress找到任何直接方式,但我们可以应用一些技巧。
但首先我要指出,7-Zip的7zCon.sfx
模块之类的内容非常简单(如果你需要做的就是将档案提取到当前目录,没有问题问)。所以你可能只想尝试IExpress以外的其他东西。
无论如何,IExpress的问题在于,当我们的安装程序运行时,我们不再在原始存档的目录中;现在的目录就像%temp%\IXP000.TMP
。所以我们需要找到父进程的目录 - 有点痛苦。一旦知道了,我们就可以xcopy
将存档的内容转移到目标文件夹。
在VBScript中,它看起来像这样:
Option Explicit
Dim objShell, objWMI
Dim objCmd, intMyPid, intMyParentPid, objMyParent
Set objShell = CreateObject("WScript.Shell")
Set objWMI = GetObject("winmgmts:root\cimv2")
Set objCmd = objShell.Exec("cmd.exe")
intMyPid = objWMI.Get("Win32_Process.Handle='" & objCmd.ProcessID & "'").ParentProcessId
objCmd.Terminate
intMyParentPid = objWMI.Get("Win32_Process.Handle='" & intMyPid & "'").ParentProcessId
Set objMyParent = objWMI.Get("Win32_Process.Handle='" & intMyParentPid & "'")
objShell.Run "xcopy /y * " & """" & Left(objMyParent.ExecutablePath, _
InStrRev(objMyParent.ExecutablePath, ".exe", -1, vbTextCompare) -1) &_
"\""", 0, True
您的安装程序将是,例如:wscript extractToOriginalLocation.vbs //B
。
(受到this question答案的启发。)