start a big rework

This commit is contained in:
Schedel Pascal
2024-06-19 15:01:27 +02:00
parent c9216ac79b
commit 77ddd2a72a
25 changed files with 599 additions and 1697 deletions

View File

@@ -1,74 +0,0 @@
using System;
using Telerik.WinControls.UI;
namespace Pilz.Updating.Administration.GUI;
public partial class ApplicationVersionInput
{
// C o n s t r u c t o r s
public ApplicationVersionInput()
{
InitializeComponent();
// Init Channel-ComboBox
radDropDownList_Channel.Items.Add(new RadListDataItem() { Text = My.Resources.UpdatingAdministrationLangRes.Channel_Stable, Tag = Channels.Stable });
radDropDownList_Channel.Items.Add(new RadListDataItem() { Text = My.Resources.UpdatingAdministrationLangRes.Channel_PreRelease, Tag = Channels.PreRelease });
radDropDownList_Channel.Items.Add(new RadListDataItem() { Text = My.Resources.UpdatingAdministrationLangRes.Channel_Beta, Tag = Channels.Beta });
radDropDownList_Channel.Items.Add(new RadListDataItem() { Text = My.Resources.UpdatingAdministrationLangRes.Channel_Alpha, Tag = Channels.Alpha });
radDropDownList_Channel.SelectedIndex = 0;
}
// P r o p e r t i e s
public Version Version
{
get
{
return new Version(radTextBoxControl_Version.Text.Trim());
}
set
{
radTextBoxControl_Version.Text = value.ToString();
}
}
public Channels Channel
{
get
{
return (Channels)radDropDownList_Channel.SelectedItem.Tag;
}
set
{
foreach (var ci in radDropDownList_Channel.Items)
{
if ((Channels)ci.Tag == value)
{
radDropDownList_Channel.SelectedItem = ci;
}
}
}
}
public int Build
{
get
{
return (int)Math.Round(radSpinEditor_Build.Value);
}
set
{
radSpinEditor_Build.Value = value;
}
}
private void radButton_Accept_Click(object sender, EventArgs e)
{
}
}

View File

@@ -7,7 +7,7 @@ using Microsoft.VisualBasic.CompilerServices;
namespace Pilz.Updating.Administration.GUI
{
[DesignerGenerated()]
public partial class ApplicationVersionInput : Telerik.WinControls.UI.RadForm
public partial class PackageMetaEditor : Telerik.WinControls.UI.RadForm
{
// Form overrides dispose to clean up the component list.
@@ -36,7 +36,7 @@ namespace Pilz.Updating.Administration.GUI
[DebuggerStepThrough()]
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ApplicationVersionInput));
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PackageMetaEditor));
this.radLabel1 = new Telerik.WinControls.UI.RadLabel();
this.radLabel2 = new Telerik.WinControls.UI.RadLabel();
this.radLabel3 = new Telerik.WinControls.UI.RadLabel();

View File

@@ -0,0 +1,51 @@
using System;
using Telerik.WinControls.UI;
namespace Pilz.Updating.Administration.GUI;
public partial class PackageMetaEditor
{
// C o n s t r u c t o r s
public PackageMetaEditor()
{
InitializeComponent();
// Init Channel-ComboBox
radDropDownList_Channel.Items.Add(new RadListDataItem(My.Resources.UpdatingAdministrationLangRes.Channel_Stable, Channels.Stable));
radDropDownList_Channel.Items.Add(new RadListDataItem(My.Resources.UpdatingAdministrationLangRes.Channel_PreRelease, Channels.PreRelease));
radDropDownList_Channel.Items.Add(new RadListDataItem(My.Resources.UpdatingAdministrationLangRes.Channel_Beta, Channels.Beta));
radDropDownList_Channel.Items.Add(new RadListDataItem(My.Resources.UpdatingAdministrationLangRes.Channel_Alpha, Channels.Alpha));
radDropDownList_Channel.SelectedIndex = 0;
}
// P r o p e r t i e s
public Version Version
{
get => new(radTextBoxControl_Version.Text.Trim());
set => radTextBoxControl_Version.Text = value.ToString();
}
public Channels Channel
{
get => (Channels)radDropDownList_Channel.SelectedItem.Value;
set => radDropDownList_Channel.SelectedValue = value;
}
public int Build
{
get => (int)Math.Round(radSpinEditor_Build.Value);
set => radSpinEditor_Build.Value = value;
}
public string Packagelink
{
get => ;
set => ;
}
private void radButton_Accept_Click(object sender, EventArgs e)
{
}
}

View File

@@ -80,10 +80,10 @@
<Compile Update="PackageDescriptionEditor.Designer.cs">
<DependentUpon>PackageDescriptionEditor.cs</DependentUpon>
</Compile>
<Compile Update="ApplicationVersionInput.Designer.cs">
<DependentUpon>ApplicationVersionInput.cs</DependentUpon>
<Compile Update="PackageMetaEditor.Designer.cs">
<DependentUpon>PackageMetaEditor.cs</DependentUpon>
</Compile>
<Compile Update="ApplicationVersionInput.cs" />
<Compile Update="PackageMetaEditor.cs" />
<Compile Update="UpdateManagerWindow.cs" />
<Compile Update="UpdateManagerWindow.Designer.cs">
<DependentUpon>UpdateManagerWindow.cs</DependentUpon>
@@ -122,8 +122,8 @@
<EmbeddedResource Update="PackageDescriptionEditor.resx">
<DependentUpon>PackageDescriptionEditor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Update="ApplicationVersionInput.resx">
<DependentUpon>ApplicationVersionInput.cs</DependentUpon>
<EmbeddedResource Update="PackageMetaEditor.resx">
<DependentUpon>PackageMetaEditor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Update="UpdateManagerWindow.resx">
<DependentUpon>UpdateManagerWindow.cs</DependentUpon>

File diff suppressed because it is too large Load Diff

View File

@@ -1,9 +1,9 @@
using global::System.IO;
using Microsoft.VisualBasic.CompilerServices;
using Microsoft.VisualBasic.CompilerServices;
using Pilz.Updating.Administration.Discord;
using Pilz.Updating.Administration.Packaging;
using Pilz.Updating.Administration.Integrations;
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using System.Windows.Forms;
using Telerik.WinControls;
@@ -14,22 +14,17 @@ namespace Pilz.Updating.Administration.GUI;
public partial class UpdateManagerWindow
{
// C o n s t a n t s
private const string FILTER_UPDATEINFO_CONFIGURATION = "JSON (*.json)|*.json";
private const string FILTER_UPDATEPROJECT = "Update-Info-Konfiguration (*.udic)|*.udic";
private const string FILTER_UPDATEPACKAGE = "ZIP-Archiv (*.zip)|*.zip";
private const string FILTER_PACKAGE_TEMPLATE = "Update-Paket-Vorlagen (*.udpt)|*.udpt";
private const string FILTER_PACKAGE_ZIP_PACKAGE = "ZIP-Paket (*.zip)|*.zip";
private const string FILTER_PACKAGE_ADDON = "Anwendungserweiterung (*.dll)|*.dll";
private const string FILTER_UPDATEINFO_CONFIGURATION = "Json file (*.json)|*.json";
private const string FILTER_UPDATEPROJECT = "Project file (*.udic)|*.udic";
private const string FILTER_UPDATEPACKAGE = "Zip archiv (*.zip)|*.zip";
// F i e l d s
private string curProjectFilePath;
private UpdateServerManager manager = null;
private DiscordBot discordBot = null;
private readonly UpdatePackageManager packageManager = new UpdatePackageManager();
private string curPackageTemplatePath = string.Empty;
// P r o p e r t i e s
@@ -58,20 +53,11 @@ public partial class UpdateManagerWindow
radWaitingBar_PackageLoading.StopWaiting();
}
private void ProgressPackagingControls(bool enabled)
{
if (enabled)
radWaitingBar_PackageCreation.StartWaiting();
else
radWaitingBar_PackageCreation.StopWaiting();
}
private void SetEnabledUiControls(bool enabled, bool setProjectOptionsAlwayToTrue = false)
{
radRibbonBarGroup_Options.Enabled = enabled || setProjectOptionsAlwayToTrue;
radButtonElement_SaveProject.Enabled = enabled || setProjectOptionsAlwayToTrue;
radRibbonBarGroup_Configuration.Enabled = enabled;
radRibbonBarGroup_NewPackage.Enabled = enabled;
}
private async Task CreateNewProject(string filePath)
@@ -110,11 +96,10 @@ public partial class UpdateManagerWindow
{
manager = new UpdateServerManager(General.CurProject.UpdateServerConfig);
if (await manager.LoadInfoFromServer())
if (manager.Config.GitLabSnippetConfig.Enabled && await manager.ReadInfoFromGitLabSnippet())
{
await LoadPackageList();
LoadPackageList();
LoadUpdateInstallerInfos();
hasError = false;
}
else
@@ -136,27 +121,27 @@ public partial class UpdateManagerWindow
ProgressControls(false);
}
private async Task LoadPackageList()
private void LoadPackageList()
{
ProgressControls(true);
radListView_Packages.BeginUpdate();
radListView_Packages.Items.Clear();
foreach (var pkgVersion in await manager.GetUpdatePackagesList())
foreach (var pkg in manager.UpdateInfo.Packages)
{
var name = manager.GetPackageDescription(pkgVersion).name;
var name = pkg.Name;
var cells = new List<string>
{
string.IsNullOrEmpty(name) ? "<Kein Titel>" : name,
pkgVersion.Version.ToString(),
pkgVersion.Channel.ToString(),
pkgVersion.Build.ToString(),
"Ja"
string.IsNullOrEmpty(name) ? "<No title>" : name,
pkg.Version.Version.ToString(),
pkg.Version.Channel.ToString(),
pkg.Version.Build.ToString(),
"Yes"
};
var item = new ListViewDataItem(String.Empty, cells.ToArray())
var item = new ListViewDataItem(string.Empty, [.. cells])
{
Tag = pkgVersion
Tag = pkg
};
radListView_Packages.Items.Add(item);
@@ -174,79 +159,61 @@ public partial class UpdateManagerWindow
radTextBoxControl_DownloadURL.Text = manager.UpdateInfo.UpdateInstallerLink;
}
private ApplicationVersion GetSelectedPackageVersion()
private UpdatePackageInfo GetSelectedPackage()
{
return radListView_Packages.SelectedItem?.Tag as ApplicationVersion;
return radListView_Packages.SelectedItem?.Tag as UpdatePackageInfo;
}
private async Task<bool> UploadPackage(string filePath)
private bool CreatePackage(string filePath)
{
var success = false;
var resVersion = EditApplicationVersion();
var pkg = new UpdatePackageInfo();
var canceld = EditPackageMeta(pkg);
if (!resVersion.canceled)
if (!canceld)
manager.UpdateInfo.Packages.Add(pkg);
return !canceld;
}
private bool EditPackageMeta(UpdatePackageInfo pkg)
{
var frm = new PackageMetaEditor
{
ProgressControls(true);
if (await manager.UploadPackage(filePath, resVersion.newVersion))
success = true;
ProgressControls(false);
await SaveInfoToServer();
}
return success;
}
private (ApplicationVersion newVersion, bool canceled) EditApplicationVersion()
{
return EditApplicationVersion(new ApplicationVersion());
}
private (ApplicationVersion newVersion, bool canceled) EditApplicationVersion(ApplicationVersion inputVersion)
{
var frm = new ApplicationVersionInput()
{
Version = inputVersion.Version,
Channel = inputVersion.Channel,
Build = inputVersion.Build
Version = pkg.Version.Version,
Channel = pkg.Version.Channel,
Build = pkg.Version.Build,
Packagelink = pkg.Packagelink
};
if (frm.ShowDialog(this) == DialogResult.OK)
return (new ApplicationVersion(frm.Version, frm.Build, frm.Channel), false);
else
return (inputVersion, true);
if (frm.ShowDialog(this) != DialogResult.OK)
return false;
pkg.Version.Version = frm.Version;
pkg.Version.Build = frm.Build;
pkg.Version.Channel = frm.Channel;
pkg.Packagelink = frm.Packagelink;
return true;
}
private async Task<bool> DeletePackage(ApplicationVersion version)
private bool DeletePackage(UpdatePackageInfo pkg)
{
ProgressControls(true);
bool success = await manager.DeletePackage(version);
var success = manager.UpdateInfo.Packages.Remove(pkg);
ProgressControls(false);
return success;
}
private async Task<bool> SaveInfoToServer()
{
if (!manager.Config.GitLabSnippetConfig.Enabled)
return false;
ProgressControls(true);
bool success = await manager.SaveInfoToServer();
var success = await manager.SaveInfoToGitLabSnippet();
ProgressControls(false);
return success;
}
private async Task<bool> ChangePackageVersion(ApplicationVersion version)
{
bool success = false;
var (newVersion, canceled) = EditApplicationVersion(version);
if (!canceled)
{
ProgressControls(true);
success = await manager.ChangePackageVersion(version, newVersion);
ProgressControls(false);
}
return success;
}
// G u i
private void UpdateManagerWindow_Shown(object sender, EventArgs e)
@@ -269,8 +236,7 @@ public partial class UpdateManagerWindow
private void UpdateManagerWindow_FormClosing(object sender, FormClosingEventArgs e)
{
if (discordBot is object)
discordBot.Stop();
discordBot?.Stop();
}
private async void ButtonItem_NewProject_Click(object sender, EventArgs e)
@@ -313,52 +279,31 @@ public partial class UpdateManagerWindow
await SaveInfoToServer();
}
private async void ButtonItem_ExportUpdateConfiguration_Click(object sender, EventArgs e)
private void ButtonItem_ExportUpdateConfiguration_Click(object sender, EventArgs e)
{
var sfd_UpdateAdministration_UpdateConfiguration = new RadSaveFileDialog()
{
Filter = FILTER_UPDATEINFO_CONFIGURATION
};
if (sfd_UpdateAdministration_UpdateConfiguration.ShowDialog(this) == DialogResult.OK)
await manager.SaveInfoToFile(sfd_UpdateAdministration_UpdateConfiguration.FileName);
manager.SaveInfoToFile(sfd_UpdateAdministration_UpdateConfiguration.FileName);
}
private async void ButtonItem_CreateAndUploadPackage_Click(object sender, EventArgs e)
private void ButtonItem_CreateAndUploadPackage_Click(object sender, EventArgs e)
{
var success = false;
if (await ExportTempUpdatePackage())
if (CreatePackage(TempPackageFilePath))
{
if (await UploadPackage(TempPackageFilePath))
{
await LoadPackageList();
success = true;
}
LoadPackageList();
return;
}
if (!success)
RadMessageBox.Show(this, My.Resources.UpdatingAdministrationLangRes.MsgBox_PkgExportSuccess, My.Resources.UpdatingAdministrationLangRes.MsgBox_PkgExportSuccess_Titel, MessageBoxButtons.OK, RadMessageIcon.Info);
RadMessageBox.Show(this, My.Resources.UpdatingAdministrationLangRes.MsgBox_PkgExportSuccess, My.Resources.UpdatingAdministrationLangRes.MsgBox_PkgExportSuccess_Titel, MessageBoxButtons.OK, RadMessageIcon.Info);
}
private async void ButtonItem_UploadExistingPackage_Click(object sender, EventArgs e)
private void ButtonItem_RemovePackage_Click(object sender, EventArgs e)
{
var ofd_UpdateAdministration_UpdatePackage = new RadOpenFileDialog()
{
Filter = FILTER_UPDATEPACKAGE
};
if (ofd_UpdateAdministration_UpdatePackage.ShowDialog(this) == DialogResult.OK)
{
if (await UploadPackage(ofd_UpdateAdministration_UpdatePackage.FileName))
await LoadPackageList();
}
}
private async void ButtonItem_RemovePackage_Click(object sender, EventArgs e)
{
var version = GetSelectedPackageVersion();
if (await DeletePackage(version))
await LoadPackageList();
if (DeletePackage(GetSelectedPackage()))
LoadPackageList();
}
private void TextBoxX_UpdateInstallerDownloadUrl_TextChanged(object sender, EventArgs e)
@@ -371,10 +316,9 @@ public partial class UpdateManagerWindow
if (discordBot == null)
LoadDiscordBot();
if (discordBot is object)
if (discordBot is not null)
{
var version = GetSelectedPackageVersion();
var pkg = manager.GetUpdatePackageInfo(version);
var pkg = GetSelectedPackage();
var frm = new DiscordPostDialog(discordBot, pkg);
frm.ShowDialog(this);
}
@@ -384,7 +328,7 @@ public partial class UpdateManagerWindow
private void LoadDiscordBot()
{
if (discordBot is object)
if (discordBot is not null)
discordBot.Stop();
discordBot = new DiscordBot(General.CurProject.DiscordBotConfig);
@@ -410,31 +354,28 @@ public partial class UpdateManagerWindow
discordBot = null;
}
private async void ButtonItem_ChangeVersion_Click(object sender, EventArgs e)
private void ButtonItem_ChangeVersion_Click(object sender, EventArgs e)
{
var version = GetSelectedPackageVersion();
if (await ChangePackageVersion(version))
{
await SaveInfoToServer();
await LoadPackageList();
}
if (EditPackageMeta(GetSelectedPackage()))
LoadPackageList();
}
private async void ButtonItem_EditDescription_Click(object sender, EventArgs e)
{
var version = GetSelectedPackageVersion();
var desc = manager.GetPackageDescription(version);
var pkg = GetSelectedPackage();
var frm = new PackageDescriptionEditor()
var frm = new PackageDescriptionEditor
{
Titel = desc.name,
Description = desc.description,
DescriptionType = desc.descriptionType
Titel = pkg.Name,
Description = pkg.Notes.Content,
DescriptionType = pkg.Notes.ContentType
};
if (frm.ShowDialog(this) == DialogResult.OK)
{
manager.SetPackageDescription(version, frm.Titel, frm.Description, frm.DescriptionType);
pkg.Name = frm.Titel;
pkg.Notes.Content = frm.Description;
pkg.Notes.ContentType = frm.DescriptionType;
await SaveInfoToServer();
}
}
@@ -475,252 +416,5 @@ public partial class UpdateManagerWindow
private void RadPageView1_SelectedPageChanged(object sender, EventArgs e)
{
var selPage = radPageView1.SelectedPage;
if (selPage == radPageViewPage_Extensions)
{
radRibbonBarGroup_PackageFiles.Visibility = ElementVisibility.Collapsed;
radRibbonBarGroup_PackageExtensions.Visibility = ElementVisibility.Visible;
}
else if (selPage == radPageViewPage_Packaging)
{
radRibbonBarGroup_PackageFiles.Visibility = ElementVisibility.Visible;
radRibbonBarGroup_PackageExtensions.Visibility = ElementVisibility.Collapsed;
}
}
// F e a t u r e s - P a c k a g i n g
private void ShowAllPackageTemplateConfig()
{
ShowPackageFiles();
ShowPackageExtensions();
}
private void ShowPackageFiles()
{
radTreeView_PackagingFiles.BeginUpdate();
radTreeView_PackagingFiles.Nodes.Clear();
if (!string.IsNullOrEmpty(packageManager.FilesToCopyPath))
{
Action<RadTreeNodeCollection, string> nodeCreation = null;
nodeCreation = (parentCollection, p) =>
{
bool isDir = (File.GetAttributes(p) & FileAttributes.Directory) == FileAttributes.Directory;
var n = new RadTreeNode()
{
Tag = p,
Text = radTreeView_PackagingFiles.Nodes == parentCollection ? p : Path.GetFileName(p),
ImageIndex = isDir ? 0 : 1
};
parentCollection.Add(n);
if (isDir)
{
var dirInfo = new DirectoryInfo(p);
dirInfo.EnumerateDirectories().ForEach(di => nodeCreation(n.Nodes, di.FullName));
dirInfo.EnumerateFiles().ForEach(fi => nodeCreation(n.Nodes, fi.FullName));
}
};
nodeCreation(radTreeView_PackagingFiles.Nodes, packageManager.FilesToCopyPath);
}
radTreeView_PackagingFiles.EndUpdate();
}
private void ShowPackageExtensions()
{
radListView_Extensions.BeginUpdate();
radListView_Extensions.Items.Clear();
foreach (string fAddOn in packageManager.GetAllUpdateInstallerÁddOn())
{
var cells = new List<string>
{
Path.GetFileName(fAddOn),
Path.GetDirectoryName(fAddOn)
};
var item = new ListViewDataItem(string.Empty, cells.ToArray())
{
Tag = fAddOn
};
radListView_Extensions.Items.Add(item);
}
radListView_Extensions.EndUpdate();
}
private IEnumerable<string> GetSelectedUpdateInstallAddOns()
{
var list = new List<string>();
foreach (var item in radListView_Extensions.SelectedItems)
list.Add(Conversions.ToString(item.Tag));
return list;
}
private void NewPackageTemplate()
{
packageManager.NewTemplate();
curPackageTemplatePath = string.Empty;
ShowAllPackageTemplateConfig();
}
private void OpenPackageTemplate()
{
var ofd_UpdateAdmin_LoadTemplate = new RadOpenFileDialog() { Filter = FILTER_PACKAGE_TEMPLATE };
if (ofd_UpdateAdmin_LoadTemplate.ShowDialog() == DialogResult.OK)
{
packageManager.LoadTemplate(ofd_UpdateAdmin_LoadTemplate.FileName);
curPackageTemplatePath = ofd_UpdateAdmin_LoadTemplate.FileName;
ShowAllPackageTemplateConfig();
}
}
private void SavePackageTemplate()
{
if (string.IsNullOrEmpty(curPackageTemplatePath))
{
SavePackageTemplateAs();
}
else
{
packageManager.SaveTemplate(curPackageTemplatePath);
}
}
private void SavePackageTemplateAs()
{
var sfd_UpdateAdmin_SaveTemplate = new RadSaveFileDialog() { Filter = FILTER_PACKAGE_TEMPLATE };
if (sfd_UpdateAdmin_SaveTemplate.ShowDialog() == DialogResult.OK)
{
packageManager.SaveTemplate(sfd_UpdateAdmin_SaveTemplate.FileName);
curPackageTemplatePath = sfd_UpdateAdmin_SaveTemplate.FileName;
}
}
private void SelectPackageFileFolder()
{
var ofd_UpdateAdmin_PkgFileFolder = new RadOpenFolderDialog();
if (ofd_UpdateAdmin_PkgFileFolder.ShowDialog() == DialogResult.OK)
{
packageManager.FilesToCopyPath = ofd_UpdateAdmin_PkgFileFolder.FileName;
ShowPackageFiles();
}
}
private void RemovePackageFileFolder()
{
packageManager.FilesToCopyPath = string.Empty;
ShowPackageFiles();
}
private async Task<bool> ExportUpdatePackage(string filePath)
{
bool success = false;
ProgressPackagingControls(true);
try
{
await Task.Run(() => packageManager.ExportPackage(filePath));
success = true;
}
catch (Exception)
{
success = false;
}
ProgressPackagingControls(false);
return success;
}
private async Task<bool> ExportTempUpdatePackage()
{
var filePath = Path.GetTempFileName();
bool res = await ExportUpdatePackage(filePath);
if (res) TempPackageFilePath = filePath;
return res;
}
private void AddUpdateInstallerExtension()
{
var ofd_UpdateAdmin_AddExtension = new RadOpenFileDialog()
{
MultiSelect = true,
Filter = FILTER_PACKAGE_ADDON
};
if (ofd_UpdateAdmin_AddExtension.ShowDialog() == DialogResult.OK)
{
foreach (string f in ofd_UpdateAdmin_AddExtension.FileNames)
{
if (!packageManager.AddUpdateInstallerAddOn(f))
{
RadMessageBox.Show(My.Resources.UpdatingAdministrationLangRes.MsgBox_ErrorAddingInstallerAddOn, My.Resources.UpdatingAdministrationLangRes.MsgBox_Error_Titel, MessageBoxButtons.OK, RadMessageIcon.Error);
}
}
}
}
private void RemoveUpdateInstallerExtension()
{
foreach (string fAddOn in GetSelectedUpdateInstallAddOns())
packageManager.RemoveUpdateInstallerAddOn(fAddOn);
}
// G u i - P a c k a g i n g
private void ButtonItem_Pkg_NewTemplate_Click(object sender, EventArgs e)
{
NewPackageTemplate();
}
private void ButtonItem_Pkg_OpenTemplate_Click(object sender, EventArgs e)
{
OpenPackageTemplate();
}
private void ButtonItem_Pkg_SaveTemplate_Click(object sender, EventArgs e)
{
SavePackageTemplate();
}
private void ButtonItem_Pkg_SaveTemplateAs_Click(object sender, EventArgs e)
{
SavePackageTemplateAs();
}
private void ButtonItem_Pkg_SelectFileFolder_Click(object sender, EventArgs e)
{
SelectPackageFileFolder();
}
private void ButtonItem_Pkg_RemoveFileFolder_Click(object sender, EventArgs e)
{
RemovePackageFileFolder();
}
private async void ButtonItem_Pkg_Export_Click(object sender, EventArgs e)
{
var sfd_UpdateAdmin_ExportPkg = new RadSaveFileDialog()
{
Filter = FILTER_PACKAGE_ZIP_PACKAGE
};
if (sfd_UpdateAdmin_ExportPkg.ShowDialog() == DialogResult.OK)
{
if (await ExportUpdatePackage(sfd_UpdateAdmin_ExportPkg.FileName))
RadMessageBox.Show(this, My.Resources.UpdatingAdministrationLangRes.MsgBox_PkgExportSuccess, My.Resources.UpdatingAdministrationLangRes.MsgBox_PkgExportSuccess_Titel, MessageBoxButtons.OK, RadMessageIcon.Info);
}
}
private void ButtonItem_Pkg_AddExtension_Click(object sender, EventArgs e)
{
AddUpdateInstallerExtension();
}
private void ButtonItem_Pkg_RemoveExtension_Click(object sender, EventArgs e)
{
RemoveUpdateInstallerExtension();
}
}

View File

@@ -1,4 +1,64 @@
<root>
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">