Skip to content

Commit

Permalink
v1.1.0
Browse files Browse the repository at this point in the history
Added Create module
  • Loading branch information
KilLo445 committed Sep 12, 2024
1 parent 7a20683 commit 3c19579
Show file tree
Hide file tree
Showing 11 changed files with 253 additions and 35 deletions.
96 changes: 80 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,87 @@
# extract-xiso-gui
GUI Version of the command line utility [extract-xiso](https://github.com/XboxDev/extract-xiso).

[Video Demo](https://youtu.be/CrVvFjI6kec)

## Download
[Latest Release Page](https://github.com/KilLo445/extract-xiso-gui/releases/latest)
[Direct Download](https://github.com/KilLo445/extract-xiso-gui/releases/latest/download/extract-xiso-gui.zip)
<a name="readme-top"></a>

### List
<br />
<div align="center">

List the file contents within an XISO file.
<p align="center">
<h1>extract-xiso-gui</h1>
<br />
GUI Version of the command line utility <a href="https://github.com/XboxDev/extract-xiso">extract-xiso</a>.
<br />
<br />
<a href="https://github.com/KilLo445/extract-xiso-gui/issues/new?assignees=&labels=bug&projects=&template=bug_report.md&title=%5BBug+Report%5D+Simple+description+of+the+bug">Report Bug</a>
·
<a href="https://github.com/KilLo445/extract-xiso-gui/issues/new?assignees=&labels=enhancement&projects=&template=feature-request.md&title=%5BFeature+Req%5D+Simple+description+of+your+request">Request Feature</a>
<br />
<br />
</p>

### Rewrite
[![Stargazers][stars-shield]][stars-url]
[![Issues][issues-shield]][issues-url]
</div>

Rewrite file system structure of an XISO.
<!-- ABOUT THE PROJECT -->
## About The Project

### Extract
![extract-xiso-gui Screenshot](https://raw.githubusercontent.com/KilLo445/extract-xiso-gui/master/.github/App.png)
([video demo](https://youtu.be/CrVvFjI6kec))

Extract XISO contents to a directory.
Features:
* Create
* Create an XISO from a directiory.
* List
* List the file contents within an XISO file.
* Rewrite
* Rewrite file system structure of an XISO.
* Extract
* Extract XISO contents to a directory.

## Credit
[extract-xiso](https://github.com/XboxDev/extract-xiso)
### Built With

* [![.NET][.NET]][framework-url]

<!-- GETTING STARTED -->
## Getting Started

### Prerequisites

.NET Framework Runtime 4.8 is required to run extract-xiso-gui.
- [Download page](https://dotnet.microsoft.com/en-us/download/dotnet-framework/net48)
- [Direct (Web)](https://dotnet.microsoft.com/en-us/download/dotnet-framework/thank-you/net48-web-installer)
- [Direct (Offline)](https://dotnet.microsoft.com/en-us/download/dotnet-framework/thank-you/net48-offline-installer)

### Installation

1. Head over to the [latest release](https://github.com/KilLo445/extract-xiso-gui/releases/latest)
2. Download `extract-xiso-gui.zip`
3. Extract somewhere safe
4. Run `extract-xiso-gui.exe`

<!-- LICENSE -->
<!-- ## License
Distributed under the MIT License. See `LICENSE.txt` for more information. -->

<!-- CONTACT -->
## Contact

- Discord
- @decentloser / DecentLoser#7263
- [My Server](https://discord.gg/66qymzdtMw) (Preferred)
- Twitter / X
- [@KilLo445](https://twitter.com/KilLo445)

<!-- MARKDOWN LINKS & IMAGES -->
<!-- https://www.markdownguide.org/basic-syntax/#reference-style-links -->
[forks-shield]: https://img.shields.io/github/forks/KilLo445/extract-xiso-gui.svg?style=for-the-badge
[forks-url]: https://github.com/KilLo445/extract-xiso-gui/network/members
[stars-shield]: https://img.shields.io/github/stars/KilLo445/extract-xiso-gui.svg?style=for-the-badge
[stars-url]: https://github.com/KilLo445/extract-xiso-gui/stargazers
[issues-shield]: https://img.shields.io/github/issues/KilLo445/extract-xiso-gui.svg?style=for-the-badge
[issues-url]: https://github.com/KilLo445/extract-xiso-gui/issues
[.NET]: https://img.shields.io/badge/.NET_Framework-5C2D91?style=for-the-badge&logo=.net&logoColor=white
[Framework]: https://img.shields.io/badge/.NET_Framework-4.8-purple
[framework-url]: https://dotnet.microsoft.com/en-us/download/dotnet-framework

<!-- README Template -->
<!-- https://github.com/othneildrew/Best-README-Template -->
8 changes: 1 addition & 7 deletions extract-xiso-gui/App.xaml.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,4 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
using System.Windows;

namespace extract_xiso_gui
{
Expand Down
34 changes: 34 additions & 0 deletions extract-xiso-gui/Create.xaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<Window x:Class="extract_xiso_gui.Create"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:extract_xiso_gui"
mc:Ignorable="d"
WindowStartupLocation="CenterScreen"
ResizeMode="CanMinimize"
Background="White"
AllowsTransparency="False"
Title="extract-xiso-gui" Height="400" Width="550">
<Grid>
<TextBlock Text="extract-xiso-gui" Foreground="Black" FontFamily="/Fonts/Roboto/#Roboto" FontWeight="Regular" FontSize="24" Height="32" VerticalAlignment="Top" HorizontalAlignment="Center" Margin="0,35,0,0"/>

<StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,0,0,0">
<TextBlock Text="Folder" FontFamily="/Fonts/Roboto/#Roboto" FontWeight="Light" FontSize="18"/>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,0,0,0">
<TextBox Name="FolderPath" Text="" HorizontalScrollBarVisibility="Visible" IsReadOnly="True" FontFamily="/Fonts/Roboto/#Roboto" FontWeight="Light" FontSize="18" TextWrapping="NoWrap" Width="200" Height="50" BorderThickness="2" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,0,0,0"/>
<Button Name="fBrowseBTN" Content="Browse" Click="fBrowseBTN_Click" FontFamily="/Fonts/Roboto/#Roboto" FontWeight="Regular" FontSize="22" Width="100" Height="50" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="20,0,0,0"/>
</StackPanel>
<TextBlock Text="ISO" FontFamily="/Fonts/Roboto/#Roboto" FontWeight="Light" FontSize="18" Margin="0,20,0,0"/>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,0,0,0">
<TextBox Name="ISOPath" Text="" HorizontalScrollBarVisibility="Visible" IsReadOnly="True" FontFamily="/Fonts/Roboto/#Roboto" FontWeight="Light" FontSize="18" TextWrapping="NoWrap" Width="200" Height="50" BorderThickness="2" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,0,0,0"/>
<Button Name="iBrowseBTN" Content="Browse" Click="iBrowseBTN_Click" FontFamily="/Fonts/Roboto/#Roboto" FontWeight="Regular" FontSize="22" Width="100" Height="50" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="20,0,0,0"/>
</StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,20,0,0">
<Button Name="GoBTN" Content="Go!" Click="GoBTN_Click" FontFamily="/Fonts/Roboto/#Roboto" FontWeight="Bold" FontSize="22" Width="100" Height="50" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,0,0,0"/>
</StackPanel>
</StackPanel>

<Button Name="goBack" Content="Go Back" Click="goBack_Click" FontFamily="/Fonts/Roboto/#Roboto" FontWeight="Light" FontSize="14" Width="100" Height="30" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,0,0,30"/>
</Grid>
</Window>
114 changes: 114 additions & 0 deletions extract-xiso-gui/Create.xaml.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
using System;
using System.Diagnostics;
using System.IO;
using System.Windows;
using WinForms = System.Windows.Forms;

namespace extract_xiso_gui
{
public partial class Create : Window
{
string rootPath;
string tempPath;
string xisoTemp;
string xisoBat;
string extractXISO;

string xisoFolder;
string createdISO;

string mainCMD;

public Create()
{
rootPath = Directory.GetCurrentDirectory();
tempPath = Path.GetTempPath();
xisoTemp = Path.Combine(tempPath, "extract-xiso-gui");
xisoBat = Path.Combine(xisoTemp, "extract-xiso-gui.bat");
extractXISO = Path.Combine(rootPath, "extract-xiso.exe");

InitializeComponent();

if (!File.Exists(extractXISO))
{
MessageBoxResult dlXISO = MessageBox.Show("extract-xiso has not been found.\n\nWould you like to download it?", "extract-xiso not found", MessageBoxButton.YesNo, MessageBoxImage.Question);
if (dlXISO == MessageBoxResult.Yes)
{
System.Windows.Forms.Application.Restart();
Application.Current.Shutdown();
}
if (dlXISO == MessageBoxResult.No)
{
MessageBox.Show("extract-xiso is required for extract-xiso-gui to run.\n\nReinstalling extract-xiso-gui may fix the issue.", "extract-xiso not found", MessageBoxButton.OK, MessageBoxImage.Warning);
Application.Current.Shutdown();
}
}
}



private void fBrowseBTN_Click(object sender, RoutedEventArgs e)
{
WinForms.FolderBrowserDialog folderDLG = new WinForms.FolderBrowserDialog();
folderDLG.SelectedPath = System.AppDomain.CurrentDomain.BaseDirectory;
folderDLG.ShowNewFolderButton = false;
WinForms.DialogResult folderResult = folderDLG.ShowDialog();
if (folderResult == WinForms.DialogResult.OK)
{
xisoFolder = folderDLG.SelectedPath;
FolderPath.Text = Path.Combine(xisoFolder);
}
}

private void iBrowseBTN_Click(object sender, RoutedEventArgs e)
{
Microsoft.Win32.SaveFileDialog isoDLG = new Microsoft.Win32.SaveFileDialog();
isoDLG.FileName = "MyXISO";
isoDLG.DefaultExt = ".iso";
isoDLG.Filter = "Disc Images|*.iso";
Nullable<bool> isoResult = isoDLG.ShowDialog();
if (isoResult == true)
{
createdISO = isoDLG.FileName;
ISOPath.Text = isoDLG.FileName;
}
}

private void GoBTN_Click(object sender, RoutedEventArgs e)
{
if (File.Exists(createdISO))
{
MessageBoxResult isoExists = MessageBox.Show($"{createdISO} already exists.\n\nWould you like to overwrite it?", "ISO Exists", MessageBoxButton.YesNo, MessageBoxImage.Question);
if (isoExists == MessageBoxResult.Yes)
{
try { File.Delete(createdISO); }
catch (Exception ex) { MessageBox.Show($"{ex}", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; }
}
else { return; }
}

mainCMD = $"\"{extractXISO}\" -c \"{xisoFolder}\" \"{createdISO}\"";

string[] finalCMD ={
"@echo off",
"title extract-xiso",
$"{mainCMD}",
"pause",
"exit"
};

File.WriteAllLines(xisoBat, finalCMD);
Process.Start(xisoBat);
MessageBoxResult openExtracted = MessageBox.Show("Would you like to open your output directory?", "", MessageBoxButton.YesNo, MessageBoxImage.Information);
if (openExtracted == MessageBoxResult.Yes) { Process.Start(Path.GetDirectoryName(createdISO)); }
return;
}

private void goBack_Click(object sender, RoutedEventArgs e)
{
MainWindow mWindow = new MainWindow();
this.Close();
mWindow.Show();
}
}
}
1 change: 1 addition & 0 deletions extract-xiso-gui/MainWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
</StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,20,0,0">
<ComboBox Name="ComboBox" IsEditable="False" FontFamily="/Fonts/Roboto/#Roboto" FontWeight="Regular" FontSize="22" Width="200" Height="50" BorderThickness="2" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,0,0,0">
<ComboBoxItem Content="Create"/>
<ComboBoxItem Content="List"/>
<ComboBoxItem Content="Rewrite"/>
<ComboBoxItem Content="Extract"/>
Expand Down
21 changes: 15 additions & 6 deletions extract-xiso-gui/MainWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,16 @@
using System.IO;
using System.IO.Compression;
using System.Net;
using System.Threading.Tasks;
using System.Windows;
using WinForms = System.Windows.Forms;

namespace extract_xiso_gui
{
public partial class MainWindow : Window
{
string guiVersion = "1.0.4";
string guiVersion = "1.1.0";
string onlineVerLink = "https://raw.githubusercontent.com/KilLo445/extract-xiso-gui/master/extract-xiso-gui/version.txt";
string updateDL = "https://github.com/KilLo445/extract-xiso-gui/releases/latest";
string updaterDL = "https://github.com/KilLo445/extract-xiso-gui/raw/master/extract-xiso-gui/updater.exe";

string rootPath;
string tempPath;
Expand Down Expand Up @@ -108,8 +106,7 @@ private void CheckForUpdates()
{
try
{
webClient.DownloadFile(new Uri(updaterDL), updater);
Process.Start(updater);
Process.Start(updateDL);
Application.Current.Shutdown();
}
catch (Exception ex)
Expand All @@ -134,7 +131,7 @@ private void CheckForXISO()
}
if (dlXISO == MessageBoxResult.No)
{
MessageBox.Show("extract-xiso is required for extract-xiso-gui to run.\n\nReinstalling extract-xiso-gui may fix the issue.", "", MessageBoxButton.OK, MessageBoxImage.Warning);
MessageBox.Show("extract-xiso is required for extract-xiso-gui to run.\n\nReinstalling extract-xiso-gui may fix the issue.", "extract-xiso not found", MessageBoxButton.OK, MessageBoxImage.Warning);
Application.Current.Shutdown();
}
}
Expand Down Expand Up @@ -208,6 +205,18 @@ private void GoBTN_Click(object sender, RoutedEventArgs e)

comboBoxSelection = ComboBox.Text;

if (comboBoxSelection == "Create")
{
try
{
Create cWindow = new Create();
this.Close();
cWindow.Show();
return;
}
catch (Exception ex) { MessageBox.Show($"{ex}", "Error", MessageBoxButton.OK, MessageBoxImage.Error); }
}

if (!File.Exists(isoFilename))
{
if (isoFilename == null)
Expand Down
2 changes: 0 additions & 2 deletions extract-xiso-gui/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Windows;

Expand Down
10 changes: 7 additions & 3 deletions extract-xiso-gui/extract-xiso-gui.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,10 @@
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</ApplicationDefinition>
<Page Include="Create.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="MainWindow.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
Expand All @@ -72,6 +76,9 @@
<DependentUpon>App.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="Create.xaml.cs">
<DependentUpon>Create.xaml</DependentUpon>
</Compile>
<Compile Include="MainWindow.xaml.cs">
<DependentUpon>MainWindow.xaml</DependentUpon>
<SubType>Code</SubType>
Expand Down Expand Up @@ -112,9 +119,6 @@
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<None Include="updater.exe" />
</ItemGroup>
<ItemGroup>
<Resource Include="Images\xbox.ico" />
</ItemGroup>
Expand Down
Binary file modified extract-xiso-gui/extract-xiso.exe
Binary file not shown.
Binary file modified extract-xiso-gui/updater.exe
Binary file not shown.
2 changes: 1 addition & 1 deletion extract-xiso-gui/version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.0.4
1.1.0

0 comments on commit 3c19579

Please sign in to comment.