more changes
This commit is contained in:
parent
2453b05f1c
commit
8490c54df2
@ -64,5 +64,8 @@ namespace UpTool2
|
|||||||
public override string ToString() => "Name: " + name + "\r\nDescription:\r\n" + string.Join("\r\n", description.Split('\n').Select(s => { if (s.EndsWith("\r")) s.Remove(s.Length - 1, 1); return "> " + s; })) + "\r\nVersion: " + version + "\r\nFile: " + file + "\r\nLocal: " + local.ToString() + "\r\nHash: " + hash + "\r\nID: " + ID.ToString() + "\r\nColor: " + color.ToKnownColor().ToString() + "\r\nRunnable: " + runnable + "\r\nMainFile: " + mainFile + "\r\nStatus: " + status.ToString() + "\r\nObject Hash Code: " + GetHashCode();
|
public override string ToString() => "Name: " + name + "\r\nDescription:\r\n" + string.Join("\r\n", description.Split('\n').Select(s => { if (s.EndsWith("\r")) s.Remove(s.Length - 1, 1); return "> " + s; })) + "\r\nVersion: " + version + "\r\nFile: " + file + "\r\nLocal: " + local.ToString() + "\r\nHash: " + hash + "\r\nID: " + ID.ToString() + "\r\nColor: " + color.ToKnownColor().ToString() + "\r\nRunnable: " + runnable + "\r\nMainFile: " + mainFile + "\r\nStatus: " + status.ToString() + "\r\nObject Hash Code: " + GetHashCode();
|
||||||
public static bool operator ==(App left, App right) => left.Equals(right);
|
public static bool operator ==(App left, App right) => left.Equals(right);
|
||||||
public static bool operator !=(App left, App right) => !(left == right);
|
public static bool operator !=(App left, App right) => !(left == right);
|
||||||
|
public string appPath => GlobalVariables.getAppPath(this);
|
||||||
|
public string dataPath => GlobalVariables.getDataPath(this);
|
||||||
|
public string infoPath => GlobalVariables.getInfoPath(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
105
UpTool2/AppInstall.cs
Normal file
105
UpTool2/AppInstall.cs
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
using Microsoft.VisualBasic;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
|
using System.IO.Compression;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using System.Xml.Linq;
|
||||||
|
|
||||||
|
namespace UpTool2
|
||||||
|
{
|
||||||
|
static class AppInstall
|
||||||
|
{
|
||||||
|
public static void Install(App appI)
|
||||||
|
{
|
||||||
|
string app = "";
|
||||||
|
string tmp = "";
|
||||||
|
try
|
||||||
|
{
|
||||||
|
app = GlobalVariables.dir + @"\Apps\" + appI.ID.ToString();
|
||||||
|
tmp = GlobalVariables.dir + @"\tmp";
|
||||||
|
if (Directory.Exists(""))
|
||||||
|
Directory.Delete("", true);
|
||||||
|
Directory.CreateDirectory("");
|
||||||
|
if (Directory.Exists(app))
|
||||||
|
Directory.Delete(app, true);
|
||||||
|
Directory.CreateDirectory(app);
|
||||||
|
if (new DownloadDialog(appI.file, app + @"\package.zip").ShowDialog() != DialogResult.OK)
|
||||||
|
throw new Exception("Download failed");
|
||||||
|
using (SHA256CryptoServiceProvider sha256 = new SHA256CryptoServiceProvider())
|
||||||
|
{
|
||||||
|
string pkghash = BitConverter.ToString(sha256.ComputeHash(File.ReadAllBytes(app + @"\package.zip"))).Replace("-", string.Empty).ToUpper();
|
||||||
|
if (pkghash != appI.hash.ToUpper())
|
||||||
|
throw new Exception("The hash is not equal to the one stored in the repo:\r\nPackage: " + pkghash + "\r\nOnline: " + appI.hash.ToUpper());
|
||||||
|
}
|
||||||
|
completeInstall(app, appI);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
if (Directory.Exists(app))
|
||||||
|
Directory.Delete(app, true);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
if (tmp != "" && Directory.Exists(tmp))
|
||||||
|
Directory.Delete(tmp, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void installZip(string zipPath, App meta)
|
||||||
|
{
|
||||||
|
string app = "";
|
||||||
|
string tmp = "";
|
||||||
|
try
|
||||||
|
{
|
||||||
|
app = meta.appPath;
|
||||||
|
Directory.CreateDirectory(app);
|
||||||
|
tmp = GlobalVariables.dir + @"\tmp";
|
||||||
|
if (Directory.Exists(tmp))
|
||||||
|
Directory.Delete(tmp, true);
|
||||||
|
Directory.CreateDirectory(tmp);
|
||||||
|
File.Copy(zipPath, app + @"\package.zip");
|
||||||
|
completeInstall(app, meta);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
if (Directory.Exists(app))
|
||||||
|
Directory.Delete(app, true);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
if (tmp != "" && Directory.Exists(tmp))
|
||||||
|
Directory.Delete(tmp, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void completeInstall(string app, App appI)
|
||||||
|
{
|
||||||
|
#if !DEBUG
|
||||||
|
try
|
||||||
|
{
|
||||||
|
#endif
|
||||||
|
string tmp = GlobalVariables.dir + @"\tmp";
|
||||||
|
ZipFile.ExtractToDirectory(app + @"\package.zip", tmp);
|
||||||
|
Directory.Move(tmp + @"\Data", app + @"\app");
|
||||||
|
if (appI.runnable)
|
||||||
|
new XElement("app", new XElement("Name", appI.name), new XElement("Description", appI.description), new XElement("Version", appI.version), new XElement("MainFile", appI.mainFile)).Save(app + @"\info.xml");
|
||||||
|
else
|
||||||
|
new XElement("app", new XElement("Name", appI.name), new XElement("Description", appI.description), new XElement("Version", appI.version)).Save(app + @"\info.xml");
|
||||||
|
Process.Start(new ProcessStartInfo { FileName = "cmd.exe", Arguments = "/C \"" + tmp + "\\Install.bat\"", WorkingDirectory = app + @"\app", CreateNoWindow = true, WindowStyle = ProcessWindowStyle.Hidden }).WaitForExit();
|
||||||
|
if (GlobalVariables.relE)
|
||||||
|
GlobalVariables.reloadElements.Invoke();
|
||||||
|
#if !DEBUG
|
||||||
|
}
|
||||||
|
catch { throw; }
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -17,5 +17,6 @@ namespace UpTool2
|
|||||||
public static string getDataPath(Guid app) => getAppPath(app) + @"\app";
|
public static string getDataPath(Guid app) => getAppPath(app) + @"\app";
|
||||||
public static string getInfoPath(Guid app) => getAppPath(app) + "\\info.xml";
|
public static string getInfoPath(Guid app) => getAppPath(app) + "\\info.xml";
|
||||||
public static bool relE = true;
|
public static bool relE = true;
|
||||||
|
public static Action reloadElements;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,42 +15,20 @@ namespace UpTool2
|
|||||||
{
|
{
|
||||||
private void Action_install_Click(object sender, EventArgs e)
|
private void Action_install_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
string app = "";
|
|
||||||
string tmp = "";
|
|
||||||
#if !DEBUG
|
#if !DEBUG
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
#endif
|
#endif
|
||||||
App appI = (App)action_install.Tag;
|
AppInstall.Install((App)action_install.Tag);
|
||||||
app = GlobalVariables.dir + @"\Apps\" + appI.ID.ToString();
|
|
||||||
tmp = GlobalVariables.dir + @"\tmp";
|
|
||||||
if (Directory.Exists(tmp))
|
|
||||||
Directory.Delete(tmp, true);
|
|
||||||
Directory.CreateDirectory(tmp);
|
|
||||||
if (Directory.Exists(app))
|
|
||||||
Directory.Delete(app, true);
|
|
||||||
Directory.CreateDirectory(app);
|
|
||||||
if (new DownloadDialog(appI.file, app + @"\package.zip").ShowDialog() != DialogResult.OK)
|
|
||||||
throw new Exception("Download failed");
|
|
||||||
using (SHA256CryptoServiceProvider sha256 = new SHA256CryptoServiceProvider())
|
|
||||||
{
|
|
||||||
string pkghash = BitConverter.ToString(sha256.ComputeHash(File.ReadAllBytes(app + @"\package.zip"))).Replace("-", string.Empty).ToUpper();
|
|
||||||
if (pkghash != appI.hash.ToUpper())
|
|
||||||
throw new Exception("The hash is not equal to the one stored in the repo:\r\nPackage: " + pkghash + "\r\nOnline: " + appI.hash.ToUpper());
|
|
||||||
}
|
|
||||||
completeInstall(app, appI);
|
|
||||||
#if !DEBUG
|
#if !DEBUG
|
||||||
}
|
}
|
||||||
catch (Exception e1)
|
catch (Exception e1)
|
||||||
{
|
{
|
||||||
if (!GlobalVariables.relE)
|
if (!GlobalVariables.relE)
|
||||||
throw;
|
throw;
|
||||||
if (Directory.Exists(app))
|
|
||||||
Directory.Delete(app, true);
|
|
||||||
MessageBox.Show(e1.ToString(), "Install failed");
|
MessageBox.Show(e1.ToString(), "Install failed");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
Directory.Delete(tmp, true);
|
|
||||||
}
|
}
|
||||||
private void Action_remove_Click(object sender, EventArgs e)
|
private void Action_remove_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
@ -77,8 +55,6 @@ namespace UpTool2
|
|||||||
}
|
}
|
||||||
private void controls_upload_Click(object sender, EventArgs e)
|
private void controls_upload_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
string app = "";
|
|
||||||
string tmp = "";
|
|
||||||
#if !DEBUG
|
#if !DEBUG
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -86,20 +62,10 @@ namespace UpTool2
|
|||||||
if (searchPackageDialog.ShowDialog() == DialogResult.OK)
|
if (searchPackageDialog.ShowDialog() == DialogResult.OK)
|
||||||
{
|
{
|
||||||
Guid ID = Guid.NewGuid();
|
Guid ID = Guid.NewGuid();
|
||||||
app = GlobalVariables.dir + @"\Apps\" + ID.ToString();
|
while (GlobalVariables.apps.ContainsKey(ID) || Directory.Exists(GlobalVariables.getAppPath(ID)))
|
||||||
while (Directory.Exists(app))
|
|
||||||
{
|
|
||||||
ID = Guid.NewGuid();
|
ID = Guid.NewGuid();
|
||||||
app = GlobalVariables.dir + @"\Apps\" + ID.ToString();
|
|
||||||
}
|
|
||||||
App appI = new App(Interaction.InputBox("Name:"), "Locally installed package, removal only", -1, "", true, "", ID, Color.Red, Resources.C_64.ToBitmap(), false, "");
|
App appI = new App(Interaction.InputBox("Name:"), "Locally installed package, removal only", -1, "", true, "", ID, Color.Red, Resources.C_64.ToBitmap(), false, "");
|
||||||
Directory.CreateDirectory(app);
|
AppInstall.installZip(searchPackageDialog.FileName, appI);
|
||||||
tmp = GlobalVariables.dir + @"\tmp";
|
|
||||||
if (Directory.Exists(tmp))
|
|
||||||
Directory.Delete(tmp, true);
|
|
||||||
Directory.CreateDirectory(tmp);
|
|
||||||
File.Copy(searchPackageDialog.FileName, app + @"\package.zip");
|
|
||||||
completeInstall(app, appI);
|
|
||||||
}
|
}
|
||||||
#if !DEBUG
|
#if !DEBUG
|
||||||
}
|
}
|
||||||
@ -107,33 +73,8 @@ namespace UpTool2
|
|||||||
{
|
{
|
||||||
if (!GlobalVariables.relE)
|
if (!GlobalVariables.relE)
|
||||||
throw;
|
throw;
|
||||||
if (Directory.Exists(app))
|
|
||||||
Directory.Delete(app, true);
|
|
||||||
MessageBox.Show(e1.ToString(), "Install failed");
|
MessageBox.Show(e1.ToString(), "Install failed");
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
if (tmp != "" && Directory.Exists(tmp))
|
|
||||||
Directory.Delete(tmp, true);
|
|
||||||
}
|
|
||||||
void completeInstall(string app, App appI)
|
|
||||||
{
|
|
||||||
#if !DEBUG
|
|
||||||
try
|
|
||||||
{
|
|
||||||
#endif
|
|
||||||
string tmp = GlobalVariables.dir + @"\tmp";
|
|
||||||
ZipFile.ExtractToDirectory(app + @"\package.zip", tmp);
|
|
||||||
Directory.Move(tmp + @"\Data", app + @"\app");
|
|
||||||
if (appI.runnable)
|
|
||||||
new XElement("app", new XElement("Name", appI.name), new XElement("Description", appI.description), new XElement("Version", appI.version), new XElement("MainFile", appI.mainFile)).Save(app + @"\info.xml");
|
|
||||||
else
|
|
||||||
new XElement("app", new XElement("Name", appI.name), new XElement("Description", appI.description), new XElement("Version", appI.version)).Save(app + @"\info.xml");
|
|
||||||
Process.Start(new ProcessStartInfo { FileName = "cmd.exe", Arguments = "/C \"" + tmp + "\\Install.bat\"", WorkingDirectory = app + @"\app", CreateNoWindow = true, WindowStyle = ProcessWindowStyle.Hidden }).WaitForExit();
|
|
||||||
if (GlobalVariables.relE)
|
|
||||||
reloadElements();
|
|
||||||
#if !DEBUG
|
|
||||||
}
|
|
||||||
catch { throw; }
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
void reloadElements()
|
void reloadElements()
|
||||||
@ -267,6 +208,7 @@ namespace UpTool2
|
|||||||
}
|
}
|
||||||
public MainForm()
|
public MainForm()
|
||||||
{
|
{
|
||||||
|
GlobalVariables.reloadElements = reloadElements;
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
filterBox.DataSource = Enum.GetValues(typeof(Status));
|
filterBox.DataSource = Enum.GetValues(typeof(Status));
|
||||||
if (Program.online)
|
if (Program.online)
|
||||||
|
@ -54,6 +54,7 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="App.cs" />
|
<Compile Include="App.cs" />
|
||||||
|
<Compile Include="AppInstall.cs" />
|
||||||
<Compile Include="DownloadDialog.cs">
|
<Compile Include="DownloadDialog.cs">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
Reference in New Issue
Block a user