/// <summary>
        /// Uninstalls a package.
        /// </summary>
        /// <param name="fileName"></param>
        public List <PackageImportEventArgs> UninstallPackage(string fileName)
        {
            // Validate that the package is still valid, just in case somebody else deleted it
            string packagePath = Path.Combine(ProgramDataFolder.MapPath("Packages"),
                                              fileName);
            FileInfo packageDetails = new FileInfo(packagePath);
            List <PackageImportEventArgs> events = null;

            if (packageDetails.Exists)
            {
                // Load the package and uninstall it
                events = new List <PackageImportEventArgs>();
                using (Stream packageStream = File.OpenRead(packagePath))
                {
                    using (Package package = new Package(packageStream))
                    {
                        package.Message += delegate(object source, PackageImportEventArgs args)
                        {
                            events.Add(args);
                        };
                        package.Uninstall();

                        // Update the list
                        XmlDocument packageList = LoadPackageList();
                        package.Manifest.IsInstalled = false;
                        UpdatePackagesList(package.Manifest, packageList, true);
                        SavePackageList(packageList);
                    }
                }
            }
            return(events);
        }
        /// <summary>
        /// Uninstalls a package.
        /// </summary>
        /// <param name="fileName"></param>
        public List<PackageImportEventArgs> UninstallPackage(string fileName)
        {
            // Validate that the package is still valid, just in case somebody else deleted it
            string packagePath = Path.Combine(ProgramDataFolder.MapPath("Packages"),
                fileName);
            FileInfo packageDetails = new FileInfo(packagePath);
            List<PackageImportEventArgs> events = null;
            if (packageDetails.Exists)
            {
                // Load the package and uninstall it
                events = new List<PackageImportEventArgs>();
                using (Stream packageStream = File.OpenRead(packagePath))
                {
                    using (Package package = new Package(packageStream))
                    {
                        package.Message += delegate(object source, PackageImportEventArgs args)
                        {
                            events.Add(args);
                        };
                        package.Uninstall();

                        // Update the list
                        XmlDocument packageList = LoadPackageList();
                        package.Manifest.IsInstalled = false;
                        UpdatePackagesList(package.Manifest, packageList, true);
                        SavePackageList(packageList);
                    }
                }
            }
            return events;
        }