Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

Auto-repair kills custom action results


3 replies to this topic

Alexei

Alexei
  • Full Members
  • 2 posts

Posted 20 February 2007 - 14:09

Hello. Not sure if I'm posting to correct topic..

I use .Net installer component to perform custom installer action (overriding void Install(IDictionary stateSaver) of System.Configuration.Install.Installer)

I update .config XML file with password that user enters during installation process.

On some PC's (happens quite randomly), after working properly for certain time, application suddenly fails because in .config XML there is no password anymore.

I suspect Windows Installer auto-repair feature is silently replaces this file.

Seem to happen only if the newer version of the application is installed without manually deinstalling previous.

How can I get rid of auto-repair, or how to perform custom action so that it is not considered as malicious change?



Glytzhkof

Glytzhkof
  • Moderators
  • 1,447 posts

Posted 20 February 2007 - 14:13

I believe this would be best accomplished by enabling the "never overwrite if keyfile exists" feature and also setting the file to be permanent.
Regards
-Stein Åsmul

Alexei

Alexei
  • Full Members
  • 2 posts

Posted 20 February 2007 - 14:59

QUOTE (Glytzhkof @ 2007-02-20 14:13)
I believe this would be best accomplished by enabling the "never overwrite if keyfile exists"

Thanks. Will try to go this way.
Could you suggest wich .msi table contains "never overwrite if keyfile exists"?
Didn't found in "Property" table.

Glytzhkof

Glytzhkof
  • Moderators
  • 1,447 posts

Posted 21 February 2007 - 11:34

This is a bitflag set in the MSI Component table. Most tools have a GUI option which is more easily set, but you can still go into the raw table view and set the bit flag to the appropriate value. In your case you need:

msidbComponentAttributesPermanent 16
msidbComponentAttributesNeverOverwrite 128

So 16 + 128 = 144
Regards
-Stein Åsmul