1

I was given a dll file with a data file. Whenever I delete that data file, Windows Installer pops up every time at my program's loading stage. I've tried to use ILDASM to look into the assembly. But I couldn't find the data files's name with a search.

The dll was obfuscated. Could this be the reason? Thanks!

EDIT: It is a data file (instead of resource file, to be more precisely) that the dll may use or may not use depends on the condition. On my case, we no longer need that data file but want to keep the dll for another part of the functionality.

Archer
  • 507
  • 1
  • 8
  • 21
  • I don't understand your question. Why are you deleting the resource file? What are you trying to accomplish? – Jeroen Mostert Oct 22 '14 at 12:36
  • @JeroenMostert It is a data file(see edit above) – Archer Oct 22 '14 at 12:41
  • @PatrickHofman I'm sure it is Windows Installer because it is searching for msi of my program. – Archer Oct 22 '14 at 12:42
  • If Windows Installer pops up when you delete that file and run the program, then it's possible some sort of repair logic is being invoked. Try removing permissions from the file to prevent it from being accessed without physically removing it. – Jeroen Mostert Oct 22 '14 at 12:43
  • It could be an advertised shortcut as described here - https://social.msdn.microsoft.com/Forums/windows/en-US/ea16bb03-e6ad-4008-b3aa-4b92da24e67f/exe-shortcut-restores-deleted-files-in-application-folder?forum=winformssetup – Shaun Wilde Oct 22 '14 at 12:46

2 Answers2

1

MSI / Windows Installer will try to keep files installed in place on disk. This feature is known as resiliency.

Please see this article for a thorough explanation: How can I determine what causes repeated Windows Installer self-repair?

There is also a similar answer on serverfault.com that may be more accessible.

Community
  • 1
  • 1
Stein Åsmul
  • 39,960
  • 25
  • 91
  • 164
1

It's often pointless to try to fight repair by any means other than the documented way to disable it for a particular file (component), which is to set the Component guid to empty (null) in the setup project, the Componennt table docs here:

http://msdn.microsoft.com/en-us/library/aa368007(v=vs.85).aspx

See ComponentId column. I assume you can set this with InstallShield.

PhilDW
  • 20,260
  • 1
  • 18
  • 28