public void Export(string exportPath) { string tempPath = MyPaths.GetMyAppDataPath(); var packageDir = new DirectoryInfo(Path.Combine(tempPath, "UpdatePackageCreation")); // Ensure package directory exists and is empty if (packageDir.Exists) { packageDir.Delete(true); } packageDir.Create(); // Copy local data to temp data directory var dataDir = packageDir.CreateSubdirectory(PackageFileNameDefinations.ZIP_APP_DATA_FILES_DIRECTORY); var localDataDir = new DirectoryInfo(UpdatePackageTemplate.FilesToCopyPath); localDataDir.CopyTo(dataDir.FullName, SearchOption.AllDirectories); // Copy all UpdateInstaller AddOns var addOnsDir = packageDir.CreateSubdirectory(PackageFileNameDefinations.ZIP_UPDATE_INSTALLER_ADDONS_DIRECTORY); uint curAddOnID = 0; foreach (string fAddOn in UpdatePackageTemplate.UpdateInstallerAddOns) { File.Copy(fAddOn, Path.Combine(addOnsDir.FullName, $"installer_addon_{curAddOnID}.dll")); curAddOnID += 1; } // Ensure destination file doesn't exist if (File.Exists(exportPath)) { File.Delete(exportPath); } // Export to ZIP ZipFile.CreateFromDirectory(packageDir.FullName, exportPath); // Delete temp directory packageDir.Delete(true); }