PDA

Показать полную графическую версию : [решено] Запуск установки .Net Frameowrk на этапе RunOnceEx


Aquila
18-05-2012, 22:45
Здравствуйте. Сделал аддон - DotNetRun (http://forum.oszone.net/post-1905165-1636.html). Но мне сообщили то что он не совершенен - пост 1649 (http://forum.oszone.net/post-1910352-1649.html). Я исправил, но что то не так, из рабочей системы всё работает на ура, а когда ставлю систему выдаёт ошибку о том что такого файла не существует.
Вот мой файлик cmd:
@echo off
COPY "DOTNET.EXE" "%SYSTEMROOT%\DOTNET.EXE"
SET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx
SET i=100

REG ADD %KEY% /V TITLE /D "Пожалуйста, подождите..." /f

REG ADD %KEY%\%i% /VE /D "Microsoft .NET Framework" /f

REG ADD %KEY%\%i% /V 1 /D "%SYSTEMROOT%\DOTNET.EXE" /f
REG ADD %KEY%\%i% /V 2 /D "cmd.exe /C DEL /F /Q %SYSTEMROOT%\DOTNET.EXE" /f
SET /A i+=1
EXIT
Помогите мне форумчане, кто чем сможет.

Сlassic
18-05-2012, 23:43
COPY "DOTNET.EXE" "%SYSTEMROOT%\DOTNET.EXE" »
А это, как это ? DOTNET.EXE в DOTNET.EXE ?

Aquila
18-05-2012, 23:46
Сlassic, да, сам не пойму откуда это взял, но работает. Не думаю что из за этого такая проблема.

Сlassic
19-05-2012, 00:23
Не думаю что из за этого такая проблема. »
А что мешает изменить и проверить ?

boss911
19-05-2012, 02:07
А это, как это ? DOTNET.EXE в DOTNET.EXE ? »
А что вас смущает в этой команде? Происходит копирование файла в другую директорию с указанием нового (в данном случае старого) имени файла. Вполне допустимая команда. Ничего криминального в этом нет, причина не в этом.

Aquila

Попробуйте копировать не в корень %SYSTEMROOT%, а в подкаталог, соответственно прописать установку из этого подкаталога.

из рабочей системы всё работает на ура, а когда ставлю систему выдаёт ошибку о том что такого файла не существует. »
А разве RunOnceEx не рабочая система? Я не совсем понял, что значит, работает на рабочей системе и что выдает о не нахождении файла. Если запустить RunOnceEx.cmd вручную, DOTNET.EXE появляется в %SYSTEMROOT%? Если перезагрузить компьютер, установка из RunOnceEx начинается?

Aquila
19-05-2012, 02:29
Попробуйте копировать не в корень %SYSTEMROOT%, а в подкаталог, соответственно прописать установку из этого подкаталога. »
Что мне это даст?

Я не совсем понял, что значит, работает на рабочей системе »
На рабочей, значит на уже установленной, у которой произведено больше 2 загрузок.

что выдает о не нахождении файла »
Обычную команду. Процитировать не могу: данный файл не найден, ищите в поисковике...

Если запустить RunOnceEx.cmd вручную, DOTNET.EXE появляется в %SYSTEMROOT%? »
да

Если перезагрузить компьютер, установка из RunOnceEx начинается? »
Если система "рабочая" то да.

Сlassic
19-05-2012, 03:27
На скорую проверил на виртуалке, вместо DOTNET.EXE подложил AIMP.EXE. Установка проходит. RunOnceEx.cmd запускается из cmdlines.txt, все это: AIMP.EXE, RunOnceEx.cmd в папке $OEM$. Содержимое RunOnceEx.cmd

@echo off
COPY "AIMP_2.61.583.exe" "%SYSTEMROOT%\"
SET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx
SET i=100

REG ADD %KEY% /V TITLE /D "Пожалуйста, подождите..." /f

REG ADD %KEY%\%i% /VE /D "Microsoft .NET Framework" /f

REG ADD %KEY%\%i% /V 1 /D "%SYSTEMROOT%\AIMP_2.61.583.exe" /f
REG ADD %KEY%\%i% /V 2 /D "cmd.exe /C DEL /F /Q %SYSTEMROOT%\AIMP_2.61.583.exe" /f
SET /A i+=1
EXIT

boss911
19-05-2012, 05:55
Aquila

Этап RunOnceEx на только что свежо установленной ОС уже считается рабочей ОС, второй или последующие ее запуски не делает ее "живее". А вот запуск батника происходит не на “живой” ОС, а установка DOTNET.EXE будет происходить на “живой”.

Запуск вручную батника на рабочей ОС доказывает, что все нормально, судя из ваших слов, посему можно предположить, что на этапе Т13 не копируется DOTNET.EXE, раз оно ругается на отсутствия файла. Уберите в батнике @echo off и перед EXIT пропишите PAUSE, на этапе Т13 в консоли будет видно, как отработали команды, все ли прошло нормально, например, был ли скопирован DOTNET.EXE.

Я просто в свое время для подобных целей использовал $OEM$\cmdlines.txt.

Aquila
19-05-2012, 13:37
boss911, Сlassic,
Папкой $OEM$ не хочется пользоваться, лучше пропишу так, только не в cmdlines.txt, а напрямую в реестр через батник, аддон всё же.

на этапе Т13 не копируется DOTNET.EXE »
Да, задача из задач, может обратиться напрямую к cmd.exe?
cmd.exe /C COPY "DOTNET.EXE" "%SYSTEMROOT%\"

Petya V4sechkin
19-05-2012, 16:30
задача из задач
Ну и?

Уберите в батнике @echo off и перед EXIT пропишите PAUSE, на этапе Т13 в консоли будет видно, как отработали команды, все ли прошло нормально, например, был ли скопирован DOTNET.EXE

COPY "DOTNET.EXE" "%SYSTEMROOT%\DOTNET.EXE"
А так?
COPY /Y "%~dp0DOTNET.EXE" %SYSTEMROOT%\

Aquila
19-05-2012, 17:54
COPY /Y "%~dp0DOTNET.EXE" %SYSTEMROOT%\ »
У меня такая идейка как раз и возникла, спасибо, искал что прописать чтобы файл ловился из того же раздела где и файл .cmd.
Щас всё проверю.

Aquila
20-05-2012, 17:59
Большое всем спасибо!
В итоге вот что получилось:
@echo off
COPY /Y "%~dp0DOTNET.EXE" %SYSTEMROOT%\
SET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx
SET i=100

REG ADD %KEY% /V TITLE /D "Пожалуйста, подождите..." /f

REG ADD %KEY%\%i% /VE /D "Microsoft .NET Framework" /f

REG ADD %KEY%\%i% /V 1 /D "%SYSTEMROOT%\DOTNET.EXE" /f
REG ADD %KEY%\%i% /V 2 /D "cmd.exe /C DEL %SYSTEMROOT%\DOTNET.EXE" /f
SET /A i+=1
EXIT Тема закрыта.




© OSzone.net 2001-2012