Показать полную графическую версию : [решено] проблемы при автоматической установке .Net Framework
берем стандартный МС архив dotnetfx.exe распаковываем его архиватором 7-zip. заходим в папку с распакованными файлами, выделяем их все и отправляем на архивирование в SFX архив программой 7zip.
после этого имеем перепакованный для наших нужд установочный архив.
теперь нам его нужно как то установить на клиентской машине так, чтобы доставить пользователю наименьшее количество хлопот - пытаемся произвести скрытую установку.
установку производит инсталлятор InnoSetup
запускаем наш перепакованный архив с параметрами -o"{tmp}\DotNetInstall\" -y эти параметры попросят sfx архив автоматически распаковаться в папку с временными файлами текущей сессии инсталятора IS во вложенную папку DotNetInstall. на все вопросы отвечать "Да".
далее. теперь нам нужно в скрытом режиме начать саму установку дотнета. запускаем dotnetinstall\setup.exe /q:a ключ /q:a скажет установщику дотнета, что он должен производить установку автоматически безовсяких вопросов.... все.... по идее все работать правильно должно, но не работает.
у пользователей после такой установки дотнет или не устанавливается вообще, или появлялись косяки.... помогите ктонибудь, может кто то сталкивался с этой проблемой уже, или кто то делал более грамотно? и еще. если вдруг в процессе установки возникает какая то ошибка, чтобы установщик дотнета ее обязательно показал.
спасибо ;)
заюзал поиск по данной ветке. сделал запуск установщика вот так:
msiexec.exe /i "{tmp}\DotNetInstall\netfx.msi" /passive
данный способ устраивает меня в принципе... только вопрос об ошибках все еще актуален. покажет ли установщик сообщение об ошибке, если таковая произойдет?
noLove
заходим в папку с распакованными файлами, выделяем их все и отправляем на архивирование в SFX архив программой 7zip.
установку производит инсталлятор InnoSetup
Пардон, а зачем такие манипуляции? Не проще ли пакануть одним SFX архивом и в скрипте SFX указать команду с ключами на запуск установщика .net (версия?) или сделать тоже самое, но посредством InnoSetup.
Быть, может, Вам воспользоваться уже перепакованными бесключевыми (http://forum.oszone.net/thread-46682.html) версиями! Так же пользуйтесь фильтром (http://forum.oszone.net/forumdisplay.php?f=32&filter_string=Framework&filter_by=title)!
дело в том, что этот sfx архив не поставляется вместе с инсталлятором основной программы. в процессе установки если надо, IS его скачивает и работает с ним.
7zip sfx архив не умеет по дефолту запускать исполняемые файлы. знаю что есть дополнения к нему, но это лишнее.
сам процесс создания и работы с архивом меня не интересует.
спасибо за подсказки ;)
Всегда запускал как install.exe /q Всё работает..
В чем сложность?
прикольна, теперь msiexec.exe /i netfx.msi выдает сообщение что чтобы установить дотнет надо запустить непосредственно install.exe :D
раньше работало. дотнет со своей машины удалил перестало работать :D
все, проблема решена. безо всякого изврата..
http://blogs.msdn.com/astebner/archive/2006/01/14/512893.aspx
А я-то уже успел накатать скрипт :)
; 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
Раз уж такое дело, тогда так :)
; 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
Только всёравно лажа:
http://img61.imageshack.us/img61/1007/1111rx1.th.png (http://img61.imageshack.us/my.php?image=1111rx1.png)http://img61.imageshack.us/images/thpix.gif (http://g.imageshack.us/thpix.php)
После установки WinXP этот же инстал работает нормально!
http://img262.imageshack.us/img262/1034/61445465bm1.th.png (http://img262.imageshack.us/my.php?image=61445465bm1.png)http://img262.imageshack.us/images/thpix.gif (http://g.imageshack.us/thpix.php)
Хм. может вперёд какойнить VC+ 2005/2008 Redist установить надо?
Тут чё-то пишут тоже...
http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/47c93410-2ee2-4dd1-812a-04475d50de7c/
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC