Patchup Update

This commit is contained in:
kawaiizenbo 2024-04-25 14:04:54 -07:00
parent 8722fe8312
commit dbcdd12520
10 changed files with 160 additions and 104 deletions

View file

@ -8,13 +8,25 @@ EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
{D9BE1C6C-1FC3-427E-A9EC-E2D8246C18EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D9BE1C6C-1FC3-427E-A9EC-E2D8246C18EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D9BE1C6C-1FC3-427E-A9EC-E2D8246C18EB}.Debug|Any CPU.Build.0 = Debug|Any CPU {D9BE1C6C-1FC3-427E-A9EC-E2D8246C18EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D9BE1C6C-1FC3-427E-A9EC-E2D8246C18EB}.Debug|x64.ActiveCfg = Debug|x64
{D9BE1C6C-1FC3-427E-A9EC-E2D8246C18EB}.Debug|x64.Build.0 = Debug|x64
{D9BE1C6C-1FC3-427E-A9EC-E2D8246C18EB}.Debug|x86.ActiveCfg = Debug|x86
{D9BE1C6C-1FC3-427E-A9EC-E2D8246C18EB}.Debug|x86.Build.0 = Debug|x86
{D9BE1C6C-1FC3-427E-A9EC-E2D8246C18EB}.Release|Any CPU.ActiveCfg = Release|Any CPU {D9BE1C6C-1FC3-427E-A9EC-E2D8246C18EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D9BE1C6C-1FC3-427E-A9EC-E2D8246C18EB}.Release|Any CPU.Build.0 = Release|Any CPU {D9BE1C6C-1FC3-427E-A9EC-E2D8246C18EB}.Release|Any CPU.Build.0 = Release|Any CPU
{D9BE1C6C-1FC3-427E-A9EC-E2D8246C18EB}.Release|x64.ActiveCfg = Release|x64
{D9BE1C6C-1FC3-427E-A9EC-E2D8246C18EB}.Release|x64.Build.0 = Release|x64
{D9BE1C6C-1FC3-427E-A9EC-E2D8246C18EB}.Release|x86.ActiveCfg = Release|x86
{D9BE1C6C-1FC3-427E-A9EC-E2D8246C18EB}.Release|x86.Build.0 = Release|x86
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8"?>
<configuration> <configuration>
<startup> <startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup>
</configuration> </configuration>

View file

@ -15,6 +15,7 @@
<Deterministic>true</Deterministic> <Deterministic>true</Deterministic>
<NuGetPackageImportStamp> <NuGetPackageImportStamp>
</NuGetPackageImportStamp> </NuGetPackageImportStamp>
<TargetFrameworkProfile />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget> <PlatformTarget>AnyCPU</PlatformTarget>
@ -25,6 +26,7 @@
<DefineConstants>DEBUG;TRACE</DefineConstants> <DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget> <PlatformTarget>AnyCPU</PlatformTarget>
@ -34,6 +36,46 @@
<DefineConstants>TRACE</DefineConstants> <DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>appmanager.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x64\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<OutputPath>bin\x64\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>bin\x86\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="iMobileDevice-net, Version=1.3.0.0, Culture=neutral, PublicKeyToken=040ae19651fac98a, processorArchitecture=MSIL"> <Reference Include="iMobileDevice-net, Version=1.3.0.0, Culture=neutral, PublicKeyToken=040ae19651fac98a, processorArchitecture=MSIL">
@ -99,6 +141,9 @@
<ItemGroup> <ItemGroup>
<None Include="App.config" /> <None Include="App.config" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Resource Include="appmanager.ico" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\iMobileDevice-net.1.3.17\build\net45\iMobileDevice-net.targets" Condition="Exists('..\packages\iMobileDevice-net.1.3.17\build\net45\iMobileDevice-net.targets')" /> <Import Project="..\packages\iMobileDevice-net.1.3.17\build\net45\iMobileDevice-net.targets" Condition="Exists('..\packages\iMobileDevice-net.1.3.17\build\net45\iMobileDevice-net.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">

View file

@ -7,9 +7,12 @@
mc:Ignorable="d" mc:Ignorable="d"
Title="AppManager (No device)" Height="550" Width="450" MinHeight="550" MinWidth="450" Loaded="Event_window_Loaded"> Title="AppManager (No device)" Height="550" Width="450" MinHeight="550" MinWidth="450" Loaded="Event_window_Loaded">
<Grid> <Grid>
<Button x:Name="installNewAppButton" Content="Install new" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Height="20" Width="75" IsEnabled="False" Click="Event_installNewAppButton_Click"/> <Menu VerticalAlignment="Top" Height="24">
<Button x:Name="removeSelectedAppButton" Content="Remove selected" HorizontalAlignment="Left" Margin="90,10,0,0" VerticalAlignment="Top" Height="20" Width="100" IsEnabled="False" Click="Event_removeSelectedAppButton_Click"/> <MenuItem x:Name="installNewAppButton" Header="_Install new" IsEnabled="False" Click="Event_installNewAppButton_Click" Height="24"/>
<GroupBox Header="Installed Apps" Margin="10,35,10,250"> <MenuItem x:Name="removeSelectedAppButton" Header="Remove selecte_d" IsEnabled="False" Click="Event_removeSelectedAppButton_Click" Height="24"/>
<MenuItem x:Name="refreshAppListButton" Header="_Refresh List" IsEnabled="False" Click="Event_refreshAppListButton_Click" Height="24"/>
</Menu>
<GroupBox Header="Installed Apps" Margin="10,29,10,245">
<Grid> <Grid>
<ListView x:Name="installedAppsListView" d:ItemsSource="{d:SampleData ItemCount=5}"> <ListView x:Name="installedAppsListView" d:ItemsSource="{d:SampleData ItemCount=5}">
<ListView.View> <ListView.View>
@ -22,7 +25,7 @@
</ListView> </ListView>
</Grid> </Grid>
</GroupBox> </GroupBox>
<GroupBox Header="Log" Margin="10,0,10,10" VerticalAlignment="Bottom" Height="235"> <GroupBox Header="Log" Margin="10,0,10,10" VerticalAlignment="Bottom" Height="230">
<Grid> <Grid>
<ListBox x:Name="logListBox" d:ItemsSource="{d:SampleData ItemCount=5}" FontFamily="Lucida Console"> <ListBox x:Name="logListBox" d:ItemsSource="{d:SampleData ItemCount=5}" FontFamily="Lucida Console">
<ListBox.ItemTemplate> <ListBox.ItemTemplate>
@ -33,7 +36,5 @@
</ListBox> </ListBox>
</Grid> </Grid>
</GroupBox> </GroupBox>
<Button x:Name="refreshAppListButton" Content="Refresh List" HorizontalAlignment="Left" Margin="195,10,0,0" VerticalAlignment="Top" Height="20" Width="75" IsEnabled="False" Click="Event_refreshAppListButton_Click"/>
</Grid> </Grid>
</Window> </Window>

View file

@ -7,6 +7,8 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Diagnostics; using System.Diagnostics;
using System.IO;
using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Timers; using System.Timers;
using System.Windows; using System.Windows;
@ -27,6 +29,7 @@ namespace AppManager
private string deviceName; private string deviceName;
private string deviceVersion; private string deviceVersion;
private string deviceUDID = ""; private string deviceUDID = "";
bool madeTempFile = false;
private string ipaPath = ""; private string ipaPath = "";
private string selectedBundleID = ""; private string selectedBundleID = "";
@ -79,10 +82,7 @@ namespace AppManager
new Action( new Action(
delegate () delegate ()
{ {
logListBox.Items.Add("Device disconnected."); Log("Device disconnected.");
var border = (Border)VisualTreeHelper.GetChild(logListBox, 0);
var scrollViewer = (ScrollViewer)VisualTreeHelper.GetChild(border, 0);
scrollViewer.ScrollToBottom();
installedAppsListView.ItemsSource = null; installedAppsListView.ItemsSource = null;
} }
)); ));
@ -100,14 +100,11 @@ namespace AppManager
new Action( new Action(
delegate () delegate ()
{ {
logListBox.Items.Add("Connecting to device..."); Log("Connecting to device...");
var border = (Border)VisualTreeHelper.GetChild(logListBox, 0);
var scrollViewer = (ScrollViewer)VisualTreeHelper.GetChild(border, 0);
scrollViewer.ScrollToBottom();
} }
)); ));
idevice.idevice_new(out deviceHandle, udids[0]).ThrowOnError(); idevice.idevice_new(out deviceHandle, udids[0]).ThrowOnError();
lockdown.lockdownd_client_new_with_handshake(deviceHandle, out lockdownHandle, "absl").ThrowOnError(); lockdown.lockdownd_client_new_with_handshake(deviceHandle, out lockdownHandle, "AppManager").ThrowOnError();
// get device info // get device info
lockdown.lockdownd_get_device_name(lockdownHandle, out deviceName).ThrowOnError(); lockdown.lockdownd_get_device_name(lockdownHandle, out deviceName).ThrowOnError();
@ -120,18 +117,18 @@ namespace AppManager
deviceUDID = udids[0]; deviceUDID = udids[0];
Task.Run(new Action(GetAppsThread));
Dispatcher.Invoke( Dispatcher.Invoke(
System.Windows.Threading.DispatcherPriority.Normal, System.Windows.Threading.DispatcherPriority.Normal,
new Action( new Action(
delegate () async delegate ()
{ {
installedAppsListView.ItemsSource = appList;
window.Title = $"AppManager ({deviceName}, {deviceType}, iOS {deviceVersion})"; window.Title = $"AppManager ({deviceName}, {deviceType}, iOS {deviceVersion})";
installNewAppButton.IsEnabled = true; installNewAppButton.IsEnabled = true;
removeSelectedAppButton.IsEnabled = true; removeSelectedAppButton.IsEnabled = true;
refreshAppListButton.IsEnabled = true; refreshAppListButton.IsEnabled = true;
await Task.Run(new Action(GetAppsThread));
installedAppsListView.ItemsSource = null;
installedAppsListView.ItemsSource = appList;
} }
)); ));
gotDeviceInfo = true; gotDeviceInfo = true;
@ -139,19 +136,14 @@ namespace AppManager
catch (Exception ex) catch (Exception ex)
{ {
deviceUDID = ""; deviceUDID = "";
Dispatcher.Invoke( Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Action(
System.Windows.Threading.DispatcherPriority.Normal,
new Action(
delegate () delegate ()
{ {
installNewAppButton.IsEnabled = false; installNewAppButton.IsEnabled = false;
removeSelectedAppButton.IsEnabled = false; removeSelectedAppButton.IsEnabled = false;
refreshAppListButton.IsEnabled = false; refreshAppListButton.IsEnabled = false;
window.Title = $"AppManager (No device)"; window.Title = $"AppManager (No device)";
logListBox.Items.Add($"Could not connect to device: {ex.Message}"); Log($"Could not connect to device: {ex.Message}");
var border = (Border)VisualTreeHelper.GetChild(logListBox, 0);
var scrollViewer = (ScrollViewer)VisualTreeHelper.GetChild(border, 0);
scrollViewer.ScrollToBottom();
} }
)); ));
gotDeviceInfo = false; // never should matter but just in case gotDeviceInfo = false; // never should matter but just in case
@ -171,12 +163,19 @@ namespace AppManager
openIPAFile.ShowDialog(); openIPAFile.ShowDialog();
ipaPath = openIPAFile.FileName; string origIpaPath = openIPAFile.FileName;
string fixedIpaPath = Regex.Replace(origIpaPath, @"[^\u0000-\u007F]+", "_");
if (origIpaPath == fixedIpaPath) { ipaPath = origIpaPath; madeTempFile = false; }
else
{
Log("Filename contains invalid characters. Making duplicate");
madeTempFile = true;
Debug.WriteLine(origIpaPath);
File.Copy(origIpaPath, fixedIpaPath);
ipaPath = fixedIpaPath;
}
logListBox.Items.Add($"Attempting install of {ipaPath}"); Log($"Attempting install of {ipaPath}");
var border = (Border)VisualTreeHelper.GetChild(logListBox, 0);
var scrollViewer = (ScrollViewer)VisualTreeHelper.GetChild(border, 0);
scrollViewer.ScrollToBottom();
Task.Run(new Action(InstallAppThread)); Task.Run(new Action(InstallAppThread));
} }
@ -184,22 +183,21 @@ namespace AppManager
{ {
selectedBundleID = ((DeviceApp)installedAppsListView.SelectedItem).CFBundleIdentifier; selectedBundleID = ((DeviceApp)installedAppsListView.SelectedItem).CFBundleIdentifier;
logListBox.Items.Add($"Attempting removal of of {selectedBundleID}"); Log($"Attempting removal of of {selectedBundleID}");
var border = (Border)VisualTreeHelper.GetChild(logListBox, 0);
var scrollViewer = (ScrollViewer)VisualTreeHelper.GetChild(border, 0);
scrollViewer.ScrollToBottom();
Task.Run(new Action(RemoveAppThread)); Task.Run(new Action(RemoveAppThread));
} }
private void Event_refreshAppListButton_Click(object sender, RoutedEventArgs e) private void Event_refreshAppListButton_Click(object sender, RoutedEventArgs e)
{ {
Task.Run(new Action(GetAppsThread)); Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Action(
async delegate ()
{
await Task.Run(new Action(GetAppsThread));
}
));
installedAppsListView.ItemsSource = null; installedAppsListView.ItemsSource = null;
installedAppsListView.ItemsSource = appList; installedAppsListView.ItemsSource = appList;
logListBox.Items.Add("Refreshed."); Log("Refreshed.");
var border = (Border)VisualTreeHelper.GetChild(logListBox, 0);
var scrollViewer = (ScrollViewer)VisualTreeHelper.GetChild(border, 0);
scrollViewer.ScrollToBottom();
} }
private void RemoveAppThread() private void RemoveAppThread()
@ -223,19 +221,18 @@ namespace AppManager
if (line == null || line.Trim() == "") line = proc.StandardError.ReadLine(); if (line == null || line.Trim() == "") line = proc.StandardError.ReadLine();
Dispatcher.Invoke(() => Dispatcher.Invoke(() =>
{ {
logListBox.Items.Add(line); Log(line);
var border = (Border)VisualTreeHelper.GetChild(logListBox, 0);
var scrollViewer = (ScrollViewer)VisualTreeHelper.GetChild(border, 0);
scrollViewer.ScrollToBottom();
}); });
} }
Dispatcher.Invoke(() => Dispatcher.Invoke(() =>
{ {
logListBox.Items.Add($"Process ended with code {proc.ExitCode} {(proc.ExitCode == 0 ? "(Success)" : "")}"); Log($"Process ended with code {proc.ExitCode} {(proc.ExitCode == 0 ? "(Success)" : "")}");
var border = (Border)VisualTreeHelper.GetChild(logListBox, 0); Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Action(
var scrollViewer = (ScrollViewer)VisualTreeHelper.GetChild(border, 0); async delegate ()
scrollViewer.ScrollToBottom(); {
Task.Run(new Action(GetAppsThread)); await Task.Run(new Action(GetAppsThread));
}
));
installedAppsListView.ItemsSource = null; installedAppsListView.ItemsSource = null;
installedAppsListView.ItemsSource = appList; installedAppsListView.ItemsSource = appList;
}); });
@ -262,22 +259,26 @@ namespace AppManager
if (line == null || line.Trim() == "") line = proc.StandardError.ReadLine(); if (line == null || line.Trim() == "") line = proc.StandardError.ReadLine();
Dispatcher.Invoke(() => Dispatcher.Invoke(() =>
{ {
logListBox.Items.Add(line); Log(line);
var border = (Border)VisualTreeHelper.GetChild(logListBox, 0);
var scrollViewer = (ScrollViewer)VisualTreeHelper.GetChild(border, 0);
scrollViewer.ScrollToBottom();
}); });
} }
Dispatcher.Invoke(() => Dispatcher.Invoke(() =>
{ {
logListBox.Items.Add($"Process ended with code {proc.ExitCode} {(proc.ExitCode == 0 ? "(Success)" : "")}"); Log($"Process ended with code {proc.ExitCode} {(proc.ExitCode == 0 ? "(Success)" : "")}");
var border = (Border)VisualTreeHelper.GetChild(logListBox, 0); Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Action(
var scrollViewer = (ScrollViewer)VisualTreeHelper.GetChild(border, 0); async delegate ()
scrollViewer.ScrollToBottom(); {
Task.Run(new Action(GetAppsThread)); await Task.Run(new Action(GetAppsThread));
}
));
installedAppsListView.ItemsSource = null; installedAppsListView.ItemsSource = null;
installedAppsListView.ItemsSource = appList; installedAppsListView.ItemsSource = appList;
}); });
if (madeTempFile)
{
File.Delete(ipaPath);
madeTempFile = false;
}
} }
private void GetAppsThread() private void GetAppsThread()
@ -309,6 +310,14 @@ namespace AppManager
} }
proc.WaitForExit(); proc.WaitForExit();
} }
public void Log(string msg)
{
logListBox.Items.Add(msg);
var border = (Border)VisualTreeHelper.GetChild(logListBox, 0);
var scrollViewer = (ScrollViewer)VisualTreeHelper.GetChild(border, 0);
scrollViewer.ScrollToBottom();
}
} }
public class DeviceApp public class DeviceApp

View file

@ -8,10 +8,10 @@
// </auto-generated> // </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
namespace AppManager.Properties namespace AppManager.Properties {
{ using System;
/// <summary> /// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc. /// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary> /// </summary>
@ -19,51 +19,43 @@ namespace AppManager.Properties
// class via a tool like ResGen or Visual Studio. // class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen // To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project. // with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources internal class Resources {
{
private static global::System.Resources.ResourceManager resourceMan; private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture; private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() internal Resources() {
{
} }
/// <summary> /// <summary>
/// Returns the cached ResourceManager instance used by this class. /// Returns the cached ResourceManager instance used by this class.
/// </summary> /// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager internal static global::System.Resources.ResourceManager ResourceManager {
{ get {
get if (object.ReferenceEquals(resourceMan, null)) {
{
if ((resourceMan == null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AppManager.Properties.Resources", typeof(Resources).Assembly); global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AppManager.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp; resourceMan = temp;
} }
return resourceMan; return resourceMan;
} }
} }
/// <summary> /// <summary>
/// Overrides the current thread's CurrentUICulture property for all /// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class. /// resource lookups using this strongly typed resource class.
/// </summary> /// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture internal static global::System.Globalization.CultureInfo Culture {
{ get {
get
{
return resourceCulture; return resourceCulture;
} }
set set {
{
resourceCulture = value; resourceCulture = value;
} }
} }

View file

@ -8,21 +8,17 @@
// </auto-generated> // </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
namespace AppManager.Properties namespace AppManager.Properties {
{
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.9.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
{
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default public static Settings Default {
{ get {
get
{
return defaultInstance; return defaultInstance;
} }
} }

BIN
AppManager/appmanager.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

View file

@ -1,6 +1,6 @@
MIT License MIT License
Copyright (c) 2022 KawaiiZenbo Copyright (c) 2022-2024 KawaiiZenbo
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View file

@ -3,9 +3,10 @@ GUI for ideviceinstaller for Windows
This program does NOT sideload applications used for jailbreaking devices (Phoenix, h3lix, Unc0ver, Electra) This program does NOT sideload applications used for jailbreaking devices (Phoenix, h3lix, Unc0ver, Electra)
## Requirements ## Requirements
iOS Device (iOS 2 through 15 should work) iOS Device (iOS 2 through 17 should work)
AppSync (if installing unsigned/cracked apps)
Windows 7 or newer Windows 7 or newer
.NET Framework 4.5 or newer .NET Framework 4.5 or newer
iTunes 10 or newer (NOT from Microsoft store) iTunes 10 or newer (NOT from Microsoft store, ensure Apple Devices is not installed)
![image](https://user-images.githubusercontent.com/48113593/149044532-4c16d602-a0b8-4f0e-ab68-2a32cd451e83.png) ![image](https://user-images.githubusercontent.com/48113593/149044532-4c16d602-a0b8-4f0e-ab68-2a32cd451e83.png)