Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does my signed, click-once application say it has an unknown publisher

I want to create an application that is easy to install. The installation process is quite complex (lots of permissions, firewall rules, services, etc.). So I decided to write the setup program in C# (.net 4), and then make the setup program itself a click-once install.

The idea was that the user would go to the website, click install, my setup program would be installed on their computer by click once, and then it would run, setting up the main program.

In order to make this an easy process, I obviously had to sign all the executables. I bought a Comodo code signing certificate, installed it in my certificate store, and ticked "Sign the Click Once manifests" in VS Express 2012. I also included a post-build step which ran

SIGNTOOL.EXE sign /f TrumphurstCodeCertificate.pfx /p <my password> TimeClockSetup.exe

I cleaned everything out of my build folder and the deployment website, and ran a clean build.

I checked the properties of the executable in the build folder, and it was shown as published by me.

I published the program to the web site, started a different Windows 8 computer, navigated to the web site, and clicked the Install button.

I was prompted Do you want to run or save setup.exe, and selected run.

Then I was prompted setup.exe is not commonly downloaded and could harm your computer - I clicked Actions, and it said This program might harm your computer. It did say the publisher was Trumphurst Ltd, and gave me the option to run anyway, which I clicked.

Then I got "Open File - Security Warning", for ".....\TimeClockSetup.exe", "Publisher: Unknown Publisher".

How come the exe showed as Unknown publisher?

I browsed to the exe in the user data directory it had been installed in, and no "Digital Signatures" tab showed in the Properties dialog.

However, if I browse to the exe in my build folder,it has a signature.

[Later] I remember reading somewhere that some parts of the build or publish process use the exe file in the obj folder rather than the one in the build output folder, so I added signing that to the post build steps - it made no difference.

like image 800
Nikki Locke Avatar asked Dec 19 '13 15:12

Nikki Locke


People also ask

What does it mean by unknown publisher?

An unknown publisher is a software creator whose identity isn't verified by your device's operating system (such as Windows or MacOS) or web browser (like Google Chrome).

Does ClickOnce require admin rights?

Security permissions. Windows Installer deployment requires administrative permissions and allows only limited user installation; ClickOnce deployment enables non-administrative users to install and grants only those Code Access Security permissions necessary for the application.

What is publish with ClickOnce?

ClickOnce is a new application deployment technology that makes deploying a Windows Forms based application as easy as deploying a web application. ClickOnce applications can be deployed via web servers, file servers or CDs.


1 Answers

You need to purchase an Authenticode certificate for your development company (or yourself) and sign the application. To sign, look at your project's properties and go to the 'signing' category. Choose 'Sign the Assembly' and you can select your certificate to sign with.

Make sure this is just the root certificate, or VS won't be able to use it. Also, the end-user will need to have the full certificate path installed for the machine to recognize you as being a trusted publisher.

If you export your certificate from your machine with the full certificate path, you can move this file to the client machine and install the certificate to both the TrustedPublishers and Root-CA store.

like image 116
ps2goat Avatar answered Oct 22 '22 14:10

ps2goat