- Сообщения
- 3,565
- Репутация
- 632
Всем привет. Возможно, мой вопрос больше касается работы ОС, чем autoit.
Проект: файлы упаковываются в архивы, потом всё это добро упаковывается в Инно Сетап. При запуске Инно Сетап распаковывает часть файлов во временную папку и запускает "autoit3.exe file.a3x". Последний файл создает графическое окно autoit. Автоматически ищет путь к определенной папке. Далее в окне идет выбор файлов для распаковки. В это время Инно сетап ждет список файлов. Используется Mutex. И при нажатии кнопки "установить" (распаковка дополнительных файлов из Инно Сетап), процесс Инно сетап в режиме "приостановлен"(в диспетчере задач). Всё зависает. Если сделать выбора пути вручную, то зависания нет. У некоторых и это не помогает.
Если запустить файл autoit из временной папку вручную, то зависаний нет. Решил что проблема в Инно Сетап(последняя версия)
Использовал другой вариант - работает только autoit, извлекает из себя файлы и запускает "autoit3.exe file.a3x". Опять зависание. Если запустить вручную из папки, то работает без проблем. Но если создают батник и запускаю "autoit3.exe file.a3x", то опять зависание.
Теперь важный момент: за несколько лет работы проекта такого не наблюдалось. Да и у меня на компах все работает отлично и изумительно до сих пор. Эта проблема возникла у некоторых пользователей. Малое количество. Как сказал один из них, более чем в 90% код работает у всех. Проблема в ОС? Разные там сборки с урезанным функционалом?
Почему система приводит родительский процесс в состояние "приостановлен"(Suspend)?. Причем, в этом режиме родительский процесс начинает напрягать процессор компа.
Код программы не выкладываю, ибо там куча строк и без компиляции он не работает.
Могу лишь привести код Инно Сетап. Но там ничего необычного
Проект: файлы упаковываются в архивы, потом всё это добро упаковывается в Инно Сетап. При запуске Инно Сетап распаковывает часть файлов во временную папку и запускает "autoit3.exe file.a3x". Последний файл создает графическое окно autoit. Автоматически ищет путь к определенной папке. Далее в окне идет выбор файлов для распаковки. В это время Инно сетап ждет список файлов. Используется Mutex. И при нажатии кнопки "установить" (распаковка дополнительных файлов из Инно Сетап), процесс Инно сетап в режиме "приостановлен"(в диспетчере задач). Всё зависает. Если сделать выбора пути вручную, то зависания нет. У некоторых и это не помогает.
Если запустить файл autoit из временной папку вручную, то зависаний нет. Решил что проблема в Инно Сетап(последняя версия)
Использовал другой вариант - работает только autoit, извлекает из себя файлы и запускает "autoit3.exe file.a3x". Опять зависание. Если запустить вручную из папки, то работает без проблем. Но если создают батник и запускаю "autoit3.exe file.a3x", то опять зависание.
Теперь важный момент: за несколько лет работы проекта такого не наблюдалось. Да и у меня на компах все работает отлично и изумительно до сих пор. Эта проблема возникла у некоторых пользователей. Малое количество. Как сказал один из них, более чем в 90% код работает у всех. Проблема в ОС? Разные там сборки с урезанным функционалом?
Почему система приводит родительский процесс в состояние "приостановлен"(Suspend)?. Причем, в этом режиме родительский процесс начинает напрягать процессор компа.
Код программы не выкладываю, ибо там куча строк и без компиляции он не работает.
Могу лишь привести код Инно Сетап. Но там ничего необычного
[Setup]
OutputBaseFilename=
OutputDir=
SetupIconFile=
VersionInfoCompany=
VersionInfoCopyright=
VersionInfoDescription=
VersionInfoProductName=
VersionInfoProductTextVersion=
VersionInfoProductVersion=
VersionInfoTextVersion=
VersionInfoVersion=
CreateAppDir=no
Compression=lzma2/ultra
SolidCompression=yes
DisableStartupPrompt=yes
DisableWelcomePage=yes
DisableProgramGroupPage=yes
DisableDirPage=yes
DisableReadyMemo=yes
DisableReadyPage=yes
DisableFinishedPage=yes
Uninstallable=no
AppName=''
AppVersion=''
PrivilegesRequired=poweruser
OutputBaseFilename=
OutputDir=
SetupIconFile=
VersionInfoCompany=
VersionInfoCopyright=
VersionInfoDescription=
VersionInfoProductName=
VersionInfoProductTextVersion=
VersionInfoProductVersion=
VersionInfoTextVersion=
VersionInfoVersion=
CreateAppDir=no
Compression=lzma2/ultra
SolidCompression=yes
DisableStartupPrompt=yes
DisableWelcomePage=yes
DisableProgramGroupPage=yes
DisableDirPage=yes
DisableReadyMemo=yes
DisableReadyPage=yes
DisableFinishedPage=yes
Uninstallable=no
AppName=''
AppVersion=''
PrivilegesRequired=poweruser
Код:
var
ResultCode: Integer;
i: Integer;
b: Integer;
aStrings: TArrayOfString;
function InitializeSetup: Boolean;
begin
if CheckForMutexes('jmpack_ltd') then exit;
if CheckForMutexes('jmpack_install_mod') then exit;
CreateMutex('jmpack_install_mod');
ExtractTemporaryFile('7za.exe');
ExtractTemporaryFile('AutoIt3.exe');
ExtractTemporaryFile('bass.dll');
ExtractTemporaryFile('bck0.png');
ExtractTemporaryFile('bck_0.png');
ExtractTemporaryFile('chk.ico');
ExtractTemporaryFile('close12.png');
ExtractTemporaryFile('END.png');
ExtractTemporaryFile('fileprjt.a3x');
ExtractTemporaryFile('fl.png');
ExtractTemporaryFile('INST.png');
ExtractTemporaryFile('jmpack.ico');
ExtractTemporaryFile('Mini.png');
ExtractTemporaryFile('P1.png');
ExtractTemporaryFile('P2.png');
ExtractTemporaryFile('P3.png');
ExtractTemporaryFile('page0.jmp3');
ExtractTemporaryFile('page1.jmp3');
ExtractTemporaryFile('page2.jmp3');
ExtractTemporaryFile('page3.jmp3');
ExtractTemporaryFile('page4.jmp3');
ExtractTemporaryFile('page5.jmp3');
ExtractTemporaryFile('page6.jmp3');
ExtractTemporaryFile('rd.ico');
ExtractTemporaryFile('S1.png');
ExtractTemporaryFile('S2.png');
ExtractTemporaryFile('unchk.ico');
ExtractTemporaryFile('uninst.ico');
ExtractTemporaryFile('unmod.a3x');
ExtractTemporaryFile('unrd.ico');
ExtractTemporaryFile('youtube.png');
SaveStringToFile(ExpandConstant('{tmp}\path.txt'), ExpandConstant('{srcexe}'), True);
if Exec(ExpandConstant('{tmp}\AutoIt3.exe" fileprjt.a3x"'), '', '', SW_SHOW, ewNoWait, ResultCode) then
begin
sleep(5000)
i:= 1
while i > 0 do begin
sleep(100)
if not CheckForMutexes('jmpack_ltd') then exit;
if CheckForMutexes('jmunpack7z') then
begin
LoadStringsFromFile(ExpandConstant('{tmp}\path.txt'), aStrings)
for b:= 0 to GetArrayLength(aStrings) - 1 do ExtractTemporaryFile(aStrings[b]);
CreateMutex('jmpack_end_unzip');
while i > 0 do begin
sleep(100)
if not CheckForMutexes('jmpack_ltd') then exit;
end
end
end
end
else begin
MsgBox('Startup error', mbCriticalError, MB_OK);
exit;
end;
end;
[Languages]
Name: "default"; MessagesFile: "compiler:Default.isl"
[Files]
Source: "D:\Files\*"; DestDir: "{tmp}"; Flags: ignoreversion[/SPOILER]