Compare commits

..

3 Commits

Author SHA1 Message Date
5aa0c24164 Download BadUpdate and Tools from CDN instead of GitHub. 2026-08-08 02:19:47 +02:00
35c6ccfee8 Added shell script for compiling 2026-08-08 02:19:47 +02:00
4345cf2cf7 Updated gitignore 2026-08-08 02:19:47 +02:00
5 changed files with 61 additions and 33 deletions

24
.gitignore vendored
View File

@@ -396,3 +396,27 @@ FodyWeavers.xsd
# JetBrains Rider
*.sln.iml
# macOS
.DS_Store
.AppleDouble
.LSOverride
Icon
._*
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
__MACOSX/
*.icloud
# Build output
/output/

View File

@@ -14,7 +14,6 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Octokit" Version="14.0.0" />
<PackageReference Include="SharpCompress" Version="0.39.0" />
<PackageReference Include="Spectre.Console" Version="0.49.1" />
<PackageReference Include="System.Management" Version="9.0.3" />

View File

@@ -34,8 +34,9 @@ namespace BadBuilder
("Rock Band Blitz", "https://cdn.niklascfw.de/xbox360/GameData.zip"),
("Simple 360 NAND Flasher", "https://cdn.niklascfw.de/xbox360/Flasher.7z"),
("XeUnshackle", "https://cdn.niklascfw.de/xbox360/XeUnshackle-BETA-v1_03.zip"),
("BadUpdate", "https://cdn.niklascfw.de/xbox360/Xbox360BadUpdate-Retail-USB-v1.2.zip"),
("BadUpdate Tools", "https://cdn.niklascfw.de/xbox360/Tools.zip"),
};
await DownloadHelper.GetGitHubAssets(items);
List<DownloadItem> existingFiles = items.Where(item =>
File.Exists(Path.Combine(DOWNLOAD_DIR, item.url.Split('/').Last()))).ToList();

View File

@@ -1,5 +1,4 @@
using Octokit;
using Spectre.Console;
using Spectre.Console;
using static BadBuilder.Utilities.Constants;
@@ -7,34 +6,6 @@ namespace BadBuilder.Helpers
{
internal static class DownloadHelper
{
internal static async Task GetGitHubAssets(List<DownloadItem> items)
{
GitHubClient gitClient = new(new ProductHeaderValue("BadBuilder-Downloader"));
List<string> repos =
[
"grimdoomer/Xbox360BadUpdate"
];
foreach (var repo in repos)
{
string[] splitRepo = repo.Split('/');
var latestRelease = await gitClient.Repository.Release.GetLatest(splitRepo[0], splitRepo[1]);
foreach (var asset in latestRelease.Assets)
{
string friendlyName = asset.Name switch
{
var name when name.Contains("Free", StringComparison.OrdinalIgnoreCase) => "FreeMyXe",
var name when name.Contains("Tools", StringComparison.OrdinalIgnoreCase) => "BadUpdate Tools",
var name when name.Contains("BadUpdate", StringComparison.OrdinalIgnoreCase) => "BadUpdate",
_ => asset.Name.Substring(0, asset.Name.Length - 4)
};
items.Add(new(friendlyName, asset.BrowserDownloadUrl));
}
}
}
internal static async Task DownloadFileAsync(HttpClient client, ProgressTask task, string url)
{
try
@@ -71,4 +42,4 @@ namespace BadBuilder.Helpers
}
}
}
}
}

33
build.sh Normal file
View File

@@ -0,0 +1,33 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd "$(dirname "$0")" && pwd)"
OUTPUT_DIR="$ROOT/output"
PROJECT="$ROOT/BadBuilder/BadBuilder.csproj"
mkdir -p "$OUTPUT_DIR"
publish() {
local rid="$1"
local name="$2"
echo "Publishing $name ($rid)..."
dotnet publish "$PROJECT" \
-c Release \
-r "$rid" \
-p:SelfContained=false \
-p:PublishSingleFile=true \
-o "$OUTPUT_DIR/tmp-$rid"
mv "$OUTPUT_DIR/tmp-$rid/BadBuilder.exe" "$OUTPUT_DIR/$name"
rm -rf "$OUTPUT_DIR/tmp-$rid"
echo " -> $OUTPUT_DIR/$name"
}
publish "win-x64" "BadBuilder-AMD64.exe"
publish "win-x86" "BadBuilder-x86.exe"
publish "win-arm64" "BadBuilder-ARM64.exe"
echo
echo "Done. Binaries in $OUTPUT_DIR:"
ls -lh "$OUTPUT_DIR"/BadBuilder-*.exe