NET-Framework als .opsi Paket

COMaction
Beiträge: 130
Registriert: 10 Aug 2009, 19:33

Re: NET-Framework als .opsi Paket

Beitrag von COMaction »

Hallo,

Das Problem bei allen NetFrame Produkten ab Version 2.0 SP1 glaube ich ist. Bei der manuellen Installation geht das Setup Programm hin und installiert rgb9rast, WIC und msxml6 nach, sofern es nicht auf dem PC installiert ist. Das ist das ganze Hauptproblem.
Ich hab es einfach so gemacht:
1. dotnetfx35.exe entpacken
2. Dateien msxml6 und rgb9rast suchen im VZ. Liegen unter dotnetfx35\wcu\dotNetFramework\dotNetFX30 und x86 sowie x64.
3. 3 neue Produkte erstellt und in Abhängigkeit gesetzt.
4. Framenetwork in Abhängigkeit zu den 3 anderen Produkten gesetzt.

Wenn ich jetzt Framework 3.5 oder 4.0 auf SETUP setzte püft OPSI ob die anderen Produkte schon installiert sind. Wenn NEIN dann werden diese auch auf SETUP gesetzt. Fertig.

Gruß
Michael
lenny
Beiträge: 167
Registriert: 20 Mai 2009, 09:57

Re: NET-Framework als .opsi Paket

Beitrag von lenny »

Würdest du im Glauben an OpenSpurce dein Installpaket zur Verfügung stellen bzw. Deine Scripte posten?
COMaction
Beiträge: 130
Registriert: 10 Aug 2009, 19:33

Re: NET-Framework als .opsi Paket

Beitrag von COMaction »

@lenny

Meinst Du mich? Sorry hatte viel Stress die letzten Wochen und bin heute erst wieder mal hier vobeigeschneit.

Gruß
Michael
lenny
Beiträge: 167
Registriert: 20 Mai 2009, 09:57

Re: NET-Framework als .opsi Paket

Beitrag von lenny »

Meine Installation läuft bereits. Aber sicher haben noch andere das gleiche Problem.
COMaction
Beiträge: 130
Registriert: 10 Aug 2009, 19:33

Re: NET-Framework als .opsi Paket

Beitrag von COMaction »

Ja, ich kann das skript online stellen. Mach ich wenn ich in der Firma bin.

Gruß
Michael
mhaegele
Beiträge: 293
Registriert: 18 Aug 2010, 13:55

Re: NET-Framework als .opsi Paket

Beitrag von mhaegele »

COMaction hat geschrieben:Ja, ich kann das skript online stellen. Mach ich wenn ich in der Firma bin.

Gruß
Michael
Hat da jemand mittlerweile eine Lösung bzw. ein aktuelles Skript.
Wäre nett.
Danke
MH
joerg.ludwig
Beiträge: 3
Registriert: 11 Jun 2010, 15:29

Re: NET-Framework als .opsi Paket

Beitrag von joerg.ludwig »

Nach zwei Tagen Basteln habe ich folgendes Skript hinbekommen, das auf einem frisch installierten WinXP SP3 das .NET-Framework 4.0 installiert:

Code: Alles auswählen

[Aktionen]
FilesSetup
ExecWithSetup "%ScriptPath%\AutoIt3.exe" WINST
FilesDelete
if not(FileExists("%systemroot%\Microsoft.NET\Framework\v4.0.30319"))
  LogError "Fatal: Framework not found!"
  IsFatalError
endif

[ExecWithSetup]
RunAsWait("Administrator", @ComputerName, "nopass", 1, _
  '"\tmp\dotNetFx40_Full_x86_x64.exe" /passive')

[FilesSetup]
copy "%ScriptPath%\dotNetFx40_Full_x86_x64.exe" "%SystemDrive%\tmp"

[FilesDelete]
delete "%SystemDrive%\tmp\dotNetFx40_Full_x86_x64.exe"
AutoIt3.exe ist die neuste Version von AutoIt, dotNetFx40_Full_x86_x64.exe kann man bei MS herunterladen.

Das einzige Problem ist noch, dass das Administrator-Passwort im Klartext ins das Script eingetragen werden muss. Ich probiere morgen mal (wie beim local admin) im Script einen neuen Admin-Benutzer mit Zufallspasswort anzulegen und die Installation damit auszuführen.

Ansonsten wäre es natürlich praktisch, wenn OPSI selbst eine RunAs-Funktion hätte oder wenn mir jemand verraten kann, wie man das runas von Windows automatisiert. ;)

Viele Grüße,
Jörg Ludwig
joerg.ludwig
Beiträge: 3
Registriert: 11 Jun 2010, 15:29

Re: NET-Framework als .opsi Paket

Beitrag von joerg.ludwig »

Installer für .NET-Framework 4.0 ist fertig. Getestet mit mehreren WinXP SP3:

install.ins:

Code: Alles auswählen

[Initial]
Message=Installiere Microsoft .NET-Framework...

[Aktionen]
ShowBitmap "%ScriptPath%\logo.png" ".NET-Framework"

DefVar $act$
DefVar $pwd$
Set $act$ = "opsiSetupAdmin"
Set $pwd$ = randomstr

DefVar $dir$
DefVar $fn$
Set $dir$ = "%SystemDrive%\tmp"
Set $fn$ = $dir$ + "\dotNetFx40_Full_x86_x64.exe"

FilesCopy
DosBatchUserdel
DosBatchUseradd

DefStringList $res$
Set $res$ = getOutStreamFromSection("ExecWithSetup '%ScriptPath%\AutoIt3.exe' WINST")
if count($res$) = "1"
  DefVar $e$
  Set $e$ = takeString(0, $res$)
  Comment "setup exit code: " + $e$
  if ($e$ = "1614") or ($e$ = "3010")
    ExitWindows /Reboot
  endif
else
  LogError "Fatal: Setup did not return exit code!"
  IsFatalError
endif

DosBatchUserdel
FilesDelete

if not(FileExists("%systemroot%\Microsoft.NET\Framework\v4.0.30319"))
  LogError "Fatal: Framework not found!"
  IsFatalError
endif

[DosBatchUseradd]
net user "$act$" "$pwd$" /add
net localgroup Administratoren /add "$act$"

[FilesCopy]
copy "%ScriptPath%\dotNetFx40_Full_x86_x64.exe" "$dir$"

[ExecWithSetup]
; http://msdn.microsoft.com/library/ee942965%28v=VS.100%29.aspx
; return exit code via stdout as winst cannot read exit codes from ExecWith
$exitcode = RunAsWait("$act$", @ComputerName, "$pwd$", 1, _
  '"$fn$" /passive /norestart')
if not @error then
  ConsoleWrite($exitcode)
endif

[FilesDelete]
delete "$fn$"

[DosBatchUserdel]
net user "$act$" /delete
rmdir /s /q "%ProfileDir%\$act$"
remove.ins:

Code: Alles auswählen

[Initial]
Message=Deinstalliere Microsoft .NET-Framework...

[Aktionen]
ShowBitmap "%ScriptPath%\logo.png" ".NET-Framework"
WinBatchUninstall

if FileExists("%systemroot%\Microsoft.NET\Framework\v4.0.30319")
  LogError "Fatal: Framework still there!"
endif

[WinBatchUninstall]
; Microsoft .NET Framework 4 Extended
MsiExec.exe /passive /X{0A0CADCF-78DA-33C4-A350-CD51849B9702}
; Microsoft .NET Framework 4 Client Profile
MsiExec.exe /passive /X{3C3901C5-3455-3E0A-A214-0B093A5070A6}
heuft_kdi
Beiträge: 64
Registriert: 02 Jul 2008, 08:06

Re: NET-Framework als .opsi Paket

Beitrag von heuft_kdi »

Da sieht mein Skript aber komplett anders aus:

Code: Alles auswählen

;# .NET Framework 4.0
;#
;# Letzte Skript Update: 2011-05-27, kdi
;# Skript Version: 1

;# Changelog (Version 11)
;# - Erste Version des Skriptes
;# - Installatrion .Net 4.0 Client
;# - installation Sicherheitsupdate MS11-028 (KB2446708)

[Initial]
SetLogLevel=5
ExitOnError=false
ScriptErrorMessages=on
TraceMode=off
StayOnTop=false

[Aktionen]
DefVar $OS$
set $OS$ = GetOS

DefVar $NTVer$
set $NTVer$ = GetNTVersion

DefVar $sys_arch$
if ( GetSystemType = "64 Bit System" )
    set $sys_arch$="x64"
else
    set $sys_arch$="x86"
endif

DefVar $systemdir$
set $systemdir$ = "%System%"

DefVar $basedir$
set $basedir$ = "%SCRIPTPATH%"

DefVar $instErr$
DefVar $Reboot$

; is this a win32 system ?
if ( $OS$ = "Windows_NT" )

    ShowBitmap /1 $basedir$ + "\dot_net4.png"

    ;# Prüfen auf Windows XP
    if ( $NTVer$ = "WinXP" )
        ;# Prüfen ob SP3 installiert ist
        if not ( GetRegistryStringValue("[HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion] CSDVersion") = "Service Pack 3")
            logError "Fehler: Bei Windows XP wird SP3 benötigt. Abbruch!!!")
            isFatalError
        endif

        ;# Windows Installer 4.5 V2 (KB893803-V2)
        if not ( GetRegistryStringValue("[HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\KB942288-v3] Installed") = "1" )
            Message=installiere Windows Installer 4.5 (4.5.6001.22159)
            ShowBitmap /1 $basedir$ + "\dot_net4.png" "Bitte Warten"
            winbatch_install_KB942288
            if not ( GetRegistryStringValue("[HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\KB942288-v3] Installed") = "1" )
                logError "Fehler: Windows Installer 4.5 wurde nicht installiert. Abbruch!!!")
                isFatalError
            else
                set $Reboot$ = "yes"
            endif
            Message=
            ShowBitmap /1 $basedir$ + "\dot_net4.png"
        endif
    endif

    ;# Installiere .NET Framework 4.0 Client, wenn nicht schon installiert
    if not ( GetRegistryStringValue("[HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client] Install") = "1" )
        ;# Überprüfen, ob genug festplattenplatz zur Verfügung steht
        if ( $sys_arch$="x86" ) and (not (HasMinimumSpace ("%SYSTEMDRIVE%", "600 MB")) )
            logError "Fehler: Nicht genügend Platz auf C: 600 MB auf C: für MS .NET Framework 4.0 SP2 auf x86 Systemen benötigt"
            isFatalError
        endif
        if ( $sys_arch$="x64" ) and (not (HasMinimumSpace ("%SYSTEMDRIVE%", "1500 MB")) )
            logError "Fehler: Nicht genügend Platz auf C: 1500 MB auf C: für MS .NET Framework 4.0 SP2 auf x64 Systemen benötigt"
            isFatalError
        endif

        ShowBitmap /1 $basedir$ + "\dot_net4.png" "Bitte Warten"
        Message=installiere MS .NET Framework 4.0 ...
        winbatch_dotnet40_install
        if not ( GetRegistryStringValue("[HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client] Version") = "4.0.30319" )
            logError "Fehler: .NET Framework 4.0 wurde nicht korrekt installiert.")
            set $instErr$ = "yes"
        endif
        Message=
        ShowBitmap /1 $basedir$ + "\dot_net4.png"

    endif

    ;# Sprachpakete

    ;# Prüfen, ob .NET Framework 4.0 SP2 installiert ist
    if not ( GetRegistryStringValue("[HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client] Version") = "" )
        ;# Installiere .NET Framework 4.0 Deutsches Sprachpaket, wenn nicht schon installiert
        if not ( GetRegistryStringValue("[HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client\1031] Install") = "1" )
            ShowBitmap /1 $basedir$ + "\dot_net4.png" "Bitte Warten"
            Message=installiere MS .NET Framework 4.0 SP2 Sprachpaket (deutsch)...
            winbatch_dotnet40_langpack_install
            if not ( GetRegistryStringValue("[HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client\1031] Install") = "1" )
                logError "Fehler: .NET Framework 4.0 Sprachpaket Deutsch wurde nicht installiert.")
                set $instErr$ = "yes"
            endif
            Message=
            ShowBitmap /1 $basedir$ + "\dot_net4.png"
        endif
    endif

    ;# Bei fehler, Skript auf Fehler
    if ( $instErr$ = "yes" )
        isFatalError
    endif

    ;# Bei Installation, Reboot nach WINST antriggern
    if ( $Reboot$ = "yes" )
        ExitWindows /RebootWanted
    endif

else
    logError "Fehler: ms_dotnet4 ist nur für Windows NT oder Höher Betriebssysteme"
endif

[winbatch_install_KB942288]
$basedir$\other_files\KB942288\update\update.exe /u /n /z /q

[winbatch_dotnet40_install]
msiexec /qb!- /i "$basedir$\main_files\dotNet4_client\netfx_Core_$sys_arch$.msi" EXTUI=1 USING_EXUIH=1 REBOOT=ReallySuppress /l* %Systemroot%\netfx40_$sys_arch$.log

[winbatch_dotnet40_langpack_install]
msiexec /qb!- /i "$basedir$\main_files\dotNet4_lang\netfx_CoreLP_$sys_arch$.msi" EXTUI=1 USING_EXUIH=1 REBOOT=ReallySuppress /l* %Systemroot%\netfx40_$sys_arch$.log
Ich bin allerdings (wie man sieht) hingegangen und habe die EXEs entpackt. Außerdem installiere ich nur den Core (Der Rest würde aber auch nicht mehr arbeit machen).
Mein Update Skript (für die Sicherheitsupdates) muss ich gerade überarbeiten. Das ist aktuell zwei Wochen alt.
Mit freundlichen Gruß
Kai Dietrich
Benutzeravatar
Thomas_H
Beiträge: 524
Registriert: 09 Jun 2010, 11:57
Wohnort: Havelland

Re: NET-Framework als .opsi Paket

Beitrag von Thomas_H »

@joerg.ludwig

Vielen Dank auch. Deine Lösung hat mir sehr weitergeholfen. Mein .Net FX4 installierte sich nur nach Lust und Laune. Auch das war nicht erklärbar. Auf jeden Fall funzte es NICHT bei einer Neuinstallation eines Rechners.
Ich hoffe, dass es nun funktioniert. Auf jeden Fall lief es reibungslos durch auf einem Rechner, der sich vehement gewehrt hat... :)

Gruß

Thomas_H
Kennst Du schon die WIKI für OPSI-Scripte? Fertige Installationsscripte bekommen und ablegen unter OPSI-Wiki
Aus dem Glashaus :) : UIB bietet auch Schulungen und Supportverträge für Opsi an.
Bild
Antworten