none
Remote .Net FW 3.0 Installation fails for RGB9RAST RRS feed

  • Question

  • I am installing .Net Framework 3.0 Using silent installation on a remote machine using psexec.exe. The remote machine is Windows Server 2003. The installation fails for a package called RGB9RAST. Here is the application log error.

     

    Product: RGB9RAST -- The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2103. The arguments are: 26, ,

     

    However the same installer if used locally on the same machine it works fine.

    I am doing this on multiple machines but fails only for few of them, though all machines have same configuration.

     

    the installer fails with error code 1603.

     

    Has someone else faced this issue? Any Solution? Thanks!

    Sunday, December 16, 2007 11:28 PM

Answers

  • Hi

     

    That is not a recommended way to use psexec.exe to install .NET Framework remotely on this senario. We've not done the test.

    But you could take a look at the setup log (in %temp%) and diagnosis what is failing...

    FYI: .NET Framework 3.0 setup log files: http://blogs.msdn.com/astebner/archive/2006/10/30/net-framework-3-0-setup-log-files.aspx

     

    Thanks

    Tuesday, December 18, 2007 4:01 AM

  • The problem tracks back to the DX9 software rasterizer, RGB9RAST. It's an MSI contained within the .NET framework package. It defaults to installing for only the current user, but there's no way to override it and change to all users (ALLUSERS=1).

    The workaround is to install the rasterizer first, then the whole .NET.

    Once the rasterizer is installed, the .NET installer goes right through. The RGB9RAST package detects the existing file and registry entry and skips the installation.

    Follow the instructions in http://msdn2.microsoft.com/en-us/library/aa964979.aspx for extracting the components.

    Use something like:
    dotnetfx3.exe /x:"c:\dotnetfx3"

    Then locate RGB9RAST.msi (under "dotnetfx3\wcu\RGBRAST\x86\RGB9RAST_x86.msi" ) and install it silently first using msiexec /I RGB9RAST.msi /qn ALLUSERS=1 REBOOT=ReallySuppress, then install .NET.


    Tuesday, February 5, 2008 11:03 AM

All replies

  • Hi

     

    That is not a recommended way to use psexec.exe to install .NET Framework remotely on this senario. We've not done the test.

    But you could take a look at the setup log (in %temp%) and diagnosis what is failing...

    FYI: .NET Framework 3.0 setup log files: http://blogs.msdn.com/astebner/archive/2006/10/30/net-framework-3-0-setup-log-files.aspx

     

    Thanks

    Tuesday, December 18, 2007 4:01 AM

  • The problem tracks back to the DX9 software rasterizer, RGB9RAST. It's an MSI contained within the .NET framework package. It defaults to installing for only the current user, but there's no way to override it and change to all users (ALLUSERS=1).

    The workaround is to install the rasterizer first, then the whole .NET.

    Once the rasterizer is installed, the .NET installer goes right through. The RGB9RAST package detects the existing file and registry entry and skips the installation.

    Follow the instructions in http://msdn2.microsoft.com/en-us/library/aa964979.aspx for extracting the components.

    Use something like:
    dotnetfx3.exe /x:"c:\dotnetfx3"

    Then locate RGB9RAST.msi (under "dotnetfx3\wcu\RGBRAST\x86\RGB9RAST_x86.msi" ) and install it silently first using msiexec /I RGB9RAST.msi /qn ALLUSERS=1 REBOOT=ReallySuppress, then install .NET.


    Tuesday, February 5, 2008 11:03 AM
  •  The problem of the RGB9RAST.msi is already reported to Microsoft but for some reason they are not doing anything about it. The issue was first discovered in the dotNet3.0 installer and later also in the dotNet3.5 installer. I made a script that will create all the deployable installers from the dotNet3.5 redistributable. (dotnetfx35.exe  Fileversion 3.5.21022.8)

    When the script has run you have:
    dotNet2.0sp1
    dotNet3.0sp1
    dotNet3.5
    MSXML6
    RGB9RAST (fixed msi)

    All these can be deployed using AD, i tested them as assigned machine software. You will also be able to deploy them remote with ps exec altough this is not the tool of choice for this task.

    regards,

    Leon.

    <vbscode>
    'dotNetBuilder.vbs
    'Author: Leon Straathof.
    'Copyright: (c)2007 BRAINFORCE bv
    'Dit script bouwt uit de dotNetfx35.exe file deployable msi files.
     
    option explicit
    dim fso
    dim sCurPath
    dim oShell
    Set fso = CreateObject("Scripting.FileSystemObject")
    sCurPath = fso.GetParentFolderName(wscript.ScriptFullName)
    set oShell = createobject("wscript.shell")
    oShell.currentdirectory = sCurPath

    WScript.Echo "This script builds deployable MSI files of te .NetFramework versions 2.0SP1, 3.0SP1 and 3.5"
    If fso.FileExists(sCurPath & "\dotNetfx35.exe") Then
     If fso.GetFileVersion(sCurPath & "\dotNetfx35.exe") = "3.5.21022.8" then
      EXTRACT_MAIN_ARCHIVE
      EXTRACT_NETFX35_X86_ARCHIVE
      BUILD_NetFX20
      BUILD_NetFX30
      BUILD_NetFX35
      BUILD_MSXML6
      BUILD_RGBRAST
      Cleanup
      CreateNewRGBRASTmsi
     Else
      WScript.Echo "dotNetfx35.exe has the wrong version for this script, it should be version 3.5.21022.8 however the file has version " & fso.GetFileVersion(sCurPath & "\dotNetfx35.exe")
     End If
    Else
     WScript.Echo "dotNetfx35.exe not found in the current folder, make sure the dotNetfx35.exe distributable is in the same folder as this script" 
    End If
    WScript.Echo "Finished building the MSI files"

    Sub EXTRACT_MAIN_ARCHIVE()
     oShell.Run "dotNetFX35 /x """ & sCurpath & """",1,False
     While Not oShell.AppActivate("Choose Directory For Extracted Files")
     Wend
     oShell.SendKeys "{enter}"
     While Not oShell.AppActivate("Extraction Complete")
     Wend
     oShell.SendKeys "{enter}"
    End Sub

    sub EXTRACT_NETFX35_X86_ARCHIVE()
        oShell.CurrentDirectory = sCurPath & "\wcu\dotNetFramework\dotNetFX35\x86"
     oShell.Run """" & sCurPath & "\wcu\dotNetFramework\dotNetFX35\x86\netfx35_x86.exe"" /x",1,False
     oShell.CurrentDirectory = sCurPath
     While Not oShell.AppActivate("Choose Directory For Extracted Files")
     Wend
     oShell.SendKeys "{enter}"
     While Not oShell.AppActivate("Extraction Complete")
     Wend
     oShell.SendKeys "{enter}"
    End Sub

    Sub BUILD_NetFX20()
        Dim Source
        Dim Dest
        Source = sCurPath & "\wcu\dotNetFramework\dotNetFX20"
        Dest = sCurPath & "\dotNetFX20SP1"
     oShell.Run "msiexec /a """ & Source & "\Netfx20a_x86.msi"" USING_EXUIH=1 REBOOT=ReallSuppress TARGETDIR=""" & Dest & """",1,True
     oShell.Run "msiexec /a """ & Dest & "\Netfx20a_x86.msi"" /update """ & Source & "\ASPNET.msp"" USING_EXUIH=1 REBOOT=ReallSuppress TARGETDIR=""" & Dest & """",1,True
     oShell.Run "msiexec /a """ & Dest & "\Netfx20a_x86.msi"" /update """ & Source & "\CLR.msp"" USING_EXUIH=1 REBOOT=ReallSuppress TARGETDIR=""" & Dest & """",1,True
     oShell.Run "msiexec /a """ & Dest & "\Netfx20a_x86.msi"" /update """ & Source & "\CRT.msp"" USING_EXUIH=1 REBOOT=ReallSuppress TARGETDIR=""" & Dest & """",1,True
     oShell.Run "msiexec /a """ & Dest & "\Netfx20a_x86.msi"" /update """ & Source & "\NetFX_CA.msp"" USING_EXUIH=1 REBOOT=ReallSuppress TARGETDIR=""" & Dest & """",1,True
     oShell.Run "msiexec /a """ & Dest & "\Netfx20a_x86.msi"" /update """ & Source & "\NetFX_Core.msp"" USING_EXUIH=1 REBOOT=ReallSuppress TARGETDIR=""" & Dest & """",1,True
     oShell.Run "msiexec /a """ & Dest & "\Netfx20a_x86.msi"" /update """ & Source & "\NetFX_Other.msp"" USING_EXUIH=1 REBOOT=ReallSuppress TARGETDIR=""" & Dest & """",1,True
     oShell.Run "msiexec /a """ & Dest & "\Netfx20a_x86.msi"" /update """ & Source & "\PreXP.msp"" USING_EXUIH=1 REBOOT=ReallSuppress TARGETDIR=""" & Dest & """",1,True
     oShell.Run "msiexec /a """ & Dest & "\Netfx20a_x86.msi"" /update """ & Source & "\WinForms.msp"" USING_EXUIH=1 REBOOT=ReallSuppress TARGETDIR=""" & Dest & """",1,True
     oShell.Run "msiexec /a """ & Dest & "\Netfx20a_x86.msi"" /update """ & Source & "\DW.msp"" USING_EXUIH=1 REBOOT=ReallSuppress TARGETDIR=""" & Dest & """",1,True
    End Sub

    Sub BUILD_NetFX30()
        Dim Source
        Dim Dest
        Source = sCurPath & "\wcu\dotNetFramework\dotNetFX30"
        Dest = sCurPath & "\dotNetFX30SP1"
     oShell.Run "msiexec /a """ & Source & "\Netfx30a_x86.msi"" USING_EXUIH=1 REBOOT=ReallSuppress TARGETDIR=""" & Dest & """",1,True
     oShell.Run "msiexec /a """ & Dest & "\Netfx30a_x86.msi"" /update """ & Source & "\WCF.msp"" USING_EXUIH=1 REBOOT=ReallSuppress TARGETDIR=""" & Dest & """",1,True
     oShell.Run "msiexec /a """ & Dest & "\Netfx30a_x86.msi"" /update """ & Source & "\WCS.msp"" USING_EXUIH=1 REBOOT=ReallSuppress TARGETDIR=""" & Dest & """",1,True
     oShell.Run "msiexec /a """ & Dest & "\Netfx30a_x86.msi"" /update """ & Source & "\WF.msp"" USING_EXUIH=1 REBOOT=ReallSuppress TARGETDIR=""" & Dest & """",1,True
     oShell.Run "msiexec /a """ & Dest & "\Netfx30a_x86.msi"" /update """ & Source & "\WPF1.msp"" USING_EXUIH=1 REBOOT=ReallSuppress TARGETDIR=""" & Dest & """",1,True
     oShell.Run "msiexec /a """ & Dest & "\Netfx30a_x86.msi"" /update """ & Source & "\WPF2.msp"" USING_EXUIH=1 REBOOT=ReallSuppress TARGETDIR=""" & Dest & """",1,True
     oShell.Run "msiexec /a """ & Dest & "\Netfx30a_x86.msi"" /update """ & Source & "\WPF_Other.msp"" USING_EXUIH=1 REBOOT=ReallSuppress TARGETDIR=""" & Dest & """",1,True
     oShell.Run "msiexec /a """ & Dest & "\Netfx30a_x86.msi"" /update """ & Source & "\XPS.msp"" USING_EXUIH=1 REBOOT=ReallSuppress TARGETDIR=""" & Dest & """",1,True
     oShell.Run "msiexec /a """ & Dest & "\Netfx30a_x86.msi"" /update """ & Source & "\WF_32.msp"" USING_EXUIH=1 REBOOT=ReallSuppress TARGETDIR=""" & Dest & """",1,True
     oShell.Run "msiexec /a """ & Dest & "\Netfx30a_x86.msi"" /update """ & Source & "\WPF_Other_32.msp"" USING_EXUIH=1 REBOOT=ReallSuppress TARGETDIR=""" & Dest & """",1,True
    End Sub

    sub BUILD_NetFX35()
        Dim Source
        Dim Dest
        Source = sCurPath & "\wcu\dotNetFramework\dotNetFX35\x86"
        Dest = sCurPath & "\dotNetFX35"
        oShell.Run "msiexec /qb /a """ & Source & "\vs_setup.msi"" USING_EXUIH=1 REBOOT=ReallSuppress TARGETDIR=""" & Dest & """",1,True
    End Sub

    sub BUILD_MSXML6()
        Dim Source
        Dim Dest
        Source = sCurPath & "\wcu\dotNetFramework\dotNetFX30\x86"
        Dest = sCurPath & "\MSXML6"
        oShell.Run "msiexec /qb /a """ & Source & "\msxml6.msi"" TARGETDIR=""" & Dest & """",1,True
    End Sub

    Sub BUILD_RGBRAST()
        Dim Source
        Dim Dest
        Source = sCurPath & "\wcu\dotNetFramework\dotNetFX30"
        Dest = sCurPath & "\RGBRAST"
        oShell.Run "msiexec /qb /a """ & Source & "\RGB9RAST_x86.msi"" REBOOT=ReallSuppress TARGETDIR=""" & Dest & """",1,True
    End Sub

    Sub Cleanup()
     If fso.FolderExists(sCurPath & "\wcu") Then
      fso.DeleteFolder sCurPath & "\wcu",True
     End If
    End Sub

    Sub CreateNewRGBRASTmsi()
     'Copy MSXML6.msi using it as a template
     Dim objFileCopy
     Set objFileCopy = fso.GetFile(sCurPath & "\MSXML6\msxml6.msi")
     objFileCopy.Copy (sCurPath & "\RGBRAST\NEWRGB9RAST_x86.msi")

     ' Connect to Windows installer object
     Dim installer : Set installer = Nothing
     Set installer = Wscript.CreateObject("WindowsInstaller.Installer") : CheckError
     
     'update summary info
     Dim oldsumInfo  : Set oldsumInfo = installer.SummaryInformation(sCurPath & "\RGBRAST\RGB9RAST_x86.msi", 0)
     Dim newsumInfo  : Set newsumInfo = installer.SummaryInformation(sCurPath & "\RGBRAST\NEWRGB9RAST_x86.msi", 20)
     Dim iProp, value
     For iProp = 1 To 19
      If iProp <> 10 And iProp<>17 Then
       value=oldsumInfo.Property(iProp)
       If iProp = 11 Or iProp = 12 Or iProp = 13 Then
        If UCase(value) = "NOW"  Then value = Now
        If UCase(value) = "DATE" Then value = Date
        value = CDate(value)
       End If
       If iProp = 1 Or iProp = 14 Or iProp = 15 Or iProp = 16 Or iProp = 19 Then value = CLng(value)
       newsumInfo.Property(iProp) = value
      End If
     Next
     newsumInfo.Persist
     
     Set oldsumInfo=Nothing
     Set newsumInfo=Nothing
     
     ' Open database
     Dim olddatabase : Set olddatabase = installer.OpenDatabase(sCurPath & "\RGBRAST\RGB9RAST_x86.msi", 0) : CheckError
     Dim newdatabase : Set newdatabase = installer.OpenDatabase(sCurPath & "\RGBRAST\NEWRGB9RAST_x86.msi", 1) : CheckError
     Dim newview, oldview, record, message, rowData, columnCount, delim, column
     Set newview = newdatabase.OpenView("Delete from File") : CheckError
     newview.Execute
     Set newview = newdatabase.OpenView("Delete from Component") : CheckError
     newview.Execute
     Set newview = newdatabase.OpenView("Delete from Registry") : CheckError
     newview.Execute
     Set newview = newdatabase.OpenView("Delete from FeatureComponents") : CheckError
     newview.Execute
     Set newview = newdatabase.OpenView("Delete from Feature") : CheckError
     newview.Execute
     Set newview = newdatabase.OpenView("Delete from Directory") : CheckError
     newview.Execute
     Set newview = newdatabase.OpenView("Delete from Property") : CheckError
     newview.Execute
     Set newview = newdatabase.OpenView("Delete from Media") : CheckError
     newview.Execute
     Set newview = newdatabase.OpenView("Delete from InstallUISequence") : CheckError
     newview.Execute
     olddatabase.Export "Feature",sCurPath & "\RGBRAST","Feature.cvs"
     olddatabase.Export "Component",sCurPath & "\RGBRAST","Component.cvs"
     olddatabase.Export "File",sCurPath & "\RGBRAST","File.cvs"
     olddatabase.Export "FeatureComponents",sCurPath & "\RGBRAST","FeatureComponents.cvs"
     olddatabase.Export "Directory",sCurPath & "\RGBRAST","Directory.cvs"
     olddatabase.Export "Property",sCurPath & "\RGBRAST","Property.cvs"
     olddatabase.Export "Media",sCurPath & "\RGBRAST","Media.cvs"
     newdatabase.Import sCurPath & "\RGBRAST","Feature.cvs"
     newdatabase.Import sCurPath & "\RGBRAST","Component.cvs"
     newdatabase.Import sCurPath & "\RGBRAST","File.cvs"
     newdatabase.Import sCurPath & "\RGBRAST","FeatureComponents.cvs"
     newdatabase.Import sCurPath & "\RGBRAST","Directory.cvs"
     newdatabase.Import sCurPath & "\RGBRAST","Property.cvs"
     newdatabase.Import sCurPath & "\RGBRAST","Media.cvs"
     Set newview = newdatabase.OpenView("INSERT INTO Property (Property,Value) VALUES ('ALLUSERS','2')") : CheckError
     newview.Execute : Checkerror
     newdatabase.Commit
     
     'newdatabase.GenerateTransform olddatabase, sCurPath & "\RGBRAST\RGB9RAST_x86.mst"
     
     Set newview=Nothing
     Set olddatabase=Nothing
     Set newdatabase=Nothing
     
     If fso.FileExists(sCurPath & "\RGBRAST\Feature.cvs") Then
      fso.DeleteFile sCurPath & "\RGBRAST\Feature.cvs",True
     End If
     If fso.FileExists(sCurPath & "\RGBRAST\Component.cvs") Then
      fso.DeleteFile sCurPath & "\RGBRAST\Component.cvs",True
     End If
     If fso.FileExists(sCurPath & "\RGBRAST\File.cvs") Then
      fso.DeleteFile sCurPath & "\RGBRAST\File.cvs",True
     End If
     If fso.FileExists(sCurPath & "\RGBRAST\FeatureComponents.cvs") Then
      fso.DeleteFile sCurPath & "\RGBRAST\FeatureComponents.cvs",True
     End If
     If fso.FileExists(sCurPath & "\RGBRAST\Directory.cvs") Then
      fso.DeleteFile sCurPath & "\RGBRAST\Directory.cvs",True
     End If
     If fso.FileExists(sCurPath & "\RGBRAST\Property.cvs") Then
      fso.DeleteFile sCurPath & "\RGBRAST\Property.cvs",True
     End If
     If fso.FileExists(sCurPath & "\RGBRAST\Media.cvs") Then
      fso.DeleteFile sCurPath & "\RGBRAST\Media.cvs",True
     End If
     'If fso.FileExists(sCurPath & "\RGBRAST\NEWRGB9RAST_x86.msi") Then
     ' fso.DeleteFile sCurPath & "\RGBRAST\NEWRGB9RAST_x86.msi",True
     'End If
     If fso.FileExists(sCurPath & "\RGBRAST\RGB9RAST_x86.msi") Then
      fso.DeleteFile sCurPath & "\RGBRAST\RGB9RAST_x86.msi",True
     End If 
     If fso.FileExists(sCurPath & "\RGBRAST\NEWRGB9RAST_x86.msi") Then
      fso.MoveFile sCurPath & "\RGBRAST\NEWRGB9RAST_x86.msi",sCurPath & "\RGBRAST\RGB9RAST_x86.msi"
     End If
    End Sub

    Sub CheckError
     Dim message, errRec
     If Err = 0 Then Exit Sub
     message = Err.Source & " " & Hex(Err) & ": " & Err.Description
     If Not installer Is Nothing Then
      Set errRec = installer.LastErrorRecord
      If Not errRec Is Nothing Then message = message & vbLf & errRec.FormatText
     End If
     Fail message
    End Sub

    Sub Fail(message)
     Wscript.Echo message
     Wscript.Quit 2
    End Sub

    WScript.quit(0)

    </vbscode

    Friday, May 30, 2008 1:24 PM
  • I find this amazing that this issue is known for such long time and wasnt address.
    In general the .net 3.5 installation has large amount of issues (one of them is that silent installaiton might fail because of locked files)
    Wednesday, August 26, 2009 5:58 AM