0% found this document useful (0 votes)
10 views4 pages

Message

This C# program allows users to download and extract manifest files for Steam applications using their APPID. It checks for the Steam installation path in the registry, downloads a ZIP file from GitHub, extracts its contents, and moves specific files to designated directories. The program also handles errors and provides user feedback throughout the process.

Uploaded by

mmohsaa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views4 pages

Message

This C# program allows users to download and extract manifest files for Steam applications using their APPID. It checks for the Steam installation path in the registry, downloads a ZIP file from GitHub, extracts its contents, and moves specific files to designated directories. The program also handles errors and provides user feedback throughout the process.

Uploaded by

mmohsaa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 4

using System;

using System.IO;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using System.Collections.Generic;
using Microsoft.Win32;
using System.IO.Compression;
using System.Diagnostics;

class Program
{
static List<string> arquivosMovidos = new List<string>();
static string steamPath = GetSteamPath();

static async Task Main()


{
if (string.IsNullOrEmpty(steamPath))
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Não foi possível encontrar o caminho do Steam no
registro!");
Console.WriteLine("Verifique se o Steam está instalado corretamente.");
Console.ResetColor();
Thread.Sleep(3000);
return;
}

while (true)
{
Console.Clear();
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("NÃO PAGUE POR ISSO, É GRATUITO!");
Console.WriteLine(" ");
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("MANIFEST DOWNLOADER BY WAY ( OWYM )");
Console.WriteLine(" ");

Console.Write("Digite o APPID: ");


var APPID = Console.ReadLine()?.Trim();

if (string.IsNullOrWhiteSpace(APPID))
{
Console.WriteLine("APPID não pode ser vazio!");
Thread.Sleep(1000);
continue;
}

await ProcessarAPPID(APPID);
}
}

static async Task ProcessarAPPID(string APPID)


{
var DOWNLOAD =
$"https://github.com/SteamAutoCracks/ManifestHub/archive/refs/heads/{APPID}.zip";
string CAMINHO =
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile),
"Downloads");
string NOMEDOARQUIVO = Path.Combine(CAMINHO, APPID + ".zip");
string PASTA_EXTRAIDA = Path.Combine(CAMINHO, APPID + "_extracted");

using (HttpClient client = new HttpClient())


{
client.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0");
client.Timeout = TimeSpan.FromMinutes(5);

try
{

Console.WriteLine("\nIniciando download...");
byte[] data = await client.GetByteArrayAsync(DOWNLOAD);

// Corrigido: Usando WriteAllBytes síncrono


File.WriteAllBytes(NOMEDOARQUIVO, data);
Console.WriteLine($"Download concluído:
{Path.GetFileName(NOMEDOARQUIVO)}");

Console.WriteLine("\nExtraindo arquivos...");
if (Directory.Exists(PASTA_EXTRAIDA))
{
Directory.Delete(PASTA_EXTRAIDA, true);
}
Directory.CreateDirectory(PASTA_EXTRAIDA);

ZipFile.ExtractToDirectory(NOMEDOARQUIVO, PASTA_EXTRAIDA);
Console.WriteLine($"Extração completa em: {PASTA_EXTRAIDA}");

// Mover arquivos para as pastas corretas


Console.WriteLine("\nMovendo arquivos...");
MoverArquivos(PASTA_EXTRAIDA);

// Limpeza
File.Delete(NOMEDOARQUIVO);
Directory.Delete(PASTA_EXTRAIDA, true);

Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("\nProcesso concluído com sucesso!");
Console.ResetColor();
Console.WriteLine("\nPressione qualquer tecla para continuar...");
foreach (var process in Process.GetProcessesByName("steam"))
{
process.Kill();
process.WaitForExit();
}

string steamExe = Path.Combine(steamPath, "steam.exe");


if (File.Exists(steamExe))
{
Process.Start(steamExe);

}
else
Console.ReadKey();
}
catch (Exception ex)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("\nErro durante o processamento:");
Console.WriteLine(ex.Message);
Console.ResetColor();
Console.WriteLine("\nPressione qualquer tecla para tentar
novamente...");
Console.ReadKey();
}
}
}

static string GetSteamPath()


{
try
{
string keyPath = @"Software\Valve\Steam";
object steamPathObj = Registry.GetValue(@"HKEY_CURRENT_USER\" +
keyPath, "SteamPath", null);

if (steamPathObj != null)
{
return steamPathObj.ToString().Replace('/', '\\');
}
return null;
}
catch
{
return null;
}
}

static void MoverArquivos(string pastaOrigem)


{
try
{

var arquivosLua = Directory.GetFiles(pastaOrigem, "*.lua",


SearchOption.AllDirectories);
var arquivosManifest = Directory.GetFiles(pastaOrigem, "*.manifest",
SearchOption.AllDirectories);

string destinoLua = Path.Combine(steamPath, "config", "stplug-in");


string destinoManifest = Path.Combine(steamPath, "config",
"depotcache");

Directory.CreateDirectory(destinoLua);
Directory.CreateDirectory(destinoManifest);

void MoverArquivo(string arquivo, string destinoDir)


{
string nomeArquivo = Path.GetFileName(arquivo);
string destinoCompleto = Path.Combine(destinoDir, nomeArquivo);

if (File.Exists(destinoCompleto))
{
File.Delete(destinoCompleto);
}

File.Move(arquivo, destinoCompleto);
Console.WriteLine($"Movido: {nomeArquivo} → {destinoDir}");
}

// Mover arquivos .lua


foreach (var arquivo in arquivosLua)
{
if (!arquivosMovidos.Contains(arquivo))
{
MoverArquivo(arquivo, destinoLua);
arquivosMovidos.Add(arquivo);
}
}

// Mover arquivos .manifest


foreach (var arquivo in arquivosManifest)
{
if (!arquivosMovidos.Contains(arquivo))
{
MoverArquivo(arquivo, destinoManifest);
arquivosMovidos.Add(arquivo);
}
}
}
catch (Exception ex)
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine($"Aviso ao mover arquivos: {ex.Message}");
Console.ResetColor();
}
}
}

You might also like