MSI Delete Files dynamically created via MST (Orca)
Hello all,
I have a simple MSI that I added a file to via symantecs and this sites guide for adding files. For now I just stuffed a text file into a cab as an experiment using makecab and orca and this works properly.
Since for this project I really just need to stick to only having an MST file without any external scripts, I found that when I uninstall the MSI the uninstall process does not remove the text file I created. I added the RemoveFile and pointed it to the component and file name I created in order to add the one file following the guide below.
For some reason it doesn't work. Not sure if it matters, but I am on Win 7 x64, and altered a simple msi to put the file into c:\windows\syswow64\macromedia\flash
The weird thing is the file installs correctly, I just can't seem to delete it when using the same account I used to install the application in the first place.
Here are the parts from the logs.. my first guess is that it said it was absent.. is this a folder redirect issue?
MSI (s) (34:54) [11:41:15:592]: WIN64DUALFOLDERS: 'C:\Windows\system32\' will substitute 20 characters in 'C:\Windows\SysWOW64\Macromed\Flash\mms.cfg' folder path. (mask argument = 1, the folder pair's iSwapAttrib member = 1).
...
MSI (s) (34:54) [11:41:15:592]: Component: mms.cfg; Installed: Local; Request: Absent; Action: Absent; Client State: Local
...
MSI (s) (34:54) [11:41:17:116]: The file represented by File table key 'mms.cfg' has no eligible binary patches
0 Comments
[ + ] Show comments
Answers (2)
Please log in to answer
Posted by:
anonymous_9363
8 years ago
> my first guess is that it said it was absent
That would be an incorrect guess! :-)
What that line is telling you is that the file is actually installed and not just advertised (Installed: Local;), that the engine has asked for it to be removed (Request: Absent;) and that it will therefore be removed (Action: Absent;)
Once installed, do the files properties change? For example, is the timestamp different? If that changes, for example, the engine determines that it's not the same file and will therefore not remove it.
Do you have a value of '2' in the InstallMode column of the RemoveFile table?
That would be an incorrect guess! :-)
What that line is telling you is that the file is actually installed and not just advertised (Installed: Local;), that the engine has asked for it to be removed (Request: Absent;) and that it will therefore be removed (Action: Absent;)
Once installed, do the files properties change? For example, is the timestamp different? If that changes, for example, the engine determines that it's not the same file and will therefore not remove it.
Do you have a value of '2' in the InstallMode column of the RemoveFile table?
Posted by:
EdT
8 years ago
There is also the possibility that the file is not being removed because your test machine is not cleaned after each test. Having a VM that is reset each time is the only way to test reliably. If you have installed the component that holds the mms.cfg more than one, then a single uninstall will do nothing more than decrement the reference count for that component, and the file will only be removed if the reference count reaches 0. Components and their reference counts are stored in the registry, so you can check this if you want to.
For what it's worth, you do not need to stuff external files into a CAB if adding via a transform. You can just leave them uncompressed and adjust the attributes accordingly.
Finally, because sometimes the bleedin' obvious gets overlooked, have you checked that the component holding mms.cfg does not have the permanent attribute set ?