Danke für das schöne Schaubild. D. h. daß die früheren Versionen der NetFrameworks in den aktuelleren enthalten sind wenn ich das richtig verstanden habe ...
(Also in 4.0 ist z.B. 2.0, 3.5 enthalten ...)
Habe mal das setup.ins aus dem Wiki genommen:
wiki/userspace:netfx_4.0
Bricht mit folgendem Fehler ab:
Box: AutoIT Error
Code: Alles auswählen
Line 1 (File "c:\tmp\_winstbat_3.bat"):
$ExitCode = RunAsWait("opsiSetupAdmin", @ComputerName, "T[n26Z;x89",1, ""C:\tmp\dotnetfx40_full_x86_x64.exe" /passive /norestart')
$Exitcode = ^ERROR
Error: Unknown function name.
Den namen opsisetupadmin habe ich nicht angepasst, da er diesen ja als temporären Admin anlegen kann und danach wieder löscht
sollte also nicht relevant sein?
logauszug vom Client:
Code: Alles auswählen
[5] [18.02.2013 15:26:21] Execution of FilesCopy
[7] [18.02.2013 15:26:21] copy "P:\install\netfx40\dotNetFx40_Full_x86_x64.exe" "C:\tmp"
[6] [18.02.2013 15:26:21] Copying P:\install\netfx40\dotNetFx40_Full_x86_x64.exe -----> C:\tmp
[5] [18.02.2013 15:26:21] 1 File(s) found
[6] [18.02.2013 15:26:21] Source P:\install\netfx40\dotNetFx40_Full_x86_x64.exe
[6] [18.02.2013 15:26:21] Info: Target C:\tmp\dotNetFx40_Full_x86_x64.exe exists and shall be overwritten
[6] [18.02.2013 15:26:26] P:\install\netfx40\dotNetFx40_Full_x86_x64.exe copied to C:\tmp\
[5] [18.02.2013 15:26:26] 1 File(s) treated
[5] [18.02.2013 15:26:26] message Installing dotNetFX 32 Bit...
[5] [18.02.2013 15:26:26] comment: Start setup program
[5] [18.02.2013 15:26:26]
[5] [18.02.2013 15:26:26] Execution of DosBatchUserdel
[6] [18.02.2013 15:26:26] C:\tmp\_winstbat_1.bat saved back
[6] [18.02.2013 15:26:26] Executing "cmd.exe" /C "C:\tmp\_winstbat_1.bat"
[5] [18.02.2013 15:26:27]
[5] [18.02.2013 15:26:27] Execution of DosBatchUseradd
[6] [18.02.2013 15:26:27] C:\tmp\_winstbat_2.bat saved back
[6] [18.02.2013 15:26:27] Executing "cmd.exe" /C "C:\tmp\_winstbat_2.bat"
[7] [18.02.2013 15:26:27]
[7] [18.02.2013 15:26:27] (created string list $res$)
[5] [18.02.2013 15:26:27]
[5] [18.02.2013 15:26:27] Set $res$ = getOutStreamFromSection("ExecWithSetup 'P:\install\netfx40\AutoIt3.exe' WINST")
[5] [18.02.2013 15:26:27]
[5] [18.02.2013 15:26:27] Execution of ExecWithSetup
[6] [18.02.2013 15:26:27] C:\tmp\_winstbat_3.bat saved back
[6] [18.02.2013 15:26:27] Executing "P:\install\netfx40\AutoIt3.exe" "C:\tmp\_winstbat_3.bat"
[6] [18.02.2013 15:32:50]
[6] [18.02.2013 15:32:50] output:
[6] [18.02.2013 15:32:50] --------------
[6] [18.02.2013 15:32:50]
[6] [18.02.2013 15:32:50] retrieving strings from getOutStreamFromSection [switch to loglevel 7 for debugging]
[7] [18.02.2013 15:32:50]
[5] [18.02.2013 15:32:50]
[5] [18.02.2013 15:32:50] If
[6] [18.02.2013 15:32:50] retrieving strings from $res$ [switch to loglevel 7 for debugging]
[7] [18.02.2013 15:32:50]
[5] [18.02.2013 15:32:50] count($res$) = "1" <<< result false
[5] [18.02.2013 15:32:50] Then
[5] [18.02.2013 15:32:50]
[5] [18.02.2013 15:32:50] If
[5] [18.02.2013 15:32:50] Then
[5] [18.02.2013 15:32:50] EndIf
[5] [18.02.2013 15:32:50]
[5] [18.02.2013 15:32:50] Else
[3] [18.02.2013 15:32:50] Error: Fatal: Setup did not return exit code!
[5] [18.02.2013 15:32:50] Error level set to fatal
[5] [18.02.2013 15:32:50] Process aborted
[1] [18.02.2013 15:32:50] ___________________
[1] [18.02.2013 15:32:50] script finished
[1] [18.02.2013 15:32:50] 1 error
[1] [18.02.2013 15:32:50] 1 warning
skript setup.ins:
Code: Alles auswählen
[Initial]
LogLevel=9
; Log Errors in Logfile but don't abort:
ExitOnError=false
; Show syntax errors in the script:
ScriptErrorMessages=on
; Dont trace step by step through the script:
TraceMode=off
; let started programs run in front of the winst window
StayOnTop=false
[Actions]
requiredWinstVersion >= "4.10.8.6"
DefVar $UninstallProgram32$
DefVar $UninstallProgram64$
DefVar $ProductId$
DefVar $MinimumSpace$
DefVar $InstallDir32$
DefVar $InstallDir64$
DefVar $ExitCode$
DefVar $LicenseRequired$
DefVar $LicenseKey$
DefVar $LicensePool$
DefVar $INST_SystemType$
DefVar $INST_architecture$
DefVar $Version$
DefVar $Inst_Cmd32$
DefVar $Inst_Cmd64$
DefVar $Uninst_Cmd32$
DefVar $Uninst_Cmd64$
DefVar $Inst_Prg$
DefVar $Uninst_Prg$
DefVar $LogDir$
DefVar $opsiadminuser$
DefVar $opsiadminpwd$
Set $INST_SystemType$ = GetSystemType
set $INST_architecture$ = GetProductProperty("install_architecture","system specific")
Set $LogDir$ = "%SystemDrive%\tmp"
; ----------------------------------------------------------------
; - Please edit the following values -
; ----------------------------------------------------------------
;$ProductId$ should be the name of the product in opsi
; therefore please: only lower letters, no umlauts,
; no white space use '-' as a seperator
Set $ProductId$ = "dotNetFX"
Set $Version$ = "4.0"
Set $MinimumSpace$ = "55 MB"
; the path were we find the product after the installation
Set $InstallDir32$ = "%Systemroot%\Microsoft.NET\Framework\v4.0.30319\SetupCache\Extended\"
Set $InstallDir64$ = "%Systemroot%\Microsoft.NET\Framework64\v4.0.30319\SetupCache\Extended\"
Set $LicenseRequired$ = "false"
Set $LicensePool$ = "p_" + $ProductId$
Set $Inst_Prg$ = "dotNetFx40_Full_x86_x64.exe"
Set $Inst_Cmd32$ = '/passive /norestart'
Set $Inst_Cmd64$ = 'NOT NEEDED HERE!'
Set $Uninst_Cmd32$ = '/uninstall /x86 /x64 /ia64 /parameterfolder Extended /passive /norestart'
Set $Uninst_Cmd64$ = '/uninstall /x86 /x64 /ia64 /parameterfolder Extended /passive /norestart'
Set $Uninst_Prg$ = "setup.exe"
Set $opsiadminuser$ = "opsiSetupAdmin"
Set $opsiadminpwd$ = randomstr
; ----------------------------------------------------------------
if not(HasMinimumSpace ("%SystemDrive%", $MinimumSpace$))
LogError "Not enough space on %SystemDrive%, " + $MinimumSpace$ + " on drive %SystemDrive% needed for " + $ProductId$
isFatalError
; Stop process and set installation status to failed
else
comment "Show product picture"
ShowBitmap "%ScriptPath%\" + $ProductId$ + ".jpg" $ProductId$+" "+$Version$
if FileExists("%ScriptPath%\delsub.ins")
comment "Start uninstall sub section"
Sub "%ScriptPath%\delsub.ins"
endif
if $LicenseRequired$ = "true"
comment "Licensing required, reserve license and get license key"
Sub_get_licensekey
endif
comment "installing"
Message "Copying Setup to Disk..."
FilesCopy
Message "Installing " + $ProductId$ + " 32 Bit..."
comment "Start setup program"
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
; Ok, let's check, if .Net Framework was installed...
if not(FileExists("%systemroot%\Microsoft.NET\Framework\v4.0.30319"))
LogError "Fatal: Framework not found!"
IsFatalError
endif
FilesDelete
Sub_check_exitcode
endif
[FilesCopy]
copy "%ScriptPath%\dotNetFx40_Full_x86_x64.exe" "$LogDir$"
[DosBatchUseradd]
net user "$opsiadminuser$" "$opsiadminpwd$" /add
net localgroup Administratoren /add "$opsiadminuser$"
[DosBatchUserdel]
net user "$opsiadminuser$" /delete
rmdir /s /q "%ProfileDir%\$opsiadminuser$"
[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("$opsiadminuser$", @ComputerName, "$opsiadminpwd$", 1, _
'"$LogDir$\$Inst_Prg$" $Inst_Cmd32$')
if not @error then
ConsoleWrite($exitcode)
endif
[FilesDelete]
delete "$LogDir$/$Inst_Prg$"
[Sub_check_exitcode]
comment "Test for installation success via exit code"
set $ExitCode$ = getLastExitCode
; informations to exit codes see
; http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx
; http://msdn.microsoft.com/en-us/library/aa368542.aspx
if ($ExitCode$ = "0")
comment "Looks good: setup program gives exitcode zero"
else
comment "Setup program gives a exitcode unequal zero: " + $ExitCode$
if ($ExitCode$ = "1605")
comment "ERROR_UNKNOWN_PRODUCT 1605 This action is only valid for products that are currently installed."
comment "Uninstall of a not installed product failed - no problem"
else
if ($ExitCode$ = "1641")
comment "looks good: setup program gives exitcode 1641"
comment "ERROR_SUCCESS_REBOOT_INITIATED 1641 The installer has initiated a restart. This message is indicative of a success."
else
if ($ExitCode$ = "3010")
comment "looks good: setup program gives exitcode 3010"
comment "ERROR_SUCCESS_REBOOT_REQUIRED 3010 A restart is required to complete the install. This message is indicative of a success."
else
logError "Fatal: Setup program gives an unknown exitcode unequal zero: " + $ExitCode$
isFatalError
endif
endif
endif
endif