Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does the MSI installer reconfigure if I delete a file?

I have created an MSI installer package in Visual Studio 2008. The problem is that after install, if I delete ANY of the installed files. This is not my intended behavior for my installer package. My File installation properties are:

PackageAs vsdpaDefault Permanent False ReadOnly False Register vsdrfDoNotRegister System False Transitive False Vital False

If this is trivial, please forgive me. I can't believe I have not been able to get Google to give up the answer. :)

like image 942
JJ3 Avatar asked May 12 '11 16:05

JJ3


People also ask

Can I delete an MSI file?

msi) and setup patches (. msp) used for your currently installed programs. These files are required if you want to update, modify, or uninstall a program on your computer. Do not delete them blindly.

Can I delete files in C :\ Windows Installer?

The C:\Windows\Installer folder contains Windows installer cache, it's used to store important files for applications installed using the Windows Installer technology and should not be deleted. The installer cache is used to maintain (remove / update) the applications and patches installed on the computer.

Where are MSI files stored after install?

msi file is stored in the Windows Installer cache. Every update to the product such as a hotfix, a cumulative update, or a service pack setup, also stores the relevant . msp or . msi file in the Windows Installer cache.


2 Answers

Windows Installer is a deployment technology, its job is to install the specified files and registry settings and keep them in the specified install locations and to ensure they are the right versions - self-repair or resiliency is a mechanism to that end. Its operation conflicts with a developer's need to exchange files on the fly for debugging, development and testing.

As a developer you may be interested in deploying your MSI and then deleting or replacing files on the fly to debug things. In these cases MSI can be a nuisance because it never stops doing its job and will reinstall the correct files. This is called "self-repair" and can be spectacularly annoying! :-).

There are a lot of ways to work around this, MSI is quite complex. Since the "self-repair" is normally invoked from an "advertised shortcut" the easiest way to avoid this MSI feature is to launch the EXE file directly from the file system and not via a shortcut. This bypasses the MSI self repair mechanism for all but the most complex EXE files. You can also manually create a non-advertised shortcut on the desktop that will not trigger a self-repair (right click and hold executable and whilst holding down the right mouse button, drag-and-drop to desktop and release button over an empty spot and click "Create shortcut here").

For the record self-repair is triggered by "self-repair entry points" for key-path validation. They include advertised shortcuts, file associations, COM registry data among other things.

There is a lot more to self-repair, or resiliency which is its official name, please check this comprehensive article on self-repair problems to find ways to resolve your specific problem. It is a long article, but it should be worth the read if you have self-repair problems.


UPDATE, October 2018:

Self-Repair In Detail: More than anyone wants to know about self-repair:

  1. Self-repair - explained
  2. Self-repair - finding real-world solutions
  3. Self-repair - how to avoid it in your own package

Links:

  • Similar: Visual Studio 2015 msi build initiates another installation
  • RestartManager causes worker role to restart
  • What is the use of Repair option in a msi installer and what does it really do (internally)?
  • Disable MSI auto-repair on installed program
like image 75
Stein Åsmul Avatar answered Sep 26 '22 22:09

Stein Åsmul


It's by design, known as "resiliency": http://www.msifaq.com/a/1037.htm.

like image 33
Bob Arnson Avatar answered Sep 22 '22 22:09

Bob Arnson