The infinite repair loop. (GPO deployment)
I'm working with AutoAudit 1.6.33.
App comes from the vendor as a single self extracting EXE created by installshield. Help file states that you can run the exe with a /v COMMAND, and it will pass COMMAND to msiexec. So i run it with a /v /a to create an administrative install point. IAP appear to be created.
When I run it manually, it installs fine. When I assign it in GPO, it installs during login as expected, but when I launch the application it continally tries to repair itself. The event log tells me:
"Detection of product '{productcode}' feature 'AlwaysInstall' failed during request for component '{differerent productcode}'"
Some fun facts about this:
- When the package is assigned via GPO and I try to remove it via GPO, nothing gets uninstalled.
- This is really odd. It works for the 16 people that currently have the package assigned.
Any ideas about where I should go on this one?
App comes from the vendor as a single self extracting EXE created by installshield. Help file states that you can run the exe with a /v COMMAND, and it will pass COMMAND to msiexec. So i run it with a /v /a to create an administrative install point. IAP appear to be created.
When I run it manually, it installs fine. When I assign it in GPO, it installs during login as expected, but when I launch the application it continally tries to repair itself. The event log tells me:
"Detection of product '{productcode}' feature 'AlwaysInstall' failed during request for component '{differerent productcode}'"
Some fun facts about this:
- When the package is assigned via GPO and I try to remove it via GPO, nothing gets uninstalled.
- This is really odd. It works for the 16 people that currently have the package assigned.
Any ideas about where I should go on this one?
0 Comments
[ + ] Show comments
Answers (18)
Please log in to answer
Posted by:
WiseUser
19 years ago
I'm glad to hear I'm not the only one who does things like that!! I've reached 207 posts without posting anything too embarrassing, but I think it's only a matter of time![:D]
Try running the following script on a PC where the package is installed:
Const sPRODCODE = "{productcode}"
Const sCOMPCODE = "{different productcode}"
Set oInst = CreateObject("WindowsInstaller.Installer")
Msgbox oInst.ComponentPath(sPRODCODE, sCOMPCODE)
Remember to substitute the correct values into the two constants.
What does the resulting message box say? If it returns a path, does the resource exist?
Try running the following script on a PC where the package is installed:
Const sCOMPCODE = "{different productcode}"
Set oInst = CreateObject("WindowsInstaller.Installer")
Msgbox oInst.ComponentPath(sPRODCODE, sCOMPCODE)
Remember to substitute the correct values into the two constants.
What does the resulting message box say? If it returns a path, does the resource exist?
Posted by:
WiseUser
19 years ago
Posted by:
Bladerun
19 years ago
Posted by:
WiseUser
19 years ago
Posted by:
Bladerun
19 years ago
Posted by:
WiseUser
19 years ago
Everytime you run the shortcut it self-repairs, and you get the event log message described above? You substitute the product code and the component code values from the event viewer into my script and get nothing back?
Can you post exactly what you substituted into the two constants?
I take it the application appears installed under ARP in the control panel? And you can actually see the application folder installed?
Can you post exactly what you substituted into the two constants?
I take it the application appears installed under ARP in the control panel? And you can actually see the application folder installed?
Posted by:
Bladerun
19 years ago
Everytime you run the shortcut it self-repairs, and you get the event log message described above? You substitute the product code and the component code values from the event viewer into my script and get nothing back?
Correct on both.
Can you post exactly what you substituted into the two constants?
Const sCOMPCODE = "{188F87BF-2DEE-4E56-980C-9E0DA079E5B1}"
Set oInst = CreateObject("WindowsInstaller.Installer")
Msgbox oInst.ComponentPath(sPRODCODE, sCOMPCODE)
I take it the application appears installed under ARP in the control panel? And you can actually see the application folder installed?
Correct, it shows up in ARP. Although when i try to remove it, it doesn't uninstall.
All the files & reg keys are to be on the system. In fact, if I cancel the repair about 20 times, the application launches successfully.
Posted by:
WiseUser
19 years ago
Weird!
If you search for "APIFunc.dll" in the registry under the following path, do you find anything?
"HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\"
What if you don't cancel the repairs, does it eventually launch too?
What if you run this?
Const sPRODCODE = "{3F90EA81-B0EC-42E2-9BB2-378134F47F00}"
Set oInst = CreateObject("WindowsInstaller.Installer")
Msgbox oInst.ProductState(sPRODCODE)
If you search for "APIFunc.dll" in the registry under the following path, do you find anything?
"HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\"
What if you don't cancel the repairs, does it eventually launch too?
What if you run this?
Set oInst = CreateObject("WindowsInstaller.Installer")
Msgbox oInst.ProductState(sPRODCODE)
Posted by:
Bladerun
19 years ago
When I searched under installer it turned up once in Installer\UserData\S-1-5-98\<long alphanumberic string>
If you don't cancel the repairs, it keeps trying to repair over & over, repeating that error in the application event viewer each time, and the application never launches, just stays at the splash screen. I've let it run for several hours before killing it, and have found several hundreded of that error in the event log.
If you don't cancel the repairs, it keeps trying to repair over & over, repeating that error in the application event viewer each time, and the application never launches, just stays at the splash screen. I've let it run for several hours before killing it, and have found several hundreded of that error in the event log.
Posted by:
WiseUser
19 years ago
The event that you described has a "1001" event ID. Do you also have some "1004" ones? They're more interesting because they actually tell you what's missing.
It's a "per-machine" install so the path should be something like this (the Xs wouldn't be Xs though):
"...Installer\UserData\S-1-5-98\Components\FB78F881EED265E4XXXXXXXXXXXXXXXX\18AE09F3CE0B2E24XXXXXXXXXXXXXXXX"
And the value should be the full path to the keypath for this component. What was this path?
Did you try this?
Const sPRODCODE = "{3F90EA81-B0EC-42E2-9BB2-378134F47F00}"
Set oInst = CreateObject("WindowsInstaller.Installer")
Msgbox oInst.ProductState(sPRODCODE)
It's a "per-machine" install so the path should be something like this (the Xs wouldn't be Xs though):
"...Installer\UserData\S-1-5-98\Components\FB78F881EED265E4XXXXXXXXXXXXXXXX\18AE09F3CE0B2E24XXXXXXXXXXXXXXXX"
And the value should be the full path to the keypath for this component. What was this path?
Did you try this?
Set oInst = CreateObject("WindowsInstaller.Installer")
Msgbox oInst.ProductState(sPRODCODE)
Posted by:
Bladerun
19 years ago
Posted by:
WiseUser
19 years ago
The "1" returned means that it's advertised - which is what you'd expect if it's been assigned to the user.
The path you gave me earlier was for a "per-machine" component. Unfortunately, you didn't post the entire path so I don't know if it was the same component or even the same product.
It would be good to know if you're getting "1004" events too. These should give an indication about which components are broken, and what their keypaths are.
The path you gave me earlier was for a "per-machine" component. Unfortunately, you didn't post the entire path so I don't know if it was the same component or even the same product.
It would be good to know if you're getting "1004" events too. These should give an indication about which components are broken, and what their keypaths are.
Posted by:
Bladerun
19 years ago
Posted by:
sean_c_roberts
19 years ago
Ok guys, I'm gonna risk looking silly to pose a question - and obviously you guys know your stuff on component programming - have you checked the rights on keys you're trying to modify?
Is it possible you're running your MSI not elevated on a locked-down system?
I ask this because in my past experience, I'll get the never-ending repairs when I'm trying to change keys I have no rights to change.
Share and Enjoy!
- Sean Roberts
Is it possible you're running your MSI not elevated on a locked-down system?
I ask this because in my past experience, I'll get the never-ending repairs when I'm trying to change keys I have no rights to change.
Share and Enjoy!
- Sean Roberts
Posted by:
WiseUser
19 years ago
"18AE09F3CE0B2E24B92B7318434FF700" does indeed correspond to your productcode "{3F90EA81-B0EC-42E2-9BB2-378134F47F00}".
But "6928740BE0842644FAFBCA5196FF16D2" does not correspond to the component code that you posted earlier - "{188F87BF-2DEE-4E56-980C-9E0DA079E5B1}".
I think that "6928740BE0842644FAFBCA5196FF16D2" should correspond to component code "{B0478296-480E-4462-AFBF-AC1569FF612D}"??
Do you have a component with this component code in your package?
What if you run the following script?
Const sPRODCODE = "{3F90EA81-B0EC-42E2-9BB2-378134F47F00}"
Const sCOMPCODE = "{B0478296-480E-4462-AFBF-AC1569FF612D}"
Set oInst = CreateObject("WindowsInstaller.Installer")
Msgbox oInst.ComponentPath(sPRODCODE, sCOMPCODE)
But "6928740BE0842644FAFBCA5196FF16D2" does not correspond to the component code that you posted earlier - "{188F87BF-2DEE-4E56-980C-9E0DA079E5B1}".
I think that "6928740BE0842644FAFBCA5196FF16D2" should correspond to component code "{B0478296-480E-4462-AFBF-AC1569FF612D}"??
Do you have a component with this component code in your package?
What if you run the following script?
Const sCOMPCODE = "{B0478296-480E-4462-AFBF-AC1569FF612D}"
Set oInst = CreateObject("WindowsInstaller.Installer")
Msgbox oInst.ComponentPath(sPRODCODE, sCOMPCODE)
Posted by:
WiseUser
19 years ago
Posted by:
Bladerun
19 years ago
I didn't see that component in the AutoAudit package.
When I ran that script, the msgbox was empty.
And you are correct, the MSI is running with elevated rights. AlwaysInstallElevated is set to 1, the account I'm logging in with is an admin account (per domain policy), and the log file confirms this.
When I ran that script, the msgbox was empty.
And you are correct, the MSI is running with elevated rights. AlwaysInstallElevated is set to 1, the account I'm logging in with is an admin account (per domain policy), and the log file confirms this.
Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.
so that the conversation will remain readable.