Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

ApplicationDeployment.DownloadFileGroup, méthode

Télécharge un ensemble de fichiers facultatifs à la demande.

Espace de noms :  System.Deployment.Application
Assembly :  System.Deployment (dans System.Deployment.dll)

[PermissionSetAttribute(SecurityAction.Assert, Name = "FullTrust")]
public void DownloadFileGroup(
	string groupName
)

Paramètres

groupName
Type : System.String
Groupe nommé de fichiers à télécharger. Tous les fichiers marqués comme "facultatifs" dans une application ClickOnce nécessitent un nom de groupe.

ExceptionCondition
ArgumentNullException

Le paramètre groupName est null ou de longueur nulle.

Dans une application ClickOnce, les fichiers marqués comme "facultatifs" dans le manifeste d'application ne sont pas téléchargés pendant l'initialisation ou la mise à jour. Vous pouvez utiliser la méthode DownloadFileGroup pour télécharger tous les fichiers d'un groupe nommé à la demande, afin de ne pas consommer les ressources réseau et l'espace disque tant que vous n'êtes pas certain que l'utilisateur les requiert. Par exemple, certains utilisateurs doivent utiliser quotidiennement un package d'analyse de données inclus dans votre application alors que d'autres n'y font jamais appel.

Pour utiliser un assembly que vous avez téléchargé à l'aide de DownloadFileGroup, vous attachez un écouteur d'événements à l'événement AssemblyResolve sur CurrentDomain. Pour obtenir un exemple, consultez Procédure pas à pas : téléchargement d'assemblys à la demande avec l'API du déploiement ClickOnce à l'aide du concepteur.

Tous les fichiers sont téléchargés vers le cache de l'application ClickOnce et sont donc séparés de la version actuelle de l'application. Supposons qu'après le téléchargement d'un groupe de fichiers par une application, l'utilisateur installe une nouvelle version de l'application, mais rétablit ensuite la version antérieure de l'application. Dans ce cas, la version antérieure contiendra encore la copie des fichiers qu'elle avait téléchargés au départ. Pour plus d'informations sur l'accès aux fichiers de données, consultez Accès aux données locales et distantes dans les applications ClickOnce.

DownloadFileGroup fonctionne dans les applications d'un niveau de confiance partiel, c'est-à-dire dans toute application ClickOnce qui s'exécute avec une autorisation restreinte. Toutefois, si vous essayez de charger de façon dynamique des assemblys, votre application doit bénéficier d'une confiance totale.

Le téléchargement à la demande de fichiers de données n'est actuellement pas pris en charge.

Votre application ne répond pas aux entrées d'utilisateur tant que la méthode DownloadFileGroup n'est pas retournée. Si vous devez télécharger des fichiers sans interrompre le flux de travail de l'utilisateur, utilisez plutôt la méthode DownloadFileGroupAsync.

Vous ne pouvez pas télécharger un fichier unique à partir de son nom de fichier seul. Pour télécharger un fichier unique, assignez-lui un nom de groupe dans votre déploiement ClickOnce et téléchargez le groupe à l'aide de cette méthode.

L'exemple de code suivant montre comment charger un assembly à la demande en écoutant l'événement AssemblyResolve.


namespace ClickOnceOnDemand
{
    [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand, Unrestricted=true)]
    public class Form1 : Form
    {
        // Maintain a dictionary mapping DLL names to download file groups. This is trivial for this sample,
        // but will be important in real-world applications where a feature is spread across multiple DLLs,
        // and you want to download all DLLs for that feature in one shot. 
        Dictionary<String, String> DllMapping = new Dictionary<String, String>();

        public static void Main()
        {
            Form1 NewForm = new Form1();
            Application.Run(NewForm);
        }

        public Form1()
        {
            // Configure form. 
            this.Size = new Size(500, 200);
            Button getAssemblyButton = new Button();
            getAssemblyButton.Size = new Size(130, getAssemblyButton.Size.Height);
            getAssemblyButton.Text = "Test Assembly";
            getAssemblyButton.Location = new Point(50, 50);
            this.Controls.Add(getAssemblyButton);
            getAssemblyButton.Click += new EventHandler(getAssemblyButton_Click);

            DllMapping["ClickOnceLibrary"] = "ClickOnceLibrary";
            AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
        }

        /*
         * Use ClickOnce APIs to download the assembly on demand.
         */
        private Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
        {
            Assembly newAssembly = null;

            if (ApplicationDeployment.IsNetworkDeployed)
            {
                ApplicationDeployment deploy = ApplicationDeployment.CurrentDeployment;

                // Get the DLL name from the Name argument.
                string[] nameParts = args.Name.Split(',');
                string dllName = nameParts[0];
                string downloadGroupName = DllMapping[dllName];

                try
                {
                    deploy.DownloadFileGroup(downloadGroupName);
                }
                catch (DeploymentException de)
                {
                    MessageBox.Show("Downloading file group failed. Group name: " + downloadGroupName + "; DLL name: " + args.Name);
                    throw (de);
                }

                // Load the assembly.
                // Assembly.Load() doesn't work here, as the previous failure to load the assembly
                // is cached by the CLR. LoadFrom() is not recommended. Use LoadFile() instead.
                try
                {
                    newAssembly = Assembly.LoadFile(Application.StartupPath + @"\" + dllName + ".dll," +  
			"Version=1.0.0.0, Culture=en, PublicKeyToken=03689116d3a4ae33");
                }
                catch (Exception e)
                {
                    throw (e);
                }
            }
            else
            {
                //Major error - not running under ClickOnce, but missing assembly. Don't know how to recover.
                throw (new Exception("Cannot load assemblies dynamically - application is not deployed using ClickOnce."));
            }


            return (newAssembly);
        }

        private void getAssemblyButton_Click(object sender, EventArgs e)
        {
            DynamicClass dc = new DynamicClass();
            MessageBox.Show("Message: " + dc.Message);
        }
    }
}


.NET Framework

Pris en charge dans : 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Ajouts de la communauté

AJOUTER
Afficher:
© 2015 Microsoft