Self repair triggers other apps
Hi!
I have seen from time to time that starting an application sometimes triggers self repair on other applications and I can´t figure out why.
Even if the two applications should share files/reg. values the self repair for the "other application" shouldn´t be triggered from starting another application or am I wrong?
Am I repackaging the applications wrong somehow?
Cheers
I have seen from time to time that starting an application sometimes triggers self repair on other applications and I can´t figure out why.
Even if the two applications should share files/reg. values the self repair for the "other application" shouldn´t be triggered from starting another application or am I wrong?
Am I repackaging the applications wrong somehow?
Cheers
0 Comments
[ + ] Show comments
Answers (10)
Please log in to answer
Posted by:
pjbaars
13 years ago
Posted by:
Agathorn
13 years ago
Posted by:
pjbaars
13 years ago
Posted by:
pjgeutjens
13 years ago
David,
if the conflicting file in question (let's say it's a DLL) happens to also provide an advertised entry point for the packages (i.e if it was registered by the MSI and there's a Darwin Descriptor with the registry entries), then any action that "calls on" this file will actually initiate a self-heal cycle. At that point if a new application has actually changed the component's registration data for that file, for example by installing the same file with a component that has a different GUID, a repair WILL be triggered.
There are more types of triggers for a self-heal than missing HKCU keys. There are a number of tables in an MSI besides the Shortcuts table that can create an entry point, off the top of my head, the Class, ProgID and MIME table are amongst these, but that list might not be complete. Then what triggers the install just depends on what the key paths for the components are.
As you probably know, this is actually the crux of the Conflict Management principles when building MSIs, making sure that if 2 or more packages install the same resources on a machine, they do it with components that are, to the highest extent possible, identical amongst packages (same contents and GUIDs). Same with why using Merge Modules can avoid these kinds of problems.
Rgds,
PJ
if the conflicting file in question (let's say it's a DLL) happens to also provide an advertised entry point for the packages (i.e if it was registered by the MSI and there's a Darwin Descriptor with the registry entries), then any action that "calls on" this file will actually initiate a self-heal cycle. At that point if a new application has actually changed the component's registration data for that file, for example by installing the same file with a component that has a different GUID, a repair WILL be triggered.
There are more types of triggers for a self-heal than missing HKCU keys. There are a number of tables in an MSI besides the Shortcuts table that can create an entry point, off the top of my head, the Class, ProgID and MIME table are amongst these, but that list might not be complete. Then what triggers the install just depends on what the key paths for the components are.
As you probably know, this is actually the crux of the Conflict Management principles when building MSIs, making sure that if 2 or more packages install the same resources on a machine, they do it with components that are, to the highest extent possible, identical amongst packages (same contents and GUIDs). Same with why using Merge Modules can avoid these kinds of problems.
Rgds,
PJ
Posted by:
pjbaars
13 years ago
First set registrykey below to enable Windows Installer Logging in general:
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Installer
Reg_SZ: Logging
Waarde: voicewarmupx
After this is done, reproduce the error and locate the logfile in %temp%. Logfile is in format MSIxxxxx.LOG. The x's are random generated.
You can also check the EventViewer for MSI Installer logs. If a repair is triggered, 2 entries are logged. In the logs you can find the exact component in the msi of the conflicting application that is producing the error.
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Installer
Reg_SZ: Logging
Waarde: voicewarmupx
After this is done, reproduce the error and locate the logfile in %temp%. Logfile is in format MSIxxxxx.LOG. The x's are random generated.
You can also check the EventViewer for MSI Installer logs. If a repair is triggered, 2 entries are logged. In the logs you can find the exact component in the msi of the conflicting application that is producing the error.
Posted by:
Agathorn
13 years ago
Posted by:
anonymous_9363
13 years ago
Posted by:
jmcfadyen
13 years ago
the application event log should show the offending component name / product code in the event log.
The component code is of more use to you as the keypaths associated to the component act as the trigger for the self repair. You can find the component code list in here
HKEY_CLASSES_ROOT\Installer\Components
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components
If the component has two products listed it is probably your issue. You may also wants to check the value of each product has the same keypath value. If it doesn't this is likely to be your issue.
You will also need to reverse order of the guid this is well documented all over the place, i blogged about it somewhere once.
The component code is of more use to you as the keypaths associated to the component act as the trigger for the self repair. You can find the component code list in here
HKEY_CLASSES_ROOT\Installer\Components
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components
If the component has two products listed it is probably your issue. You may also wants to check the value of each product has the same keypath value. If it doesn't this is likely to be your issue.
You will also need to reverse order of the guid this is well documented all over the place, i blogged about it somewhere once.
Posted by:
Agathorn
13 years ago
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.