Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Автоматическая установка приложений (http://forum.oszone.net/forumdisplay.php?f=61)
-   -   [решено] проблемы при автоматической установке .Net Framework (http://forum.oszone.net/showthread.php?t=82689)

noLove 17-04-2007 01:35 575374

проблемы при автоматической установке .Net Framework
 
берем стандартный МС архив dotnetfx.exe распаковываем его архиватором 7-zip. заходим в папку с распакованными файлами, выделяем их все и отправляем на архивирование в SFX архив программой 7zip.
после этого имеем перепакованный для наших нужд установочный архив.
теперь нам его нужно как то установить на клиентской машине так, чтобы доставить пользователю наименьшее количество хлопот - пытаемся произвести скрытую установку.
установку производит инсталлятор InnoSetup
запускаем наш перепакованный архив с параметрами
Цитата:

-o"{tmp}\DotNetInstall\" -y
эти параметры попросят sfx архив автоматически распаковаться в папку с временными файлами текущей сессии инсталятора IS во вложенную папку DotNetInstall. на все вопросы отвечать "Да".
далее. теперь нам нужно в скрытом режиме начать саму установку дотнета. запускаем dotnetinstall\setup.exe /q:a ключ /q:a скажет установщику дотнета, что он должен производить установку автоматически безовсяких вопросов.... все.... по идее все работать правильно должно, но не работает.
у пользователей после такой установки дотнет или не устанавливается вообще, или появлялись косяки.... помогите ктонибудь, может кто то сталкивался с этой проблемой уже, или кто то делал более грамотно? и еще. если вдруг в процессе установки возникает какая то ошибка, чтобы установщик дотнета ее обязательно показал.
спасибо ;)

noLove 17-04-2007 01:46 575379

заюзал поиск по данной ветке. сделал запуск установщика вот так:
Цитата:

msiexec.exe /i "{tmp}\DotNetInstall\netfx.msi" /passive
данный способ устраивает меня в принципе... только вопрос об ошибках все еще актуален. покажет ли установщик сообщение об ошибке, если таковая произойдет?

boss911 17-04-2007 01:59 575383

noLove
Цитата:

заходим в папку с распакованными файлами, выделяем их все и отправляем на архивирование в SFX архив программой 7zip.
установку производит инсталлятор InnoSetup
Пардон, а зачем такие манипуляции? Не проще ли пакануть одним SFX архивом и в скрипте SFX указать команду с ключами на запуск установщика .net (версия?) или сделать тоже самое, но посредством InnoSetup.

Быть, может, Вам воспользоваться уже перепакованными бесключевыми версиями! Так же пользуйтесь фильтром!

noLove 17-04-2007 11:10 575492

дело в том, что этот sfx архив не поставляется вместе с инсталлятором основной программы. в процессе установки если надо, IS его скачивает и работает с ним.
7zip sfx архив не умеет по дефолту запускать исполняемые файлы. знаю что есть дополнения к нему, но это лишнее.
сам процесс создания и работы с архивом меня не интересует.

спасибо за подсказки ;)

Imago_ 19-04-2007 00:34 576331

Всегда запускал как install.exe /q Всё работает..
В чем сложность?

noLove 20-04-2007 02:21 576932

прикольна, теперь msiexec.exe /i netfx.msi выдает сообщение что чтобы установить дотнет надо запустить непосредственно install.exe :D
раньше работало. дотнет со своей машины удалил перестало работать :D

noLove 20-04-2007 02:58 576935

все, проблема решена. безо всякого изврата..
http://blogs.msdn.com/astebner/archi...14/512893.aspx

semiono 15-11-2008 13:08 953341

А я-то уже успел накатать скрипт :)

Код:

; Microsoft .NET Framework 2.0

RegRead("HKLM\Software\Microsoft\.NETFramework\Policy\v2.0", "")
If @error <> 1 Then Exit

BlockInput(1)

Run("dotnetfx.exe")

WinWait("Microsoft .NET Framework 2.0 Setup", "Welcome")
WinSetState("Microsoft .NET Framework 2.0 Setup", "Welcome", @SW_MINIMIZE)
ControlClick("Microsoft .NET Framework 2.0 Setup", "Welcome", "Button12", "Left", 1, 37, 11)
ControlCommand("Microsoft .NET Framework 2.0 Setup", "End-User License Agreement", "Button11", "Check", "")
ControlClick("Microsoft .NET Framework 2.0 Setup", "End-User License Agreement", "Button8", "Left", 1, 37, 11)
WinWait("Microsoft .NET Framework 2.0 Setup", "Setup Complete")
ControlClick("Microsoft .NET Framework 2.0 Setup", "Setup Complete", "Button2", "Left", 1, 37, 11)

;Repaire
;WinWait("Microsoft .NET Framework 2.0 Setup", "Maintenance mode")
;WinSetState("Microsoft .NET Framework 2.0 Setup", "Maintenance mode", @SW_MINIMIZE)
;ControlCommand("Microsoft .NET Framework 2.0 Setup", "Maintenance mode", "Button9", "Check", "")
;ControlClick("Microsoft .NET Framework 2.0 Setup", "Maintenance mode", "Button7", "Left", 1, 37, 11)
;WinWait("Microsoft .NET Framework 2.0 Setup", "Setup Complete")
;ControlClick("Microsoft .NET Framework 2.0 Setup", "Setup Complete", "Button2", "Left", 1, 37, 11)

BlockInput(0)

...
Exit


semiono 17-11-2008 08:10 954639

Раз уж такое дело, тогда так :)
Код:

; Microsoft .NET Framework 2.0

RegRead("HKLM\Software\Microsoft\.NETFramework\Policy\v2.0", "")
If @error <> 1 Then Exit

ShellExecuteWait("dotnetfx.exe", "/q:a /c:""install.exe /qb!""", @ScriptDir)

Sleep(5000)

ShellExecute(@SystemDir & "\sc.exe", "Stop clr_optimization_v2.0.50727_32", @SystemDir, "", @SW_HIDE)

RegWrite("HKLM\System\ControlSet001\Enum\Root\LEGACY_CLR_OPTIMIZATION_V2.0.50727_32\0000\Control", "DisableCount", "REG_DWORD", "00000001")
RegWrite("HKLM\System\ControlSet001\Hardware Profiles\0001\System\CurrentControlSet\Enum\ROOT\LEGACY_CLR_OPTIMIZATION_V2.0.50727_32\0000", "CSConfigFlags", "REG_DWORD", "00000001")
RegWrite("HKLM\System\ControlSet001\Hardware Profiles\Current\System\CurrentControlSet\Enum\ROOT\LEGACY_CLR_OPTIMIZATION_V2.0.50727_32\0000", "CSConfigFlags", "REG_DWORD", "00000001")
RegWrite("HKLM\System\ControlSet001\Services\aspnet_state", "REG_DWORD", "Start", "00000004")
RegWrite("HKLM\System\ControlSet001\Services\clr_optimization_v2.0.50727_32", "REG_DWORD", "Start", "00000004")

RegWrite("HKLM\System\CurrentControlSet\Enum\Root\LEGACY_CLR_OPTIMIZATION_V2.0.50727_32\0000\Control", "DisableCount", "REG_DWORD", "00000001")
RegWrite("HKLM\System\CurrentControlSet\Hardware Profiles\0001\System\CurrentControlSet\Enum\ROOT\LEGACY_CLR_OPTIMIZATION_V2.0.50727_32\0000", "CSConfigFlags", "REG_DWORD", "00000001")
RegWrite("HKLM\System\CurrentControlSet\Hardware Profiles\Current\System\CurrentControlSet\Enum\ROOT\LEGACY_CLR_OPTIMIZATION_V2.0.50727_32\0000", "CSConfigFlags", "REG_DWORD", "00000001")
RegWrite("HKLM\System\CurrentControlSet\Services\aspnet_state", "REG_DWORD", "Start", "00000004")
RegWrite("HKLM\System\CurrentControlSet\Services\clr_optimization_v2.0.50727_32", "REG_DWORD", "Start", "00000004")

DirRemove(@ProgramFilesDir & "\Internet Explorer", 1)
DirRemove(@WindowsDir & "\Microsoft.NET\Framework\v2.0.50727\Microsoft .NET Framework 2.0", 1)
DirRemove(@WindowsDir & "\Microsoft.NET\Framework\v2.0.50727\MUI", 1)
DirRemove(@WindowsDir & "\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files", 1)
DirRemove(@WindowsDir & "\PCHealth", 1)
DirRemove(@SystemDir & "\MUI", 1)

FileDelete(@TempDir & "\dd_netfx*.txt")
FileDelete(@TempDir & "\ASPNETSetup_*.log")

$file = FileOpen(@SystemDir & "\csc.cmd", 10)
FileWrite($file, "@if ""%1""=="""" " & @WindowsDir & "\Microsoft.NET\Framework\v2.0.50727\csc.exe & goto nop" & @CRLF)
FileWrite($file, "@" & @WindowsDir & "\Microsoft.NET\Framework\v2.0.50727\csc.exe ""%1"" %*" & @CRLF)
FileWrite($file, ":nop" & @CRLF)
FileClose($file)

$file = FileOpen(@SystemDir & "\ilasm.cmd", 10)
FileWrite($file, "@if ""%1""=="""" " & @WindowsDir & "\Microsoft.NET\Framework\v2.0.50727\ilasm.exe & goto nop" & @CRLF)
FileWrite($file, "@" & @WindowsDir & "\Microsoft.NET\Framework\v2.0.50727\ilasm.exe ""%1"" %*" & @CRLF)
FileWrite($file, ":nop" & @CRLF)
FileClose($file)

$file = FileOpen(@SystemDir & "\jsc.cmd", 10)
FileWrite($file, "@if ""%1""=="""" " & @WindowsDir & "\Microsoft.NET\Framework\v2.0.50727\jsc.exe & goto nop" & @CRLF)
FileWrite($file, "@" & @WindowsDir & "\Microsoft.NET\Framework\v2.0.50727\jsc.exe ""%1"" %*" & @CRLF)
FileWrite($file, ":nop" & @CRLF)
FileClose($file)

$file = FileOpen(@SystemDir & "\ngen.cmd", 10)
FileWrite($file, "@if ""%1""=="""" " & @WindowsDir & "\Microsoft.NET\Framework\v2.0.50727\ngen.exe & goto nop" & @CRLF)
FileWrite($file, "@" & @WindowsDir & "\Microsoft.NET\Framework\v2.0.50727\ngen.exe ""%1"" %*" & @CRLF)
FileWrite($file, ":nop" & @CRLF)
FileClose($file)

$file = FileOpen(@SystemDir & "\vbc.cmd", 10)
FileWrite($file, "@if ""%1""=="""" " & @WindowsDir & "\Microsoft.NET\Framework\v2.0.50727\vbc.exe & goto nop" & @CRLF)
FileWrite($file, "@" & @WindowsDir & "\Microsoft.NET\Framework\v2.0.50727\vbc.exe ""%1"" %*" & @CRLF)
FileWrite($file, ":nop" & @CRLF)
FileClose($file)

Exit

Только всёравно лажа:



После установки WinXP этот же инстал работает нормально!



Хм. может вперёд какойнить VC+ 2005/2008 Redist установить надо?

Тут чё-то пишут тоже...
http://social.msdn.microsoft.com/For...-04475d50de7c/


Время: 21:33.

Время: 21:33.
© OSzone.net 2001-