![]() |
reg.exe - как нежелательное имя для скрипта?
Не могу понять в чём я ошибся, но скрипт запускается многократно вплоть до зависания.
Сам код ничего особенного не представляет: Код:
ProgressOn("MyProg...", "") Ещё одна фитча, то что у меня reg.exe прописан на удаление в реестре в PendingFileRenameOperations, хотя это тоже как бы не причём. Причём это сразу не проявилось, толи после кампиляции au3 в exe, вообщем какая-то странность! |
Ничего не понимаю! Имя файла тут тоже не причём. Запускается скрипт рекурсивно, будто бы я такое написал
bat.cmd: Код:
bat.cmd на отдельном скрипте. |
Цитата:
У меня этот скрипт естественно выдаёт ошибку запуска MyProg.exe. |
Сначала запускается приложение MyProg.exe, потом оно закрывается через ProcessClose()
и файл MyProg.exe удаляется, после чего на его место копируется обновлённая версия MyProg.exe. Это нужно было для того чтобы в реестр записать установки, так как новая версия MyProg.exe этого зделать не может, так как она из апдейта идёт. Вообщем подмена такая хитрая. Ну буду думать дальше что за трабла там... Может с кампиляцией что-то не так? У меня всегда варианты запуска установленны повсюду: 1. HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\MyProg.exe 2. @SystemDir & "\MyProg.cmd" Однако, ShellExecute() явно указывает на рабочую папку, причём циклический запуск нигде не предполагается. Вот сейчас ещё подумалось, может само приложение MyProg.exe так устроенно зачем-то изнутри... Тогда автоит не причём если так. Ладно, ОК! |
Цитата:
P.S reg это системная утилита, возможно этот самый MyProg.exe пытается запустить эту команду (консольную утилиту reg.exe), и в первую очередь ищет не в системе, а как раз в рабочем каталоге. |
Я нашёл причину! Всётаки это здесь было...
[HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\MyProg.exe] @="C:\I\Apps\MyProg\MyProg.exe" Для корректности первого запуска я все ссылки установил на запуск скрипта, а не самой программы. После исполнения скрипт сам поправит ссылки на приложение как положено. Тоесть после инсталяции у меня было так [HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\MyProg.exe] @="C:\I\Apps\MyProg\Script.exe" Ну а далее что видно из скрипта замена: Код:
RegWrite("HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\MyProg.exe", "", "REG_SZ", @ProgramFilesDir & "\MyProg\MyProg.exe") из под ShellExecute() Хотя по большому счёту это баг то ли в автоит, то ли в Ms API. Ну не совсем баг, а как бы недочёт. =) --- Я как-то нагуглил ваш автиоит форум, там обсуждение было FileDelete(@ScriptName), у меня это чётко работает, может это в новых версиях автоит улучшили? Или всётаки лучше через cmd /k delete ....ping ... делать? :) У меня на асме есть ещё решение через PendingFileRenameOperations реестра... Правда с перезагрузкой. Код:
include '%fasm%\win32ax.inc' |
Цитата:
P.S Тема решена? |
Creat0R, а что даст название программы, я вовсе не скрывал этого!?
Просто какая разница калькулятор, блокнот или Samplitude.exe это будет? Конечно я не прав что сразу достаточно информации не предоставил, но я и сам гадаю что там было. Однако сейчас понял, нельзя было скрипт сюда прописывать: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Sam.exe Вот сейчас ещё один момент проверил, оказывается Run() работает правильно невзирая на реестр. Ну собственно ShellExecute() привязан к оболочке по своей сути, а часть реестра App Paths, это тоже привязка к оболочке насколько я понимаю. --- FileDelete(@ScriptName) не работает, я зря радовался, беру слова обратно. --- Тема решена! :) ![]() |
Цитата:
|
Время: 18:55. |
Время: 18:55.
© OSzone.net 2001-2025