示例#1
0
        private void ZipImport()
        {
            InstalledVersion version = model.Settings.InstalledVersions.FirstOrDefault(v => v.IsLatest);

            // Configure open file dialog box
            if (version != null)
            {
                string pluginFileName = Path.Combine(SpecialFolders.PlugInFolder(model), plugIn.FileName);

                if (!File.Exists(pluginFileName))
                {
                    using (OpenFileDialog dlg = new OpenFileDialog())
                    {
                        dlg.Filter = plugIn.FileName + Resources.FormExecutePlugIn_ZipImport____ + plugIn.FileName + Resources.FormExecutePlugIn_ZipImport__;

                        // Show open file dialog box
                        if (dlg.ShowDialog() == DialogResult.OK)
                        {
                            if (File.Exists(dlg.FileName))
                            {
                                File.Copy(dlg.FileName, Path.Combine(SpecialFolders.PlugInFolder(model), plugIn.FileName));
                            }
                        }
                    }
                }

                if (File.Exists(pluginFileName))
                {
                    ZipArchive zipArchive = ZipFile.OpenRead(pluginFileName);
                    foreach (var file in plugIn.Files)
                    {
                        if (File.Exists(Path.Combine(version.Folder, file.DestinationFolder, file.Name)))
                        {
                            if (!File.Exists(Path.Combine(version.Folder, file.DestinationFolder, "_" + file.Name)))
                            {
                                File.Move(Path.Combine(version.Folder, file.DestinationFolder, file.Name), Path.Combine(version.Folder, file.DestinationFolder, "_" + file.Name));
                            }
                        }
                        foreach (ZipArchiveEntry zippedFile in zipArchive.Entries)
                        {
                            if (zippedFile.FullName.Contains(file.SourceFolder + "/" + file.Name))
                            {
                                Unpacker.ExtractFile(zippedFile, Path.Combine(version.Folder, file.DestinationFolder, file.Name));
                            }
                        }
                    }
                }
            }
        }