1
我将创建一个自解压存档,但我遇到了连接提取默认路径的问题。我想以自解压存档程序的相同路径提取我的文件。不幸的是,这些文件在另一个路径(C:\ Users \ computer \ AppData \ Temp \ IXP000.TMP)中解压缩。可以设置路径吗?Iexpress - 提取路径
我将创建一个自解压存档,但我遇到了连接提取默认路径的问题。我想以自解压存档程序的相同路径提取我的文件。不幸的是,这些文件在另一个路径(C:\ Users \ computer \ AppData \ Temp \ IXP000.TMP)中解压缩。可以设置路径吗?Iexpress - 提取路径
我找不到任何直接这样做与IExpress的方式,但有一个技巧,我们可以申请。
但首先我会指出,这对于7-Zip的7zCon.sfx
模块(如果您只需要将存档解压缩到当前目录,不提问)就很容易。所以你可能只想试试IExpress以外的东西。
无论如何,IExpress的问题是,在我们的安装程序运行时,我们不再位于原始存档的目录中;当前目录现在类似%temp%\IXP000.TMP
。所以我们需要找到我们父进程的目录 - 有点痛苦。一旦知道了,我们可以将档案的内容仅仅存储到目标文件夹中。
在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。)