Walkthrough: Manually Deploying a ClickOnce Application that Does Not Require Re-Signing and that Preserves Branding Information
When you create a ClickOnce application and then give it to a customer to publish and deploy, the customer has traditionally had to update the deployment manifest and re-sign it. While that is still the preferred method in most cases, the .NET Framework 3.5 enables you to create ClickOnce deployments that can be deployed by customers without having to regenerate a new deployment manifest. For more information, see Deploying ClickOnce Applications For Testing and Production Servers without Resigning.
When you create a ClickOnce application and then give it to a customer to publish and deploy, the application can use the customer's branding or can preserve your branding. For example, if the application is a single proprietary application, you might want to preserve your branding. If the application is highly customized for each customer, you might want to use the customer's branding. The .NET Framework 3.5 enables you to preserve your branding, publisher information and security signature when you give an application to an organization to deploy. For more information, see Creating ClickOnce Applications for Others to Deploy.
Note
In this walkthrough you create deployments manually by using either the command-line tool Mage.exe or the graphical tool MageUI.exe. For more information about manual deployments, see Walkthrough: Manually Deploying a ClickOnce Application.
Prerequisites
To perform the steps in this walkthrough you need the following:
A Windows Forms application that you are ready to deploy. This application will be referred to as WindowsFormsApp1.
Visual Studio or the Windows SDK.
To deploy a ClickOnce application with multiple deployment and branding support using Mage.exe
Open a Visual Studio command prompt or a Windows SDK command prompt, and change to the directory in which you will store your ClickOnce files.
Create a directory named after the current version of your deployment. If this is the first time that you are deploying the application, you will likely choose 1.0.0.0.
Note
The version of your deployment may be distinct from the version of your application files.
Create a subdirectory named bin and copy all of your application files here, including executable files, assemblies, resources, and data files.
Generate the application manifest with a call to Mage.exe.
mage -New Application -ToFile 1.0.0.0\WindowsFormsApp1.exe.manifest -Name "Windows Forms App 1" -Version 1.0.0.0 -FromDirectory 1.0.0.0\bin -UseManifestForTrust true -Publisher "A. Datum Corporation"
Sign the application manifest with your digital certificate.
mage -Sign WindowsFormsApp1.exe.manifest -CertFile mycert.pfx
Generate the deployment manifest with a call to Mage.exe. By default, Mage.exe will mark your ClickOnce deployment as an installed application, so that it can be run both online and offline. To make the application available only when the user is online, use the -i argument with a value of f. Since this application will take advantage of the multiple deployment feature, exclude the -providerUrl argument to Mage.exe. (In versions of the .NET Framework prior to version 3.5, excluding -providerUrl for an offline application will result in an error.)
mage -New Deployment -ToFile WindowsFormsApp1.application -Name "Windows Forms App 1" -Version 1.0.0.0 -AppManifest 1.0.0.0\WindowsFormsApp1.manifest
Do not sign the deployment manifest.
Provide all of the files to the customer, who will deploy the application on his network.
At this point, the customer must sign the deployment manifest with his own self-generated certificate. For example, if the customer works for a company named Adventure Works, he can generate a self-signed certificate using the MakeCert.exe tool. Next, use the Pvk2pfx.exe tool to combine the files created by MakeCert.exe into a PFX file that can be passed to Mage.exe.
makecert -r -pe -n "CN=Adventure Works" -sv MyCert.pvk MyCert.cer pvk2pfx.exe -pvk MyCert.pvk -spc MyCert.cer -pfx MyCert.pfx
The customer next uses this certificate to sign the deployment manifest.
mage -Sign WindowsFormsApp1.application -CertFile MyCert.pfx
The customer deploys the application to their users.
To deploy a ClickOnce application with multiple deployment and branding support using MageUI.exe
Open a Visual Studio command prompt or a Windows SDK command prompt, and navigate to the directory in which you will store your ClickOnce files.
Create a subdirectory named bin and copy all of your application files here, including executable files, assemblies, resources, and data files.
Create a subdirectory named after the current version of your deployment. If this is the first time that you are deploying the application, you will likely choose 1.0.0.0.
Note
The version of your deployment may be distinct from the version of your application files.
Move the \bin directory into the directory you created in step 2.
Start the graphical tool MageUI.exe.
MageUI.exe
Create a new application manifest by selecting File, New, Application Manifest from the menu.
On the default Name tab, enter the name and version number of this deployment. Also, supply a value for Publisher, which will be used as the folder name for the application's shortcut link in the Start menu when it is deployed.
Select the Application Options tab and click Use Application Manifest for Trust Information. This will enable third-party branding for this ClickOnce application.
Select the Files tab and click the Browse button next to the Application Directory text box.
Select the directory that contains your application files that you created in step 2, and click OK on the folder selection dialog box.
Click the Populate button to add all your application files to the file list. If your application contains more than one executable file, mark the main executable file for this deployment as the startup application by selecting Entry Point from the File Type drop-down list. (If your application only contains one executable file, MageUI.exe will mark it for you.)
Select the Permissions Required tab and select the level of trust you need your application to assert. The default is Full Trust, which will be appropriate for most applications.
Select File, Save from the menu, and save the application manifest. You will be prompted to sign the application manifest when you save it.
If you have a certificate stored as a file on your file system, use the Sign as certificate file option, and select the certificate from the file system using the ellipsis (...) button.
-or-
If your certificate is kept in a certificate store that can be accessed from your computer, select the Sign with stored certificate option, and select the certificate from the list provided.
Select File, New, Deployment Manifest from the menu to create your deployment manifest, and then on the Name tab, supply a name and version number (1.0.0.0 in this example).
Switch to the Update tab, and specify how often you want this application to update. If your application uses the ClickOnce Deployment API to check for updates itself, clear the check box labeled This application should check for updates.
Switch to the Application Reference tab. You can pre-populate all of the values on this tab by clicking the Select Manifest button and selecting the application manifest you created in previous steps.
Choose Save and save the deployment manifest to disk. You will be prompted to sign the application manifest when you save it. Click Cancel to save the manifest without signing it.
Provide all of the application files to the customer.
At this point, the customer must sign the deployment manifest with his own self-generated certificate. For example, if the customer works for a company named Adventure Works, he can generate a self-signed certificate using the MakeCert.exe tool. Next, use the Pvk2pfx.exe tool to combine the files created by MakeCert.exe into a PFX file that can be passed to MageUI.exe.
makecert -r -pe -n "CN=Adventure Works" -sv MyCert.pvk MyCert.cer pvk2pfx.exe -pvk MyCert.pvk -spc MyCert.cer -pfx MyCert.pfx
With the certificate generated, the customer now signs the deployment manifest by opening the deployment manifest in MageUI.exe, and then saving it. When the signing dialog box appears, the customer selects Sign as certificate file option, and chooses the PFX file he has saved on disk.
The customer deploys the application to their users.
See Also
Reference
Mage.exe (Manifest Generation and Editing Tool)
MageUI.exe (Manifest Generation and Editing Tool, Graphical Client)