use*_*019 1 path archive extraction iexpress
我将创建一个自解压存档,但在连接默认解压路径时遇到问题。我想在与自解压存档程序相同的路径中解压我的文件。不幸的是,这些文件正在另一个路径(C:\Users\computer\AppData\Temp\IXP000.TMP)中提取。可以设置路径吗?
我找不到使用 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
Run Code Online (Sandbox Code Playgroud)
您的安装程序将是,例如:wscript extractToOriginalLocation.vbs //B。
(受到这个问题的答案的启发。)
| 归档时间: |
|
| 查看次数: |
5346 次 |
| 最近记录: |