2012-11-23 62 views
1

我将创建一个自解压存档,但我遇到了连接提取默认路径的问题。我想以自解压存档程序的相同路径提取我的文件。不幸的是,这些文件在另一个路径(C:\ Users \ computer \ AppData \ Temp \ IXP000.TMP)中解压缩。可以设置路径吗?Iexpress - 提取路径

回答

4

我找不到任何直接这样做与IExpress的方式,但有一个技巧,我们可以申请。

但首先我会指出,这对于7-Zip7zCon.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。)