Eventviewer shows repair.
Created: 02 Mar 2011 | 12 comments
Hello,
I have a strange problem, my package keeps repairing (not visible) but in the eventviewer i see warning event id's: 1001 & 1004. That is repairs on CLSID key. If i remove this key from the package or remove the keypath from the component the eventmessages showing up on another component.
The event description is: detection of product{GUID}. Compontt {GUiD} failed. The resource HKCR\CLSID\{GUID] does not exist. But is does exist!
Someone got a sollution for this?
Thanks,
Tom
Discussion Filed Under:
Comments
Ah...
...but does it exist in its entirety? There can be all sorts of junk beneath the key.
Match what you have against what the package is supposed to write. I imagine that the repair is failing because the key is permissioned and the account you're logged in with has insufficient rights to write the data. Hence the repair will be attempted again and again. ProcMon will show you exactly what's happening as it happens.
Remember that HKCR is an amalgam of HKLM\Software\Classes and HKCU\Software\Classes.
Don't know why 'x' happened? Want to know why 'y' happened? Use ProcMon and it will tell you.
Think about using http://www.google.com before posting.
Was your MSI installed
Was your MSI installed per-machine (ALLUSERS set to 1) or per-user (ALLUSERS not set or set to 0) ?
HKCR is a merge of HKLM/Software/Classes and HKCU/Software/Classes, with the HKCU branch given priority where there is a conflict. Thus if you happen to have installed "Per user", the key may be present in the HKCU branch of the user account that was used for installation, but be missing in the HKCU branch of the account you are using for testing. So the first step is to check whether the registry key CLSID\{GUID} is present in the HKLM or HKCU branch of the registry.
If you are getting this error in the event log every time the app is started, and the key is present in the HKLM branch, then I suspect you may have a permissions problem in this part of the registry. Bear in mind that HKLM is read only for non admin users so if the actual key being search for is not present, a standard user will not be able to repair this.
If removing this key path generates an error on another component, which was not previously reported, then there may be something more serious amiss with your package or your test machine. You MUST test on a clean build each time, so use a VM that you can revert back to a clean snapshot after every test install, or rebuild the test machine after each test install. That is the only way to ensure that a corruption of your test build is not to blame for the errors you are seeing.
If your issue has been solved, please use the "Mark as Solution" link on the most relevant thread.
Hi, I have the last issue you
Hi,
I have the last issue you describe Edt. Removing this key triggers a repair on another key that is not in the eventviewer before.
Installation is done per-user
I have a clean build, test it on more than one pc and vm's all the same problem.
Detection of product '{8C063E86-146E-46EC-9381-A060326DD1C8}', feature 'Complete', component '{1D8981D5-8CAB-4182-8B9B-B1AAB7A82B73}' failed. The resource 'HKEY_CLASSES_ROOT\CLSID\{09F312C6-9B0F-457E-B523-C39B81B3C36D}\' does not exist.
Just as a test, try setting
Just as a test, try setting ALLUSERS to 1 at install time and see if this fixes the problem.
If not, then tell us more about your package - is it a vendor MSI, or a capture, or a manually created install?
Also, have you checked registry key permissions on the affected key(s)?
Finally, are there any group policies being applied when you log on?
If your issue has been solved, please use the "Mark as Solution" link on the most relevant thread.
Ok here is what i have
Ok here is what i have tested.
When i run from the commandline with a ALLUSERS=1 or ALLUSERS=2 property the eventvwiere repair problem is gone.
When i just click te MSI the problem exist?!?
Is there a specific reason
Is there a specific reason you wish to deploy "Per User" ? I cannot think of any corporate clients I have worked for that deploy "per user" - all of them have used the "per machine" setting by adding the ALLUSERS property to the property table and setting it to 1.
As you have not responded to my question about how the package was created or whether it is a vendor MSI. all I can add at this point is that I believe the issue is caused by the way that your DLL registration is (not) taking place at the time of installation.
If your issue has been solved, please use the "Mark as Solution" link on the most relevant thread.
Hi Edt, Thanks for you
Hi Edt,
Thanks for you response.
Yes there is a reason, the corporate where the package is for, deploys them with SMS on a per-user basis.
The package by the way, is a recapture of a setup.
Unless there is a truly
Unless there is a truly COMPELLING reason to deploy per-user, corporates using tools such as SMS, always use per-machine deployments for very good technical reasons.
Deploying per-user does not just affect where the shortcut is installed, it also affects the way that any DLL self registration operations are performed. Since SMS uses a service account for deployment, there is no user profile for the DLL registration to go into, or anywhere for the shortcut to be installed. Some of this can be handled by self healing, but normal users lack the access rights to the areas of the registry where most DLLs try to register to by default.
When you captured the application, did you fully exercise the application before performing the second snapshot? Since there are self healing operations appearing in the Event Log, I would guess not, as the symptoms suggest that some aspects of the installation are trying to complete when the app starts up. It may be necessary for you to recapture this app, ensure that it is fully operational, then perform the final snapshot. Then review all the DLL registration information in the Registry table, and consider converting any HKCR entries into HKLM/Software/Classes entries to unequivocally place them in an area of the registry that is visible to all users. For any user-specific content, you need to use self healing or active setup to install this on first startup.
If your issue has been solved, please use the "Mark as Solution" link on the most relevant thread.
>Deploying per-user
...also has implications for licensing, since the overwhelming majority of applications are licensed for use on one machine. Deployed per-user, those apps get installed on any machine which the user logs onto, meaning that the license conditions are contravened. Clients I have worked for who deploy per-user have typically permissioned that target folder to mitigate that position but, when push comes to shove, most software houses want their dues.
Don't know why 'x' happened? Want to know why 'y' happened? Use ProcMon and it will tell you.
Think about using http://www.google.com before posting.
Aplogize for my late respond,
Aplogize for my late respond, didn't have the time last week to look as this problem.
I know the benefits of installing per-machine, but this is the policy of the company i can't change that.
I have tried distirbuting the package trough SMS on a per-machine and per-user based installation, both gave the problem as i described in my first post.
Installing it from the commandline per-machine based doesn't show the repair in the event viewer.
Deploying via SMS means that
Deploying via SMS means that the install is performed with a system account that does not have a user profile, so you do not actually perform a true Per-User install unless you have added code to install the per-user content via self healing or active setup. When you install from the command line, you install using a regular admin account and not via a system account, so the parameters of the install are substantially different.
If you are still unable to get this working, what I recommend is that you capture a manual install with something like InCtrl5, and then snapshot another identical test system (ideally use a VM that you can reset between each attempt), before and after an install via SMS. Then compare the two captures to see what is different between the SMS install and the manual install.
Additionally, you can also enable verbose logging on your test machine(s) and compare installation logs from the manual install and the SMS install cases.
If your issue has been solved, please use the "Mark as Solution" link on the most relevant thread.
Remembering...
...that HKCR is an amalgam of HKEY_CURRENT_USER\Software\Classes and HKEY_LOCAL_MACHINE\Software\Classes, have you checked which the package is actually trying to write? My guess is that it's HKLM (poor COM registration handling during the MSI creation pahse?) and, as stated previously, vanilla users will probably have insufficient rights to write to this area.
Don't know why 'x' happened? Want to know why 'y' happened? Use ProcMon and it will tell you.
Think about using http://www.google.com before posting.
Would you like to reply?
Login or Register to post your comment.