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。)