I have a setup project, its been working nicely for atleast a couple of years. I have recently added a new project to the mix, a winform. I took me a great deal of googling and research to make it work – many thanks to the loads of articles I found during my “adventure”.
This new project enables me to right click a file in Explorer and add it to my system. I can install the project fine, files are being added/copied to their rightfull place. Code is fine, does precisely what I told it to.
For some reason the Registry editor and Windows Registration DB does not agree on keys.
Registry editor states I should have HKCR\*\shell\Add to system\command and a string key saying
Name: (Default)
Value: "[TARGETDIR]mySystemAddFileForm "%1"
Sofar so good, yes Windows reg db also believes the path to be right. Yes there is a “but”.
For some reason Windows reg db believes there should be a 2nd string key saying
Name: (Default)
Value: null
The Windows takes precedence and messes up my logic (design, code, idea).
If I manually clean this up, I can right click the files just fine and add them to the system. Just to be clear. Yes, Explorer does have a right click option that says “Add to system” and yes after I edit regedit manually it does work when I click it.
Before I changed it to the Registry editor, I had the key generation in the CustomSetupActions but I couldn’t make that handle if the user decided to edit the installation folder. From default [programfiles] (c:\Program Files\ .. ) to whatever the user decided at install point.
By Registry editor I mean the one in the Setup project, View/Registry.
How can I tell Windows to stay the f* of my finely tuned code and let me decide what reg keys are created when and where.
Edited: (Standard) to (Default). Windows may translate the (Default) to the local language. Leave it at Default.
Windows Installer can install default values and usually they are not overridden automatically by Windows.
To install a default value with a Visual Studio setup project, make sure that the Name field is empty: http://msdn.microsoft.com/en-us/library/windows/desktop/aa371168(v=vs.85).aspx
This is usually enough. If the value is not as expected after install, try creating a verbose installation log to see what happens during install. Most likely the registry entry is skipped or written somewhere else.