SLasH
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Код: Function OnLastProcessExit const MegaProga = "MegaSuperProga.exe" Dim FSO: Set FSO = CreateObject("Scripting.FileSystemObject") Dim Origin: Origin = GetEnvironmentVariable("TS_ORIGIN") ' В проекте папка "%drive_c%\Progs" с exe-шниками, которые нужно вынести наружу const PROG_PATH = "C:\Program Files\Data" ' Часть пути из PROG_PATH без буквы диска: \Progs Dim PROG_SUB_PATH: PROG_SUB_PATH = Mid(PROG_PATH, 3) ' Внешний cmd.exe Dim CMD_EXTERNAL: CMD_EXTERNAL = chr(34) & ExpandPath("%SystemRoot%\system32\cmd.exe") & chr(34) ' В проекте "%drive_c%\Progs\hstart.exe Dim HSTART: HSTART = PROG_PATH & "\hstart.exe" LastSlash = InStrRev(Origin, "\") SourcePath = Left(Origin, LastSlash) ExeName = Mid(Origin, LastSlash + 1, Len(Origin)) SandboxParent = GetBuildOption("SandboxPath") SandboxName = GetBuildOption("SandboxName") If SandboxParent = "." Then SandboxPath = SourcePath & SandboxName Else SandboxPath = SandboxParent & "\" & SandboxName End If ' Внешний hstart.exe: <SandBox>\Progs\hstart.exe Dim HSTART_EXTERNAL: HSTART_EXTERNAL = SandboxPath & "\hstart.exe" On Error Resume Next ' Копируем файл изнутри наружу If Not FSO.FileExists(SandboxPath & "\MegaSuperProga.ini") Then cmd = CMD_EXTERNAL & " /C copy ""C:\Program Files\Data\MegaSuperProga.ini"" " &chr(34)& SandboxPath & "\MegaSuperProga.ini" ExecuteVirtualProcess(HSTART & " /NOCONSOLE " & chr(34) & cmd & chr(34)) Do MySleep(1) Loop Until FSO.FileExists(SandboxPath & "\MegaSuperProga.ini") End If If Not FSO.FileExists(SandboxPath & "\hstart.exe") Then cmd = CMD_EXTERNAL & " /C copy ""C:\Program Files\Data\hstart.exe"" " &chr(34)& SandboxPath & "\hstart.exe" ExecuteVirtualProcess(HSTART & " /NOCONSOLE " & chr(34) & cmd & chr(34)) Do MySleep(1) Loop Until FSO.FileExists(SandboxPath & "\hstart.exe") End If If Not FSO.FileExists(SandboxPath & "\MegaSuperProga.exe") Then cmd = CMD_EXTERNAL & " /C copy ""C:\Program Files\Data\MegaSuperProga.exe"" " &chr(34)& SandboxPath & "\MegaSuperProga.exe" ExecuteVirtualProcess(HSTART & " /NOCONSOLE " & chr(34) & cmd & chr(34)) Do MySleep(1) Loop Until FSO.FileExists(SandboxPath & "\MegaSuperProga.exe") Else Exit Function End If ' Запуск из песочницы cmd = CMD_EXTERNAL & " /C " & chr(34)& SandboxPath &"\"& MegaProga & chr(34) Call WaitForProcess(ExecuteExternalProcess(HSTART_EXTERNAL & " /NOCONSOLE " & chr(34) & cmd & chr(34)), 0) FSO.FileDelete(SandboxPath &"\"& MegaProga) End Function '--[ Пауза ]-------------------------------------------------------------------- Function MySleep(interval) Dim i,j For i = 1 To 20000000*interval j = 1 Next End Function |
| Всего записей: 723 | Зарегистр. 08-10-2002 | Отправлено: 01:34 06-06-2014 | Исправлено: SLasH, 02:54 06-06-2014 |
|