2012-11-23 64 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。)