Procédure pas à pas : téléchargement d'assemblys satellites à la demande avec l'API du déploiement ClickOnce
Les applications Windows Forms peuvent être configurées pour plusieurs cultures à l'aide d'assemblys satellites.Un assembly satellite est un assembly qui contient des ressources d'application pour une culture autre que la culture par défaut de l'application.
Comme indiqué dans Localisation des applications ClickOnce, vous pouvez inclure plusieurs assemblys satellites pour des cultures multiples au sein du même déploiement ClickOnce.Par défaut, ClickOnce télécharge tous les assemblys satellites de votre déploiement sur l'ordinateur client, même si un client ne requiert probablement qu'un seul assembly satellite.
Cette procédure pas à pas montre comment marquer vos assemblys satellites comme facultatifs et télécharger uniquement l'assembly nécessaire à un ordinateur client pour ses paramètres de culture actuels.La procédure suivante utilise les outils disponibles dans le Kit de développement logiciel Windows.Vous pouvez également effectuer cette tâche dans Visual Studio.Pour plus d'informations, consultez Procédure pas à pas : téléchargement d'assemblys satellites à la demande avec l'API du déploiement ClickOnce à l'aide du concepteur et Procédure pas à pas : téléchargement d'assemblys satellites à la demande avec l'API du déploiement ClickOnce à l'aide du concepteur et Procédure pas à pas : téléchargement d'assemblys satellites à la demande avec l'API du déploiement ClickOnce à l'aide du concepteur et Procédure pas à pas : téléchargement d'assemblys satellites à la demande avec l'API du déploiement ClickOnce à l'aide du concepteur.
[!REMARQUE]
À des fins de test, l'exemple de code suivant affecte par programme la valeur ja-JP à la culture.Pour plus d'informations sur la façon d'ajuster ce code pour un environnement de production, consultez la section « Étapes suivantes » plus loin dans cette rubrique.
Composants requis
Cette rubrique suppose que vous savez comment ajouter des ressources localisées à votre application à l'aide de Visual Studio.Pour obtenir des instructions détaillées, consultez Procédure pas à pas : localisation de Windows Forms.
Pour télécharger des assemblys satellites à la demande
Ajoutez le code suivant à votre application pour activer le téléchargement à la demande d'assemblys satellites.
Imports System.Deployment.Application Imports System.Globalization Imports System.Threading Public Class Form1 Shared Sub Main(ByVal args As String()) Application.EnableVisualStyles() Thread.CurrentThread.CurrentUICulture = New CultureInfo("ja-JP") GetSatelliteAssemblies(Thread.CurrentThread.CurrentUICulture.ToString()) Application.Run(New Form1()) End Sub Private Shared Sub GetSatelliteAssemblies(ByVal groupName As String) If (ApplicationDeployment.IsNetworkDeployed) Then Dim deploy As ApplicationDeployment = ApplicationDeployment.CurrentDeployment If (deploy.IsFirstRun) Then Try deploy.DownloadFileGroup(groupName) Catch de As DeploymentException ' Log error. Do not report error to the user, as there may not be a satellite ' assembly if the user's culture and the application's default culture match. End Try End If End If End Sub End Class
using System; using System.Collections.Generic; using System.Windows.Forms; using System.Threading; using System.Globalization; using System.Deployment.Application; using System.Reflection; namespace ClickOnce.SatelliteAssemblies { static class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Thread.CurrentThread.CurrentUICulture = new CultureInfo("ja-JP"); // Call this before initializing the main form, which will cause the resource manager // to look for the appropriate satellite assembly. GetSatelliteAssemblies(Thread.CurrentThread.CurrentCulture.ToString()); Application.Run(new Form1()); } static void GetSatelliteAssemblies(string groupName) { if (ApplicationDeployment.IsNetworkDeployed) { ApplicationDeployment deploy = ApplicationDeployment.CurrentDeployment; if (deploy.IsFirstRun) { try { deploy.DownloadFileGroup(groupName); } catch (DeploymentException de) { // Log error. Do not report error to the user, as there may not be a satellite // assembly if the user's culture and the application's default culture match. } } } } } }
Générez des assemblys satellites pour votre application en utilisant Resgen.exe (Resource File Generator) ou Visual Studio.
Générez un manifeste d'application ou ouvrez votre manifeste d'application existant, en utilisant MageUI.exe.Pour plus d'informations sur cet outil, consultez MageUI.exe (outil Manifest Generation and Editing, client graphique).
Cliquez sur l'onglet Files.
Cliquez sur le bouton de sélection (...) et sélectionnez le répertoire qui contient tous les assemblys et les fichiers de votre application, notamment les assemblys satellites que vous avez générés à l'aide de Resgen.exe.(Un assembly satellite possède un nom de la forme CodeIso\NomApplication.resources.dll, où CodeIso est un identificateur de langue au format de la RFC 1766.)
Cliquez sur Populate pour ajouter les fichiers à votre déploiement.
Activez la case à cocher Optional pour chaque assembly satellite.
Pour chaque assembly satellite, affectez au champ de groupe son identificateur de langue ISO.Par exemple, pour un assembly satellite japonais, vous devez spécifier le nom de groupe de téléchargement ja-JP.Cela permet au code que vous avez ajouté à l'étape 1 de télécharger l'assembly satellite approprié, en fonction du paramètre de la propriété CurrentUICulture de l'utilisateur.
Étapes suivantes
Dans un environnement de production, vous aurez probablement à supprimer la ligne de l'exemple de code qui affecte une valeur spécifique à CurrentUICulture, car la valeur correcte est définie par défaut pour les ordinateurs clients.Lorsque votre application s'exécute sur un ordinateur client japonais, par exemple, CurrentUICulture a la valeur ja-JP par défaut.La définition par programme de cette valeur est une bonne façon de tester vos assemblys satellites avant de déployer votre application.