mirror of
https://github.com/ZuneDev/ZuneUIXTools.git
synced 2026-07-27 13:11:59 -07:00
Begin UIX XML decompiler target
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
using Microsoft.Iris.Asm;
|
||||
using Microsoft.Iris.Debug;
|
||||
using Microsoft.Iris.DecompXml;
|
||||
using Microsoft.Iris.Markup;
|
||||
using Spectre.Console;
|
||||
using Spectre.Console.Cli;
|
||||
@@ -77,42 +78,54 @@ public class DecompileCommand : CompilerCommandBase<DecompileCommand.Settings>
|
||||
}
|
||||
}
|
||||
|
||||
Func<LoadResult, string> decompilerMethod;
|
||||
|
||||
if (settings.Language == SourceLanguage.Asm)
|
||||
{
|
||||
foreach (var input in enumeratedInputs.Where(f => !f.EndsWith(".uixa")))
|
||||
decompilerMethod = loadResult =>
|
||||
{
|
||||
try
|
||||
{
|
||||
var uibLoadResult = LoadIrisFile(input, settings);
|
||||
if (uibLoadResult.Status != LoadResultStatus.Success)
|
||||
throw new Exception($"Failed to load UIB source from {uibLoadResult.ErrorContextUri}");
|
||||
|
||||
var disassembler = Disassembler.Load(uibLoadResult);
|
||||
var asm = disassembler.Write();
|
||||
|
||||
var output = GetOutputPath(settings, input);
|
||||
File.WriteAllText(output, asm);
|
||||
|
||||
AnsiConsole.MarkupLineInterpolated($"[green]Decompiled to '{output}'[/]");
|
||||
success = true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
AnsiConsole.WriteException(ex);
|
||||
success = false;
|
||||
}
|
||||
}
|
||||
var disassembler = Disassembler.Load(loadResult);
|
||||
return disassembler.Write();
|
||||
};
|
||||
}
|
||||
else if (settings.Language == SourceLanguage.Xml)
|
||||
{
|
||||
AnsiConsole.MarkupLine("[red]UIX XML is not currently a supported decompilation target.[/]");
|
||||
decompilerMethod = loadResult =>
|
||||
{
|
||||
var decompiler = Decompiler.Load(loadResult);
|
||||
return decompiler.DecompileToSource();
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
AnsiConsole.MarkupLine($"[red]{settings.Language} is not currently a supported decompilation target.[/]");
|
||||
goto done;
|
||||
}
|
||||
|
||||
done:
|
||||
foreach (var input in enumeratedInputs)//.Where(f => !f.EndsWith(settings.Language.GetExtension())))
|
||||
{
|
||||
try
|
||||
{
|
||||
var uibLoadResult = LoadIrisFile(input, settings);
|
||||
if (uibLoadResult.Status != LoadResultStatus.Success)
|
||||
throw new Exception($"Failed to load UIB source from {uibLoadResult.ErrorContextUri}");
|
||||
|
||||
var decompiledSource = decompilerMethod(uibLoadResult);
|
||||
|
||||
var output = GetOutputPath(settings, input);
|
||||
File.WriteAllText(output, decompiledSource);
|
||||
|
||||
AnsiConsole.MarkupLineInterpolated($"[green]Decompiled to '{output}'[/]");
|
||||
success = true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
AnsiConsole.WriteException(ex);
|
||||
success = false;
|
||||
}
|
||||
}
|
||||
|
||||
done:
|
||||
StopErrorReporting();
|
||||
Report?.Render(AnsiConsole.Console);
|
||||
AnsiConsole.WriteLine();
|
||||
|
||||
@@ -2,7 +2,9 @@
|
||||
"profiles": {
|
||||
"UIXC": {
|
||||
"commandName": "Project",
|
||||
"commandLineArgs": "decompile C:\\Users\\jjask\\Documents\\Dump\\Zune\\ZuneShellResources -A ZuneShell.dll -A UIXControls.dll -A ZuneDBApi.dll -o C:\\Users\\jjask\\Documents\\Dump\\Zune\\ZuneShellResources_uixa -t C:\\Users\\jjask\\Documents\\Dump\\Zune\\ZuneShellResources_uixa\\_DATATABLE.uixa",
|
||||
"commandLineArgs": "decompile C:\\Users\\jjask\\Documents\\Dump\\Zune\\ZuneShellResources\\AboutDialog.uix -l xml -A ZuneShell.dll -A UIXControls.dll -A ZuneDBApi.dll -o C:\\Users\\jjask\\Documents\\Dump\\Zune\\ZuneShellResources_xml -t C:\\Users\\jjask\\Documents\\Dump\\Zune\\ZuneShellResources\\_DATATABLE.uib",
|
||||
|
||||
//"commandLineArgs": "decompile C:\\Users\\jjask\\Documents\\Dump\\Zune\\ZuneShellResources -l xml -A ZuneShell.dll -A UIXControls.dll -A ZuneDBApi.dll -o C:\\Users\\jjask\\Documents\\Dump\\Zune\\ZuneShellResources_xml -t C:\\Users\\jjask\\Documents\\Dump\\Zune\\ZuneShellResources\\_DATATABLE.uib",
|
||||
//"commandLineArgs": "decompile C:\\Users\\jjask\\Documents\\Dump\\Zune\\ZuneShellResources\\_DATATABLE.UIB -A ZuneShell.dll -A UIXControls.dll -A ZuneDBApi.dll -o C:\\Users\\jjask\\Documents\\Dump\\Zune\\ZuneShellResources_uixa",
|
||||
//"commandLineArgs": "compile C:\\Users\\jjask\\Documents\\Dump\\Zune\\ZuneShellResources\\CreatePassport.uixa -A ZuneShell.dll -A UIXControls.dll -A ZuneDBApi.dll -o C:\\Users\\jjask\\Documents\\Dump\\Zune",
|
||||
//"commandLineArgs": "compile C:\\Users\\jjask\\Documents\\Dump\\Zune\\_DATATABLE.uixa -A ZuneShell.dll -A UIXControls.dll -A ZuneDBApi.dll -o C:\\Users\\jjask\\Documents\\Dump\\Zune",
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
<PackageReference Include="Spectre.Console.Cli" Version="0.49.1" />
|
||||
<ProjectReference Include="..\libs\MicrosoftIris\UIX\UIX.csproj" />
|
||||
<ProjectReference Include="..\libs\UIX.Asm\UIX.Asm.csproj" />
|
||||
<ProjectReference Include="..\libs\UIX.DecompXml\UIX.DecompXml.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
Reference in New Issue
Block a user