Création d'applications ClickOnce destinées à être déployées par des tiersCreating ClickOnce Applications for Others to Deploy

Envisagez de pas tous les développeurs qui créent des déploiements ClickOnce déployer les applications elles-mêmes.Not all developers who are creating ClickOnce deployments plan to deploy the applications themselves. Bon nombre d'entre elles simplement empaqueter leur application à l’aide de ClickOnce et ensuite remettre les fichiers à un client, par exemple une grande entreprise.Many of them just package their application by using ClickOnce and then hand the files off to a customer, such as a large corporation. Le client est alors chargé d’héberger l’application sur son réseau.The customer becomes the one responsible for hosting the application on its network. Cette rubrique décrit certains des problèmes inhérents à ces déploiements dans les versions du .NET Framework antérieures à la version 3.5.This topic discusses some of the problems inherent in such deployments in versions of the .NET Framework prior to version 3.5. Elle décrit ensuite une nouvelle solution fournie dans le .NET Framework 3.5 à l’aide de la nouvelle fonctionnalité « utiliser le manifeste pour approbation ».It then describes a new solution provided by using the new "use manifest for trust" feature in the .NET Framework 3.5. Enfin, elle présente les stratégies recommandées pour la création de déploiements de ClickOnce pour les clients qui utilisent encore des versions antérieures du .NET Framework.Finally, it concludes with recommended strategies for creating ClickOnce deployments for customers who are still using older versions of the .NET Framework.

Problèmes liés à la création de déploiements pour les clientsIssues Involved in Creating Deployments for Customers

Plusieurs problèmes se produisent lorsque vous envisagez de fournir un déploiement à un client.Several issues occur when you plan to supply a deployment to a customer. Le premier concerne la signature de code.The first issue concerns code signing. Afin d’être déployé sur un réseau, le manifeste de déploiement et manifeste d’application d’un déploiement ClickOnce doivent tous deux être signées avec un certificat numérique.In order to be deployed across a network, the deployment manifest and application manifest of a ClickOnce deployment must both be signed with a digital certificate. Cela pose la question s’il faut utiliser le certificat du développeur ou celui du client lors de la signature des manifestes.This raises the question of whether to use the developer's certificate or the customer's certificate when signing the manifests.

La question du certificat à utiliser est critique, comme les identités d’une application ClickOnce sont basée sur la signature numérique du manifeste de déploiement.The question of which certificate to use is critical, as a ClickOnce application's identity is based on the digital signature of the deployment manifest. Si le développeur signe le manifeste de déploiement, il peut provoquer des conflits si le client est une grande entreprise, et plus d’une division de l’entreprise déploie une version personnalisée de l’application.If the developer signs the deployment manifest, it could lead to conflicts if the customer is a large company, and more than one division of the company deploys a customized version of the application.

Par exemple, supposons que Adventure Works a un service financier et service des ressources humaines.For example, say that Adventure Works has a finance department and a human resources department. Les deux services de licence une application ClickOnce à partir de Microsoft Corporation qui génère des rapports à partir des données stockées dans une base de données SQL.Both departments license a ClickOnce application from Microsoft Corporation that generates reports from data stored in a SQL database. Microsoft fournit à chaque service avec une version de l’application qui est personnalisée pour leurs données.Microsoft supplies each department with a version of the application that is customized for their data. Si les applications sont signées avec le même certificat Authenticode, un utilisateur qui tente d’utiliser les deux applications, une erreur, ClickOnce considérant que la deuxième application est identique à la première.If the applications are signed with the same Authenticode certificate, a user who tries to use both applications would encounter an error, as ClickOnce would regard the second application as being identical to the first. Dans ce cas, le client peut rencontrer des effets inattendus et indésirables qui incluent la perte de toutes les données stockées localement par l’application.In this case, the customer could experience unpredictable and unwanted side effects that include the loss of any data stored locally by the application.

Un autre problème lié à la signature du code est le deploymentProvider élément dans le manifeste de déploiement, ce qui indique à ClickOnce où rechercher des mises à jour de l’application.An additional problem related to code signing is the deploymentProvider element in the deployment manifest, which tells ClickOnce where to look for application updates. Cet élément doit être ajouté au manifeste de déploiement avant la signature.This element has to be added to the deployment manifest prior to signing it. Si cet élément est ajouté par la suite, le manifeste de déploiement doit être signé à nouveau.If this element is added afterward, the deployment manifest must be re-signed.

Le client signer le manifeste de déploiementRequiring the Customer to Sign the Deployment Manifest

Une solution à ce problème de déploiements non unique doit avoir le signe de développeur le manifeste d’application et le client signer le manifeste de déploiement.One solution to this problem of non-unique deployments is to have the developer sign the application manifest, and the customer sign the deployment manifest. Bien que cette approche fonctionne, il présente d’autres problèmes.While this approach works, it introduces other issues. Dans la mesure où un certificat Authenticode doit rester protégé, le client ne peut pas simplement remettre le certificat au développeur pour signer le déploiement.Since an Authenticode certificate must remain a protected asset, the customer cannot just give the certificate to the developer to sign the deployment. Alors que le client peut signer le manifeste de déploiement eux-mêmes à l’aide des outils disponibles gratuitement avec le Kit de développement logiciel .NET Framework, cette opération peut nécessiter des connaissances techniques que le client est en mesure de fournir.While the customer can sign the deployment manifest themselves by using tools freely available with the .NET Framework SDK, this may require more technical knowledge than the customer is willing or able to provide. Dans ce cas, le développeur crée généralement une application, site Web ou un autre mécanisme par lequel le client peut envoyer leur version de l’application pour la signature.In such cases, the developer usually creates an application, Web site, or other mechanism through which the customer can submit their version of the application for signing.

L’Impact de la signature sur la sécurité de l’Application ClickOnce par le clientThe Impact of Customer Signing on ClickOnce Application Security

Même si le développeur et le client accepte que le client doit signer le manifeste d’application, cela déclenche les autres problèmes qui entourent l’identité de l’application, en particulier quand elle s’applique au déploiement d’applications approuvées.Even if the developer and the customer agree that the customer should sign the application manifest, this raises other issues that surround the application's identity, especially as it applies to trusted application deployment. (Pour plus d’informations sur cette fonctionnalité, consultez Trusted Application Deployment Overview.) Supposons qu’Adventure Works souhaite configurer ses ordinateurs clients afin que n’importe quelle application fournie par Microsoft Corporation s’exécute avec une confiance totale.(For more information about this feature, see Trusted Application Deployment Overview.) Say that Adventure Works wants to configure its client computers so that any application provided to them by Microsoft Corporation runs with full trust. Si Adventure Works signe le manifeste de déploiement, ClickOnce utilisera des signatures de sécurité du travail Adventure pour déterminer le niveau de confiance de l’application.If Adventure Works signs the deployment manifest, then ClickOnce will use Adventure Work's security signature to determine the trust level of the application.

Création de déploiements clients à l’aide du manifeste d’Application de confianceCreating Customer Deployments by Using Application Manifest for Trust

ClickOnce dans le .NET Framework 3.5 contient une nouvelle fonctionnalité qui permet aux développeurs et aux clients une nouvelle solution pour le scénario de la façon dont les manifestes doivent être signés.ClickOnce in the .NET Framework 3.5 contains a new feature that gives developers and customers a new solution to the scenario of how the manifests should be signed. Le manifeste d’application ClickOnce prend en charge un nouvel élément nommé <useManifestForTrust> qui permet à un développeur d’indiquer que la signature numérique du manifeste d’application doit être utilisée pour prendre des décisions d’approbation.The ClickOnce application manifest supports a new element named <useManifestForTrust> that enables a developer to signify that the digital signature of the application manifest is what should be used for making trust decisions. Le développeur utilise des outils d’empaquetage ClickOnce, tels que Visual Studio, Mage.exe et MageUI.exe, d’inclure cet élément dans le manifeste d’application, ainsi que pour incorporer leur nom de serveur de publication et le nom de l’application dans le manifeste.The developer uses ClickOnce packaging tools—such as Mage.exe, MageUI.exe, and Visual Studio—to include this element in the application manifest, as well as to embed both their Publisher name and the name of the application in the manifest.

Lorsque vous utilisez <useManifestForTrust>, le manifeste de déploiement n’a pas d’être signé avec un certificat Authenticode émis par une autorité de certification.When using <useManifestForTrust>, the deployment manifest does not have to be signed with an Authenticode certificate issued by a certification authority. Au lieu de cela, il peut être signé avec ce que l'on appelle un certificat auto-signé.Instead, it can be signed with what is known as a self-signed certificate. Un certificat auto-signé est généré par le client ou le développeur à l’aide des outils de développement .NET Framework SDK standard et puis appliqué au manifeste de déploiement en utilisant les outils de déploiement ClickOnce standards.A self-signed certificate is generated by either the customer or the developer by using standard .NET Framework SDK tools, and then applied to the deployment manifest by using the standard ClickOnce deployment tools. Pour plus d’informations, consultez MakeCert.For more information, see MakeCert.

À l’aide d’un certificat auto-signé pour le manifeste de déploiement présente plusieurs avantages.Using a self-signed certificate for the deployment manifest presents several advantages. En éliminant la nécessité pour le client obtenir ou créer son propre certificat Authenticode, <useManifestForTrust> simplifie le déploiement pour le client, tout en permettant au développeur de conserver son identité de personnalisation sur l’application.By eliminating the need for the customer to obtain or create their own Authenticode certificate, <useManifestForTrust> simplifies deployment for the customer, while allowing the developer to maintain their own branding identity on the application. Le résultat est un ensemble de déploiements signés qui sont plus sécurisées et a une identité d’application unique.The result is a set of signed deployments that are more secure and have unique application identities. Cela élimine le conflit potentiel qui peut se produire du déploiement de la même application à plusieurs clients.This eliminates the potential conflict that may occur from deploying the same application to multiple customers.

Pour obtenir des informations détaillées sur la création d’un déploiement de ClickOnce avec <useManifestForTrust> , consultez procédure pas à pas : déploiement manuel d’une Application ClickOnce qui est non nécessitent nouvelle signature et qui conserve les informations sur le logo.For step-by-step information about how to create a ClickOnce deployment with <useManifestForTrust> enabled, see Walkthrough: Manually Deploying a ClickOnce Application that Does Not Require Re-Signing and that Preserves Branding Information.

Manifeste d’Application de comment pour les travaux d’approbation lors de l’exécutionHow Application Manifest for Trust Works at Runtime

Pour obtenir une meilleure compréhension du fonctionne d’à l’aide du manifeste d’application de confiance lors de l’exécution, prenons l’exemple suivant.To get a better understanding of how using the application manifest for trust works at runtime, consider the following example. Une application ClickOnce qui cible le .NET Framework 3.5 est créée par Microsoft.A ClickOnce application that targets the .NET Framework 3.5 is created by Microsoft. Le manifeste d’application utilise le <useManifestForTrust> élément et est signé par Microsoft.The application manifest uses the <useManifestForTrust> element and is signed by Microsoft. Adventure Works signe le manifeste de déploiement à l’aide d’un certificat auto-signé.Adventure Works signs the deployment manifest by using a self-signed certificate. Adventure Works, les clients sont configurés pour approuver toute application signée par Microsoft.Adventure Works clients are configured to trust any application signed by Microsoft.

Lorsqu’un utilisateur clique sur un lien vers le manifeste de déploiement, ClickOnce installe l’application sur l’ordinateur de l’utilisateur.When a user clicks a link to the deployment manifest, ClickOnce installs the application on the user's computer. Les informations de certificat et de déploiement identifier identifie de façon unique l’application ClickOnce sur l’ordinateur client.The certificate and deployment information identify the application uniquely to ClickOnce on the client computer. Si l’utilisateur tente d’installer à nouveau de la même application à partir d’un emplacement différent, ClickOnce peut utiliser cette identité pour déterminer que l’application existe déjà sur le client.If the user tries to install the same application again from a different location, ClickOnce can use this identity to determine that the application already exists on the client.

Ensuite, ClickOnce examine le certificat Authenticode qui est utilisé pour signer le manifeste d’application, qui détermine le niveau de confiance accordé par ClickOnce.Next, ClickOnce examines the Authenticode certificate that is used to sign the application manifest, which determines the level of trust that ClickOnce will grant. Adventure Works a configuré ses clients pour approuver toute application signée par Microsoft, cette application ClickOnce est de confiance totale.Since Adventure Works has configured its clients to trust any application signed by Microsoft, this ClickOnce application is granted full trust. Pour plus d'informations, consultez Trusted Application Deployment Overview.For more information, see Trusted Application Deployment Overview.

Création de déploiements de clients pour les Versions antérieuresCreating Customer Deployments for Earlier Versions

Que se passe-t-il si un développeur déploie des applications ClickOnce pour les clients qui utilisent des versions antérieures du .NET Framework ?What if a developer is deploying ClickOnce applications to customers who are using older versions of the .NET Framework? Les sections suivantes résument plusieurs solutions recommandées, ainsi que les avantages et les inconvénients de chacune.The following sections summarize several recommended solutions, together with the benefits and drawbacks of each.

Signature des déploiements pour le compte clientSign Deployments on Behalf of Customer

Une stratégie de déploiement est destiné aux développeurs de créer un mécanisme pour signer des déploiements pour le compte de leurs clients, à l’aide de la clé privée du client.One possible deployment strategy is for the developer to create a mechanism to sign deployments on behalf of their customers, by using the customer's own private key. Cela empêche le développeur d’avoir à gérer les clés privées ou plusieurs packages de déploiement.This prevents the developer from having to manage private keys or multiple deployment packages. Le développeur fournit simplement le même déploiement à chaque client.The developer just provides the same deployment to each customer. Il incombe au client de personnaliser en fonction de leur environnement en utilisant le service de signature.It is up to the customer to customize it for their environment by using the signing service.

L’inconvénient de cette méthode est le temps et les dépenses qui sont requis pour l’implémenter.One drawback to this method is the time and expense that are required to implement it. Alors que ce service peut être généré à l’aide des outils fournis dans le Kit de développement logiciel .NET Framework, il ajoute plus de temps de développement pour le cycle de vie du produit.While such a service can be built by using the tools provided in the .NET Framework SDK, it will add more development time to the product life cycle.

Comme indiqué plus haut dans cette rubrique, un autre inconvénient est que la version de chaque client de l’application aura la même identité d’application, ce qui peut provoquer des conflits.As noted earlier in this topic, another drawback is that each customer's version of the application will have the same application identity, which could lead to conflicts. S’il s’agit d’un problème, le développeur peut modifier le champ nom qui est utilisé lors de la génération du manifeste de déploiement pour donner un nom unique à chaque application.If this is a concern, the developer can change the Name field that is used when generating the deployment manifest to give each application a unique name. Cela créera une identité distincte pour chaque version de l’application et éliminer les conflits d’identité.This will create a separate identity for each version of the application, and eliminate any potential identity conflicts. Ce champ correspond à la -Name argument dans Mage.exe et à la nom champ sur la nom onglet dans MageUI.exe.This field corresponds to the -Name argument for Mage.exe, and to the Name field on the Name tab in MageUI.exe.

Par exemple, que le développeur a créé une application nommée Application1.For example, say that the developer has created an application named Application1. Au lieu de créer un déploiement unique avec le champ de nom défini sur Application1, le développeur peut créer plusieurs déploiements avec une variation spécifiques au client sur ce nom, tel que Application1-ClientA, Application1-ClientB et ainsi de suite.Instead of creating a single deployment with the Name field set to Application1, the developer can create several deployments with a customer-specific variation on this name, such as Application1-CustomerA, Application1-CustomerB, and so on.

Déployer à l’aide d’un Package d’installationDeploy Using a Setup Package

Une deuxième stratégie de déploiement doit générer un projet Microsoft Setup pour effectuer le déploiement initial de l’application ClickOnce.A second possible deployment strategy is to generate a Microsoft Setup project to perform the initial deployment of the ClickOnce application. Cela peut être fourni dans un des formats suivants : déploiement MSI, fichier exécutable d’installation (. (EXE), ou sous la forme d’un fichier CAB (.cab) avec un script de commandes.This can be provided in one of several different formats: as an MSI deployment, as a setup executable (.EXE), or as a cabinet (.cab) file together with a batch script.

À l’aide de cette technique, le développeur fournit au client un déploiement qui inclut les fichiers d’application, le manifeste d’application et un manifeste de déploiement qui sert de modèle.Using this technique, the developer would provide the customer a deployment that includes the application files, the application manifest, and a deployment manifest that serves as a template. Le client exécute le programme d’installation, qui vous invite à entrer une URL de déploiement (serveur ou emplacement à partir duquel les utilisateurs installent l’application ClickOnce de partage de fichiers), ainsi que d’un certificat numérique.The customer would run the setup program, which would prompt them for a deployment URL (the server or file share location from which users will install the ClickOnce application), as well as a digital certificate. L’application d’installation peut également choisir d’inviter à entrer les options de configuration ClickOnce supplémentaires, telles que de l’intervalle de vérification de mise à jour.The setup application may also choose to prompt for additional ClickOnce configuration options, such as update check interval. Une fois que ces informations sont collectées, le programme d’installation serait générer le manifeste de déploiement réel, signer et publier l’application ClickOnce à l’emplacement du serveur désigné.Once this information is gathered, the setup program would generate the real deployment manifest, sign it, and publish the ClickOnce application to the designated server location.

Il existe trois façons que le client peut signer le manifeste de déploiement dans cette situation :There are three ways that the customer can sign the deployment manifest in this situation:

  1. Le client peut utiliser un certificat valide émis par une autorité de certification (CA).The customer can use a valid certificate issued by a certification authority (CA).

  2. Une variante de cette approche, le client peut choisir signer le manifeste de déploiement avec un certificat auto-signé.As a variation on this approach, the customer can choose to sign their deployment manifest with a self-signed certificate. L’inconvénient de cette approche est qu’elle entraîne l’application afficher les mots « Éditeur inconnu » lorsque l’utilisateur est invité à s’il faut l’installer.The drawback to this is that it will cause the application to display the words "Unknown Publisher" when the user is asked whether to install it. Toutefois, l’avantage est que les clients plus petits de devoir dépenser du temps et l’argent nécessaire pour un certificat émis par une autorité de certification.However, the benefit is that it prevents smaller customers from having to spend the time and money required for a certificate issued by a certification authority.

  3. Enfin, le développeur peut inclure son propre certificat auto-signé dans le package d’installation.Finally, the developer can include their own self-signed certificate in the setup package. Cet article présente des problèmes potentiels avec l’identité de l’application décrite précédemment dans cette rubrique.This introduces the potential problems with application identity discussed earlier in this topic.

    L’inconvénient de la méthode de projet de déploiement d’installation est le temps et les dépenses nécessaires à la génération d’une application de déploiement personnalisée.The drawback to the setup deployment project method is the time and expense required to build a custom deployment application.

Avoir client générer le manifeste de déploiementHave Customer Generate Deployment Manifest

Une stratégie de déploiement tiers est transférer uniquement les fichiers d’application et le manifeste d’application désactivée pour le client.A third possible deployment strategy is to hand only the application files and application manifest off to the customer. Dans ce scénario, le client est responsable de l’utilisation du SDK .NET Framework pour générer et signer le manifeste de déploiement.In this scenario, the customer is responsible for using the .NET Framework SDK to generate and sign the deployment manifest.

L’inconvénient de cette méthode est qu’elle requiert le client pour installer les outils de développement .NET Framework SDK et qu’un développeur ou un administrateur système qui est en utilisant les.The drawback of this method is that it requires the customer to install the .NET Framework SDK tools, and to have a developer or system administrator who is skilled at using them. Certains clients peuvent rechercher une solution nécessitant peu ou aucune connaissance technique de leur part.Some customers may demand a solution that requires little or no technical effort on their part.

Voir aussiSee Also

Déploiement d’Applications ClickOnce pour les tests et les serveurs de Production sans nouvelle signature Deploying ClickOnce Applications For Testing and Production Servers without Resigning
Procédure pas à pas : déploiement manuel d’une application ClickOnce Walkthrough: Manually Deploying a ClickOnce Application
Procédure pas à pas : déploiement manuel d’une application ClickOnce qui ne nécessite pas de nouvelle signature et qui conserve les informations relatives à la personnalisationWalkthrough: Manually Deploying a ClickOnce Application that Does Not Require Re-Signing and that Preserves Branding Information