vic499 Цитата: В этом варианте кода происходит только установка первого файла и больше ничего. Ни перегрузки компа, ни запуска второго файла.
Только, что проверил, перезагрузка проходит нормально, а автозапуск второго файла здесь и не предусмотрен, т.к. ты дал не достаточно информации что и для чего..., при "ручном" запуске проекта, после перезагрузки, будет запущен второй файл.
Цитата: Дело в том, что я не уверен правильно ли я указываю путь к файлу. Файл находится на болванке и путь к нему может меняться в зависимости от того в какой привод он вставлен "F" "G" или "H".
Здесь скорее всего проблема в путях - необходимо использовать относительный путь, т.е. путь необходимо указать относительно исполняемого файла проекта (autorun.exe). В AMS есть зарезервированная глобальная переменная
_SourceFolder, возвращающая путь к исполняемому файлу проекта (autorun.exe). Но есть нюанс, если сборка проекта выполнена в режиме "Web/Email executable", которая по сути будет представлять самараспаковывающийся архив (SFX), а необходимые для запуска файлы не включены в сборку, то при запуске SFX-архива он будет распакован во временную папку и соответственно
_SourceFolder вернет путь ко временной папке, а не к папке откуда был запущен SFX-архив и мы не сможем построить относительный путь к нашим файлам. Для решения этой проблемы нужно использовать ф-цию которая будет возвращать путь к SFX-архиву.
Код: -- Ф-ция определяющая путь к SFX-архиву
function GetSFXPath()
local cPath = ""; -- путь
local cArg = _CommandLineArgs[1]; -- параметр коммандной строки
if cArg then -- есть параметр
cPath = String.Right(cArg, String.Length(cArg) - 10); -- выделяем путь из параметра
if (String.Length(cPath) > 0) then -- есть путь
tPath = String.SplitPath(cPath); -- разлаживаем путь на составляющие
cPath = tPath.Drive..tPath.Folder; -- полный путь без имени файла
if (String.Right(cPath, 1)=="\\") then -- есть завершающий слэш
cPath = String.Mid(cPath, 1, String.Length(cPath)-1); -- удаляем завершающий слэш
end
_SourceFolder = cPath; -- переназначаем путь в зарезервированной переменной
end
end
end
GetSFXPath(); -- вызов ф-ции
File.Run(_SourceFolder.."\\WMP\\wmfdist11.exe", "", "", SW_SHOWNORMAL, true);
cFullPath = _SourceFolder.."\\WMP\\wmp11.exe";
Registry.SetValue(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce", "MyValue", cFullPath, REG_SZ);
System.Reboot();