This repository has been archived by the owner on Nov 15, 2018. It is now read-only.
forked from luisantonioa/Technic-Launcher-Updater
-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 651e876
Showing
17 changed files
with
1,126 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
|
||
*.user | ||
*.suo | ||
/WindowsLauncher/bin | ||
/WindowsLauncher/obj | ||
/_ReSharper.Technic |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
|
||
Microsoft Visual Studio Solution File, Format Version 11.00 | ||
# Visual Studio 2010 | ||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WindowsLauncher", "WindowsLauncher\WindowsLauncher.csproj", "{F8127643-FCB9-44D4-9009-9523CC1265B5}" | ||
EndProject | ||
Global | ||
GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||
Debug|x86 = Debug|x86 | ||
Release|x86 = Release|x86 | ||
EndGlobalSection | ||
GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||
{F8127643-FCB9-44D4-9009-9523CC1265B5}.Debug|x86.ActiveCfg = Debug|x86 | ||
{F8127643-FCB9-44D4-9009-9523CC1265B5}.Debug|x86.Build.0 = Debug|x86 | ||
{F8127643-FCB9-44D4-9009-9523CC1265B5}.Release|x86.ActiveCfg = Release|x86 | ||
{F8127643-FCB9-44D4-9009-9523CC1265B5}.Release|x86.Build.0 = Release|x86 | ||
EndGlobalSection | ||
GlobalSection(SolutionProperties) = preSolution | ||
HideSolutionNode = FALSE | ||
EndGlobalSection | ||
EndGlobal |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
using System.Text; | ||
|
||
namespace WindowsLauncher | ||
{ | ||
public static class HexUtil | ||
{ | ||
/// <summary> | ||
/// Hex string lookup table. | ||
/// </summary> | ||
private static readonly string[] HexStringTable = new[] | ||
{ | ||
"00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0A", "0B", "0C", "0D", "0E", "0F", | ||
"10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "1A", "1B", "1C", "1D", "1E", "1F", | ||
"20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "2A", "2B", "2C", "2D", "2E", "2F", | ||
"30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "3A", "3B", "3C", "3D", "3E", "3F", | ||
"40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "4A", "4B", "4C", "4D", "4E", "4F", | ||
"50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "5A", "5B", "5C", "5D", "5E", "5F", | ||
"60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "6A", "6B", "6C", "6D", "6E", "6F", | ||
"70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "7A", "7B", "7C", "7D", "7E", "7F", | ||
"80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "8A", "8B", "8C", "8D", "8E", "8F", | ||
"90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "9A", "9B", "9C", "9D", "9E", "9F", | ||
"A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "AA", "AB", "AC", "AD", "AE", "AF", | ||
"B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "BA", "BB", "BC", "BD", "BE", "BF", | ||
"C0", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "CA", "CB", "CC", "CD", "CE", "CF", | ||
"D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "DA", "DB", "DC", "DD", "DE", "DF", | ||
"E0", "E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "EA", "EB", "EC", "ED", "EE", "EF", | ||
"F0", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "FA", "FB", "FC", "FD", "FE", "FF" | ||
}; | ||
|
||
/// <summary> | ||
/// Returns a hex string representation of an array of bytes. | ||
/// </summary> | ||
/// <param name="value">The array of bytes.</param> | ||
/// <returns>A hex string representation of the array of bytes.</returns> | ||
public static string ToHex(byte[] value) | ||
{ | ||
StringBuilder stringBuilder = new StringBuilder(); | ||
if (value != null) | ||
{ | ||
foreach (byte b in value) | ||
{ | ||
stringBuilder.Append(HexStringTable[b]); | ||
} | ||
} | ||
|
||
return stringBuilder.ToString(); | ||
} | ||
} | ||
} |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,148 @@ | ||
using System; | ||
using System.ComponentModel; | ||
using System.IO; | ||
using System.Net; | ||
using System.Security.Cryptography; | ||
using System.Text; | ||
using System.Windows.Forms; | ||
|
||
namespace TechnicLauncher | ||
{ | ||
public partial class Form1 : Form | ||
{ | ||
public string LauncherURL = "https://raw.github.com/TechnicPack/Technic/master/"; | ||
private const string LauncherBackupFile = Program.LaucherFile + ".bak"; | ||
private const string LauncherTempFile = Program.LaucherFile + ".temp"; | ||
private int _hashDownloadCount, _launcherDownloadCount; | ||
|
||
public bool IsAddressible(Uri uri) | ||
{ | ||
try | ||
{ | ||
using (var client = new MyClient()) | ||
{ | ||
client.HeadOnly = true; | ||
client.DownloadString(uri); | ||
return true; | ||
} | ||
} | ||
catch (Exception loi) | ||
{ | ||
|
||
} | ||
return false; | ||
} | ||
|
||
public Form1() | ||
{ | ||
InitializeComponent(); | ||
|
||
if (File.Exists(Program.LaucherFile)) | ||
{ | ||
DownloadHash(); | ||
} | ||
else | ||
{ | ||
DownloadLauncher(); | ||
} | ||
} | ||
|
||
private void DownloadHash() | ||
{ | ||
lblStatus.Text = @"Checking Launcher Version.."; | ||
var versionCheck = new WebClient(); | ||
versionCheck.DownloadStringCompleted += DownloadStringCompleted; | ||
var uri = new Uri(String.Format("{0}CHECKSUM.md5", LauncherURL)); | ||
if (_hashDownloadCount < 3 && IsAddressible(uri)) | ||
{ | ||
_hashDownloadCount++; | ||
versionCheck.DownloadStringAsync(uri, Program.LaucherFile); | ||
} | ||
else | ||
{ | ||
Program.RunLauncher(); | ||
Close(); | ||
} | ||
} | ||
|
||
private void DownloadLauncher() | ||
{ | ||
lblStatus.Text = String.Format(@"Downloading Launcher ({0}/{1})..", _launcherDownloadCount, 3); | ||
|
||
if (_launcherDownloadCount < 3) | ||
{ | ||
_launcherDownloadCount++; | ||
var wc = new WebClient(); | ||
wc.DownloadProgressChanged += DownloadProgressChanged; | ||
wc.DownloadFileCompleted += DownloadFileCompleted; | ||
wc.DownloadFileAsync(new Uri(String.Format("{0}technic-launcher.jar", LauncherURL)), LauncherTempFile); | ||
} | ||
else | ||
{ | ||
Program.RunLauncher(); | ||
Close(); | ||
} | ||
} | ||
|
||
void DownloadFileCompleted(object sender, AsyncCompletedEventArgs e) | ||
{ | ||
if (e.Error != null) | ||
{ | ||
DownloadLauncher(); | ||
return; | ||
} | ||
lblStatus.Text = @"Running Launcher.."; | ||
pbStatus.Value = 100; | ||
|
||
if (File.Exists(LauncherBackupFile)) | ||
File.Delete(LauncherBackupFile); | ||
if (File.Exists(Program.LaucherFile)) | ||
File.Move(Program.LaucherFile, LauncherBackupFile); | ||
File.Move(LauncherTempFile, Program.LaucherFile); | ||
Program.RunLauncher(); | ||
Close(); | ||
} | ||
|
||
void DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) | ||
{ | ||
if (e.Error != null) | ||
{ | ||
DownloadHash(); | ||
return; | ||
} | ||
MD5 hash = new MD5CryptoServiceProvider(); | ||
String md5, serverMD5 = null; | ||
var sb = new StringBuilder(); | ||
using (var fs = File.Open(Program.LaucherFile, FileMode.Open, FileAccess.Read)) | ||
{ | ||
var md5Bytes = hash.ComputeHash(fs); | ||
foreach (byte hex in md5Bytes) | ||
sb.Append(hex.ToString("x2")); | ||
md5 = sb.ToString().ToLowerInvariant(); | ||
} | ||
|
||
var lines = e.Result.Split(new[] {"\r\n", "\n"}, StringSplitOptions.None); | ||
foreach (var line in lines) | ||
{ | ||
if (!line.Contains("technic-launcher.jar")) continue; | ||
serverMD5 = line.Split('|')[0].ToLowerInvariant(); | ||
break; | ||
} | ||
|
||
if (serverMD5 != null && serverMD5.Equals(md5)) { | ||
Program.RunLauncher(); | ||
Close(); | ||
} | ||
else | ||
{ | ||
DownloadLauncher(); | ||
} | ||
} | ||
|
||
void DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) | ||
{ | ||
lblStatus.Text = String.Format("Downloaded {0}% of launcher..", e.ProgressPercentage); | ||
pbStatus.Value = e.ProgressPercentage; | ||
} | ||
} | ||
} |
Oops, something went wrong.