![]() |
|
|
|
#1
|
||||
|
||||
|
I believe your problem is related to what is called a KEYPATH in the MSI. Each component in an MSI requires a Keypath. In your case the shortcut seems to be set as a keyfile. The Windows Installer Service is trying to verify the availability of the keypath element and if it cannot find it it will Repair itself. This will hopefully fix your problem.
First check your event log. In XP it's Start-> Performance and Maintenance -> Administrative Tools-> Event Viewer And for NT Start -> Settings -> Control Panel -> Administrative Tools -> Event Viewer. When you have your event viewer open select Application Log and find the application that is giving you trouble. An easier way can be to right click on application log and clear it. Then run the program and let it give you the repair error. Then check the log. doubleclick on the logged event and you should see something to the following Event ID: 1004 Description: Detection of product "{4ED0C75A-8BC5-4520-B9C7-76968FD5677F}", feature "Test", component "{A7B09747-E527-4E1B-AE51-323CD636210F}" failed. The resource "C:\Progam Files\InstallSite\test.exe" does not exist. The {A7B09747-E527-4E1B-AE51-323CD636210F} listed after component is called the Component Id. Copy that down. You can now close event viewer. Okay, now you need to find Orca. It is included with the Windows Installer SDK. Or google for Orca.msi and look a few pages in to find a link. When you have Orca use it to open up your MSI install file. On the left hand side of the program you see a list of tables. Scroll down and select "Component". You'll now see, in the right side, a table of components and their information including compenent id's. Find the component id's that were giving you trouble and select the KEYPATH cell. Delete the information in the keypath cell for all the component ids that were giving you trouble. Save your MSI. Now uninstall and reinstall the software using the new MSI. You should not have anymore problems. I hope that fixed your problem. If not: Sorry for such a long post.
Last edited by gabri3l; 01-21-2005 at 10:50. |
|
#2
|
|||
|
|||
|
@gabri3l:
I did as you suggested. The Event Log contained the warning messages telling me that "C:\Documents and Settings\All Users\Start Menu\..." was not available. Then I copied the Component Id, installed ORCA.MSI from the PlatformSDK, opened the installation MSI and found the Component Id in the component section. But the KeyPath is an empty value. I can't delete anything from it since there is nothing in it. I guess this is since the shortcuts are not already packed into the MSI, but only created at installation time. Then I tried to remove the whole row. The MSI gave me an internal error when I started it. I searched for other occurences of the Component Id, but I didn't find it anywhere else. Then I searched for the names of the Start Menu entries and found them in the Shortcuts category. I deleted them all and saved the MSI file and installed the software again. This time I had no shortcuts in my Start Menu. I created a shortcut on my own and started the software. This time I was in an endless loop of "repairing" the "damaged" software. Which I only could stop by "burning" them with LordPE, since my Task manager didn't allow me to terminate the processes. Then I tried to find some occurences of the files the shortcuts pointed to, but I didn't find anything which I would classify as "this is it" (I don't know much about MSI). How does the auto-repair feature of MSI file work anyway? If I execute "TEST.EXE", does Windows check if it is a MSI installed application and launch the installer to check it or must "TEST.EXE" call some MSI APIs itself to check if it needs to be repaired? I bet disabling this would decrease startup time of MSI installed software. |
|
#3
|
|||
|
|||
|
Try this:
http://desktopengineertraining.com/msirestrictrun They also have a few other tools for use with MSI files that you may find useful. |
|
#4
|
||||
|
||||
|
It's hard to diagnose the problem without the software in front of me, but you can try opening the MSI in orca and selecting the PROPERTY cell on the left hand side. Then in the cells to the right add a new row. In the new row under property type DISABLEADVTSHORTCUTS and set the value cell to 1. Then install the software.
The problem is that when a program using MSI installs it registers itself with Windows Installer Service. The service then controls certain program properties. You cannot stop a certain program from using the Repair option. However, you can disable the service all together by opening up your registry and going to HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Installer (you may have to create this folder) and Create a new DWORD value, or modify the existing value, called "DisableMSI" and set it according to 2 = disabled. Exit your registry, you may need to restart. This will almost definately fix your repairing issues. The only problem you will face is that this disables the MSI service for all applications. Last edited by gabri3l; 01-22-2005 at 08:34. |
|
#5
|
|||
|
|||
|
@gabri3l:
Thank you for all your work you invested in my problem. Finally the DISABLEADVTSHORTCUTS trick worked and solved my problem. Now I can open my start menu again without falling off my chair. :-) @ee45678: Thank you for the link, but I didn't find anything which would help me in my current situation there. But perhaps I will need it later again. |
![]() |
| Thread Tools | |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Windows Update Disable and Enable | mdj | General Discussion | 0 | 03-05-2018 23:45 |