I'm working on a ClickOnce application which now I want to sign with a certificate I got from Comodo, solely for the purpose of avoiding the "Unknown Publisher" warning (and now also the SmartScreen ban) when users install it.
I managed to sign the ClickOnce manifest at Project -> Signing -> Sign the ClickOnce manifests in Visual Studio. But wasn't able to sign the assembly by checking the Sign the assembly check box using my Comodo certificate due to several errors. Then I tested it with a test certificate generated by Visual Studio, and I got an error telling me "Assembly generation failed -- Referenced assembly 'blah.dll' does not have a strong name". So apparently, even if I was able to sign my assembly with my actual certificate, I'd need to sign the dll too.
Then I read here that you can sign your assemblies by entering something like this into the post-build command line: "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\signtool.exe" sign /f "$(ProjectDir)actual_cert.pfx" /p password /v "$(ProjectDir)obj\x86\$(ConfigurationName)\$(TargetFileName)". Which got rid of the non-signed referenced dll error too.
I published my application to a test location and all 3 (or 2?) warning dialogs showed my name as the publisher (I understand users would need to install my application several times to get rid of the SmartScreen thing). So everything seemed to be OK. Which is precisely what worries me, since the dll is not signed.
Is this a hack that will eventually backfire on me? Will the SmartScreen thing never go away even after users install my application several times because the dll doesn't have a strong name? Or is everything going to be OK? And if so, why wouldn't Visual Studio let you use an unsigned dll if it is actually possible.