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?
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?
Will it work fine if you run msiexec /i "PATH TO MSI" /quiet?
ASKER
Yes it runs with that command.
And you are repackaging IE8 to distribute?
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?
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.
ASKER
I would still like to know what this SQL error is about either way...
ASKER CERTIFIED SOLUTION
membership
Create a free account to see this answer
Signing up is free and takes 30 seconds. No credit card required.
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.
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
ASKER
Thanks I will give it a shot!
Ok. Let me know if you have any issues.
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.
ASKER