Link to home
Create AccountLog in
Avatar of cpeele
cpeele

asked on

Group Policy Software Installation - Unable to read MSI file

This question is related to the one at this link: https://www.experts-exchange.com/questions/26554295/Install-IE8-via-Group-Policy-on-XP-client.html

I never did get a solution. After adding the MSI to the group policy, the event viewer comes up with the error "Unable to read MS file... SQL query syntax invalid or unsupported". Screenshot attached. What is the problem? User generated image
Avatar of cpeele
cpeele

ASKER

Additional Notes: The MSI is a package build with the IEAK. It works fine when run manually.
Avatar of Joseph Moody
Will it work fine if you run msiexec /i "PATH TO MSI" /quiet?
Avatar of cpeele

ASKER

Yes it runs with that command.
And you are repackaging IE8 to distribute?
Avatar of cpeele

ASKER

What I did was create an MSI that has custom settings for IE and is a silent install. The latter being the main reason for creating the MSI. We have a lot of systems with IE6 and want to upgrade them easily.
Can you not deploy it through WSUS?
Avatar of cpeele

ASKER

I don't have WSUS. I plan on installing it at some point. But I have to get a server set up first. Also, as far as I understand it, and correct me if I'm wrong, I would just be able to approve it for install, and not actually control the install. i.e. force it to be installed, and make it silent.
Avatar of cpeele

ASKER

I would still like to know what this SQL error is about either way...
ASKER CERTIFIED SOLUTION
Avatar of Joseph Moody
Joseph Moody
Flag of United States of America image

Link to home
membership
Create a free account to see this answer
Signing up is free and takes 30 seconds. No credit card required.
See answer
Avatar of cpeele

ASKER

OK. Yeah if you don't mind I'd like to see the script. Not sure when I will get WSUS up and the old IE is causing users a lot of issues when viewing needed websites so it's kind of pressing right now. Thanks for your help.
I attached the vbs script.

At the top, you will need to edit the asoftware (0,0) through aSoftware (0,2)

(0,0): Name of Software
(0,1): Path to batch fil that runs MSIEXEC. You have to do that so that it will stay silent
(0,2): Fake file. I occassionally use this line to run NTFS security scripts.

At startup, this script will run. It will call 0,1 and install IE8. Upon finishing, it will write IE8 (or whatever value you have in 0,0 to a hidden file at C:\. At the next startup, it will check to see if IE8 is written to that file. If it is, the script terminiates.

Const ForReading = 1, ForWriting = 2
   newFile = 0
   Dim aSoftware(0, 2)
   aSoftware(0,0) = "IE8"
   aSoftware(0,1) = "UNC to batch file that runs MSIEXEC command"
   aSoftware(0,2) = "Fake File somewhere"

      
   On Error Resume Next
   Set WshShell = CreateObject("WScript.Shell")
   Set fso = CreateObject("Scripting.FileSystemObject")

   If fso.FileExists("C:\IS.dat") = 0 Then    'If file is present, read contents to determine installed software
     Set fDataFile = fso.CreateTextFile("C:\IS.dat", True)
     fDataFile.close
     set f = fso.GetFile("C:\IS.dat")
     f.attributes = 6
     newFile = 1
   End If

   Set fDataFile = fso.OpenTextFile("C:\IS.dat", ForReading)
   Do While Not fDataFile.AtEndOfStream
     strSoftware = fDataFile.ReadLine
   Loop
   fDataFile.close
   aLoadedSoftware = Split(strSoftware, ",", -1, 1)

   For o = 0 To UBound(aSoftware)
     found = 0
     For i = 0 to UBound(aLoadedSoftware)
       If aSoftware(o, 0) = aLoadedSoftware(i) Then
         found = 1
         i = UBound(aLoadedSoftware)
       End If
     Next
     If found = 0 Then
       If newFile = 1 Then
         strSoftware = aSoftware(o, 0)
         newFile = 0
       Else
         strSoftware = strSoftware & "," & aSoftware(o, 0)
       End If
       set f = fso.GetFile("C:\IS.dat")
       f.attributes = 0
       Set fDataFile = fso.OpenTextFile("C:\IS.dat", ForWriting, True)
       fDataFile.writeLine strSoftware
       fDataFile.close
       f.attributes = 6

       If Not IsEmpty(aSoftware(o, 1)) And aSoftware(o, 1) <> "" Then
         Set oExec = WshShell.Exec(aSoftware(o, 1))
         Do While oExec.Status = 0
           WScript.Sleep 100
         Loop
       End If
       If Not IsEmpty(aSoftware(o, 2)) And aSoftware(o, 2) <> "" Then
         Set oShell = WScript.CreateObject ("WSCript.shell")
         oShell.run aSoftware(o, 2), 0, true
         Set oShell = Nothing
       End If
     End If
   Next

Open in new window

Avatar of cpeele

ASKER

Thanks I will give it a shot!
Ok. Let me know if you have any issues.
Avatar of cpeele

ASKER

I couldn't get the script to work, it ran on startup but did not install IE8. However, I think I will just go ahead and get WSUS set up as it seems like the best route. Thank you.
No problem.