1

自己解凍アーカイブを作成しようとしていますが、解凍のデフォルト パスとの接続に問題があります。自己解凍アーカイブ プログラムと同じパスにファイルを解凍したいと考えています。残念ながら、ファイルは別のパス (C:\Users\computer\AppData\Temp\IXP000.TMP) に展開されています。パスを設定することは可能ですか?

4

2 に答える 2

5

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

その場合、インストールプログラムは次のようになりますwscript extractToOriginalLocation.vbs //B

(この質問への回答に多少触発されました。)

于 2012-12-04T10:01:39.747 に答える
0

いつでもcmdスクリプトを使用して、特定のディレクトリ内のファイルにコード行をエコーすることができます

于 2021-10-18T23:38:14.120 に答える