cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
hi all

is there a property or something that i can add to make sure that self-healing will be disabled for my msi?

i need to install but no self-healing allowed.

thanks
(6) Replies
CChong
By Level 11 Flexeran
Level 11 Flexeran
I don't know of any available way that will stop Windows Installer from Self Repairing MSI packages.

Self repair is one of the most powerful features of Windows Installer. It gives the installation the ability to monitor and heal a broken MSI Package automatically.

I am not sure why you want to suppress the self repair feature. Here are some common causes of self repair.

When an application's detects that a component key path is missing, the installation initiates self-repair.

Your installation might self repair if it contains HKEY_CURRENT_USER keys and has a component key path of an HKCU registry key. Self repair occurs the first time a new user logs on and launches the application. Windows Installer depends on the self repair functionality to distribute the HKCU keys to other users on the machine who are using the application.

Also when Windows Installer checks the registry key paths of the components, it verifies that the key exists, and that it has the same value that was specified in the .MSI file. If your application modifies the registry key, it can cause self repair to be triggered.

You can use Event Viewer to diagnose why your package is performing self repair. Event Viewer is available on Windows XP, Windows 2000, and NT.

Also you can use MSISPY to find out what components in an MSI package are causing self repair to happen. This utility is part of MSI SDK.
thanks for your answer.

i know about self-healing capacities, this is one of the major reason why we use msi files.

but i need to distribute 333 mg of files, and into a msi file this is weighing only 136 mg, but that data will change in the future that is why i don't want self-healing on that.

so i need to disable repair.

thanks
CChong
By Level 11 Flexeran
Level 11 Flexeran
After reading your post I still don't understand why you are trying to disable the repair.
One thing you can try is to Nullify the key paths column of all the components. According to MSI help If KeyPath is null, then the folder of the Directory_ column is used as the key path.
But give it a shot and see what happens.
ok here is one example why i don't want repair enabled.

i need to push 333 mb of data to pcs in my domain, and with a msi file this weighs only 136 mb, but that data will changed in some near future and i don't want those changed files to be repaired by self-healing.

that's it.

thanks
CChong
By Level 11 Flexeran
Level 11 Flexeran
I'll try and help with my limited knowledge.
I think providing none of those files are set as key files then it wont try and self heal.
I think the best practice for this would be to create a new feature and component for your data files and make sure none of them are key files.
I would like it though if someone could reply to this with an example of what self heal wil repair when its instantiated.

ie:
Feature1
Component1
Component2

Feature2
Component3
Component4

If Windows Installer detects a key file change in Component4 and instantiates a Self Heal, will it just self heal the components within Feature2 ?
Just need to get this clear in my mind....

Cheers
Jon




🙂 🙂
Jon...only Feature2 components would heal...

Basically, everyone has been correct so far. There are many ways to complete this depending our your package needs.

1) Make sure you nullify all of your "keys"
2) Change your shortcut to not being advertised

Also, you could break this out into separate features as Jon suggested so that part of your package is self-heal and not the rest.
Top Kudoed Authors