ApplicationDeployment.DownloadFileGroup(String) ApplicationDeployment.DownloadFileGroup(String) ApplicationDeployment.DownloadFileGroup(String) ApplicationDeployment.DownloadFileGroup(String) Method

Définition

Télécharge un ensemble de fichiers facultatifs à la demande. Downloads a set of optional files on demand.

public:
 void DownloadFileGroup(System::String ^ groupName);
public void DownloadFileGroup (string groupName);
member this.DownloadFileGroup : string -> unit
Public Sub DownloadFileGroup (groupName As String)
Paramètres
groupName
String String String String

Groupe nommé de fichiers à télécharger. The named group of files to download. Tous les fichiers marqués comme "facultatifs" dans une application ClickOnceClickOnce nécessitent un nom de groupe. All files marked "optional" in a ClickOnceClickOnce application require a group name.

Exceptions

Le paramètre groupName est null ou de longueur nulle. The groupName parameter is null or zero-length.

Exemples

L’exemple de code suivant montre comment charger un assembly à la demande en écoutant les AssemblyResolve événement.The following code example demonstrates how to load an assembly on demand by listening for the AssemblyResolve event.

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);
        }
    }
}

Remarques

Dans un ClickOnceClickOnce application, les fichiers marqués comme « facultatifs » dans le manifeste d’application ne sont pas téléchargées pendant l’initialisation ou de mise à jour.In a ClickOnceClickOnce application, the files marked "optional" in the application manifest are not downloaded during initialization or update. Vous pouvez utiliser la DownloadFileGroup méthode pour télécharger tous les fichiers appartenant à un groupe nommé à la demande, afin de ne pas consommer les ressources réseau et l’espace disque jusqu'à ce que vous êtes sûr que l’utilisateur a besoin.You can use the DownloadFileGroup method to download all of the files belonging to a named group on demand, so that they do not consume network resources and disk space until you are sure the user requires them. Par exemple, certains utilisateurs devront peut-être utiliser un package d’analyse de données inclus dans votre application sur une base quotidienne, tandis que les autres utilisateurs peuvent l’appeler jamais.For example, certain users may need to use a data analysis package included in your application on a daily basis, while other users may never invoke it.

Pour utiliser un assembly que vous avez téléchargé avec DownloadFileGroup, vous attachez un écouteur d’événements pour le AssemblyResolve événement sur le CurrentDomain.To use an assembly you have downloaded with DownloadFileGroup, you attach an event listener to the AssemblyResolve event on the CurrentDomain. Pour obtenir un exemple, consultez =procédure pas à pas : téléchargement d’assemblys à la demande avec le ClickOnce déploiement API en utilisant le concepteur.For an example, see =Walkthrough: Downloading Assemblies on Demand with the ClickOnce Deployment API Using the Designer.

Tous les fichiers sont téléchargés vers le ClickOnceClickOnce cache d’application et sont donc séparés de la version actuelle de l’application.All files are downloaded to the ClickOnceClickOnce application cache and are therefore isolated to the current version of the 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 précédente de l’application.Let's say that after an application downloads a file group, the user installs a new version of the application, but later reverts to the previous version of the application. Dans ce cas, la version précédente gardent les copies des fichiers qu’elle avait téléchargés.In this case, the previous version will still have the copies of the files it originally downloaded. Pour plus d’informations sur l’accès aux fichiers de données, consultez l’accès aux données locales et distantes dans les Applications ClickOnce.For more information about accessing data files, see Accessing Local and Remote Data in ClickOnce Applications.

DownloadFileGroup fonctionne dans les applications partiellement fiables, autrement dit, dans les ClickOnceClickOnce application qui s’exécute avec une autorisation restreinte.DownloadFileGroup works in partially trusted applications, that is, in any ClickOnceClickOnce application running with restricted permission. Toutefois, si vous essayez de charger dynamiquement des assemblys, votre application nécessitent une confiance totale.However, if you attempt to load assemblies dynamically, your application will require full trust.

À la demande sur le téléchargement de fichiers de données n’est pas pris en charge actuellement.On-demand downloading of data files is currently not supported.

Votre application ne sera pas réactive aux entrées d’utilisateur jusqu'à ce que le DownloadFileGroup méthode retourne.Your application will not be responsive to user input until the DownloadFileGroup method returns. Si vous avez besoin télécharger les fichiers sans interrompre le flux de travail de l’utilisateur, utilisez la DownloadFileGroupAsync méthode à la place.If you need to download files without interrupting the user's workflow, use the DownloadFileGroupAsync method instead.

Vous ne pouvez pas télécharger un fichier unique par son seul nom de fichier.You cannot download a single file by its file name alone. Pour télécharger un fichier unique, attribuez-lui un nom de groupe dans votre ClickOnceClickOnce déploiement et le groupe à l’aide de cette méthode de téléchargement.To download a single file, assign it a group name in your ClickOnceClickOnce deployment and download the group using this method.

S’applique à

Voir aussi