I have created a .NET C# WinForms application on Win 7 RTM x64, which let's say I have called DataInstaller.
When I run this program outside of the debugger (just an empty form with no functionality at the moment), it works fine until I close the form. I then get a message from the Program Compatibility Assistant that says:
This program might not have installed correctly
I then get the option to reinstall using recommended settings or to say that the install did work as expected.
If I name the app 'DataThingy' this isn't an issue, I guess this is related to the way that programs called *Setup gain a UAC shield icon.
I assume that there will be something simple that I can put in the application manifest to prevent this?
I'm not sure if this occurs on Vista as I don't have access currently.
Changing the name is not an option and turning off UAC is not an option so please don't suggest this!
Edit:
OMG.
It seems that if any of the following are true, UAC sticks its oar in:
Exe name contains the word Installer
AssemblyInfo.cs
AssemblyTitle contains the word 'Installer'
e.g. [assembly: AssemblyTitle("DataInstaller")]
AssemblyProduct contains the word 'Installer'
e.g. [assembly: AssemblyProduct("Data Installation Utility")]
'Installer' can also be 'Setup'.
It beggars belief, it really does. Obviously one of the old VB6 programmers got relocated into the UAC team over at Redmond.
I still need a workaround, I'm not prepared to accept that my application can't possibly be an called an installer because it doesn't touch the registry or put any files in the Program Files folder.
I assume that UAC would put the machine into total lockdown if I tried to execute my application called IAmAVirus.exe. (Actually, I daren't try it because I'm not entirely convinced that I'm just being silly)
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…