Iexpress - путь извлечения

Я собираюсь создать самораспаковывающийся архив, но у меня возникла проблема с установкой пути извлечения по умолчанию. Я хотел бы извлечь мои файлы по тому же пути, что и программа самораспаковывающегося архива. К сожалению, файлы извлекаются по другому пути (C:\Users\computer\AppData\Temp\IXP000.TMP). Можно ли установить путь?

2 ответа

Я не могу найти какой-либо прямой способ сделать это с IExpress, но есть один прием, который мы можем применить.

Но сначала я укажу, что это действительно легко с чем-то вроде 7-Zip7zCon.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,

(Отчасти вдохновлен ответом на этот вопрос.)

Вы всегда можете использовать cmd-скрипт и выводить строки кода в файлы в определенных каталогах.

Другие вопросы по тегам