├── .editorconfig ├── .gitattributes ├── .github ├── FUNDING.yml └── ISSUE_TEMPLATE │ ├── bug_report.yaml │ ├── config.yml │ └── feature_request.yaml ├── .gitignore ├── APKInstaller.sln ├── APKInstaller ├── AAPTForNet │ ├── AAPTForNet.csproj │ ├── AAPTool.cs │ ├── ApkExtractor.cs │ ├── ApkParser.cs │ ├── Filters │ │ ├── ABIFilter.cs │ │ ├── ApplicationFilter.cs │ │ ├── BaseFilter.cs │ │ ├── DensityFilter.cs │ │ ├── FeatureFilter.cs │ │ ├── LabelFilter.cs │ │ ├── LaunchableFilter.cs │ │ ├── LocaleFilter.cs │ │ ├── PackageFilter.cs │ │ ├── PermissionFilter.cs │ │ ├── SDKFilter.cs │ │ └── SupportScrFilter.cs │ ├── Models │ │ ├── ApkInfo.cs │ │ ├── Configs.cs │ │ ├── DumpModel.cs │ │ ├── Icon.cs │ │ └── SDKInfo.cs │ ├── ResourceDetector.cs │ └── Tools │ │ └── aapt.exe ├── APKInstaller.Metadata │ ├── APKInstaller.Metadata.def │ ├── APKInstaller.Metadata.vcxproj │ ├── PropertySheet.props │ ├── ServerManager.cpp │ ├── ServerManager.h │ ├── ServerManager.idl │ ├── packages.config │ ├── pch.cpp │ ├── pch.h │ └── readme.txt ├── APKInstaller.Package │ ├── APKInstaller.Package.wapproj │ └── Package.appxmanifest ├── APKInstaller.Projection │ ├── APKInstaller.Projection.def │ ├── APKInstaller.Projection.vcxproj │ ├── APKInstallerProjectionFactory.cpp │ ├── APKInstallerProjectionFactory.h │ ├── APKInstallerProjectionFactory.idl │ ├── PropertySheet.props │ ├── packages.config │ ├── pch.cpp │ ├── pch.h │ └── readme.txt ├── APKInstaller.Server │ ├── APKInstaller.Server.rc │ ├── APKInstaller.Server.vcxproj │ ├── APKInstaller.Server.vcxproj.filters │ ├── Factory.cpp │ ├── Factory.h │ ├── PropertySheet.props │ ├── favicon.ico │ ├── main.cpp │ ├── main.h │ ├── packages.config │ ├── pch.cpp │ ├── pch.h │ ├── readme.txt │ └── resource.h ├── APKInstaller │ ├── APKInstaller.csproj │ ├── App.xaml │ ├── App.xaml.cs │ ├── Assets │ │ ├── 256x256.png │ │ ├── About │ │ │ ├── About.af-ZA.md │ │ │ ├── About.ar-SA.md │ │ │ ├── About.ca-ES.md │ │ │ ├── About.cs-CZ.md │ │ │ ├── About.da-DK.md │ │ │ ├── About.de-DE.md │ │ │ ├── About.el-GR.md │ │ │ ├── About.en-US.md │ │ │ ├── About.es-ES.md │ │ │ ├── About.fa-IR.md │ │ │ ├── About.fi-FI.md │ │ │ ├── About.fr-FR.md │ │ │ ├── About.he-IL.md │ │ │ ├── About.hu-HU.md │ │ │ ├── About.id-ID.md │ │ │ ├── About.it-IT.md │ │ │ ├── About.ja-JP.md │ │ │ ├── About.kaa-UZ.md │ │ │ ├── About.ko-KR.md │ │ │ ├── About.nl-NL.md │ │ │ ├── About.no-NO.md │ │ │ ├── About.pl-PL.md │ │ │ ├── About.pt-BR.md │ │ │ ├── About.pt-PT.md │ │ │ ├── About.ro-RO.md │ │ │ ├── About.ru-RU.md │ │ │ ├── About.sr-SP.md │ │ │ ├── About.sv-SE.md │ │ │ ├── About.tr-TR.md │ │ │ ├── About.ug-CN.md │ │ │ ├── About.uk-UA.md │ │ │ ├── About.vi-VN.md │ │ │ ├── About.zh-CN.md │ │ │ ├── About.zh-Latn.md │ │ │ └── About.zh-TW.md │ │ ├── LargeTile.scale-100.png │ │ ├── LargeTile.scale-125.png │ │ ├── LargeTile.scale-150.png │ │ ├── LargeTile.scale-200.png │ │ ├── LargeTile.scale-400.png │ │ ├── LockScreenLogo.scale-200.png │ │ ├── SmallTile.scale-100.png │ │ ├── SmallTile.scale-125.png │ │ ├── SmallTile.scale-150.png │ │ ├── SmallTile.scale-200.png │ │ ├── SmallTile.scale-400.png │ │ ├── SplashScreen.scale-100.png │ │ ├── SplashScreen.scale-125.png │ │ ├── SplashScreen.scale-150.png │ │ ├── SplashScreen.scale-200.png │ │ ├── SplashScreen.scale-400.png │ │ ├── Square150x150Logo.scale-100.png │ │ ├── Square150x150Logo.scale-125.png │ │ ├── Square150x150Logo.scale-150.png │ │ ├── Square150x150Logo.scale-200.png │ │ ├── Square150x150Logo.scale-400.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-16.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-24.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-256.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-32.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-48.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-16.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-256.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-32.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-48.png │ │ ├── Square44x44Logo.scale-100.png │ │ ├── Square44x44Logo.scale-125.png │ │ ├── Square44x44Logo.scale-150.png │ │ ├── Square44x44Logo.scale-200.png │ │ ├── Square44x44Logo.scale-400.png │ │ ├── Square44x44Logo.targetsize-16.png │ │ ├── Square44x44Logo.targetsize-24.png │ │ ├── Square44x44Logo.targetsize-24_altform-unplated.png │ │ ├── Square44x44Logo.targetsize-256.png │ │ ├── Square44x44Logo.targetsize-32.png │ │ ├── Square44x44Logo.targetsize-48.png │ │ ├── StoreLogo.scale-100.png │ │ ├── StoreLogo.scale-125.png │ │ ├── StoreLogo.scale-150.png │ │ ├── StoreLogo.scale-200.png │ │ ├── StoreLogo.scale-400.png │ │ ├── Wide310x150Logo.scale-100.png │ │ ├── Wide310x150Logo.scale-125.png │ │ ├── Wide310x150Logo.scale-150.png │ │ ├── Wide310x150Logo.scale-200.png │ │ └── Wide310x150Logo.scale-400.png │ ├── Common │ │ ├── AdbCommandClient.cs │ │ ├── Enumerable.cs │ │ ├── ExceptionHandling.cs │ │ ├── MetroLoggerFactory.cs │ │ ├── OOPAAPTool.cs │ │ ├── StringHandler.cs │ │ ├── ThreadSwitcher.cs │ │ └── WeakEvent.cs │ ├── Controls │ │ ├── CapabilitiesInfoControl.xaml │ │ ├── CapabilitiesInfoControl.xaml.cs │ │ ├── Dialogs │ │ │ ├── MarkdownDialog.xaml │ │ │ ├── MarkdownDialog.xaml.cs │ │ │ ├── SplitAPKDialog.xaml │ │ │ └── SplitAPKDialog.xaml.cs │ │ ├── QRCode │ │ │ ├── QRCode.Properties.cs │ │ │ ├── QRCode.cs │ │ │ ├── QRCode.xaml │ │ │ ├── QRCodeTemplateSettings.cs │ │ │ └── XamlQRCode.cs │ │ ├── Setting │ │ │ ├── Setting.Properties.cs │ │ │ ├── Setting.ThemeResources.xaml │ │ │ ├── Setting.cs │ │ │ ├── Setting.xaml │ │ │ └── SettingAutomationPeer.cs │ │ ├── SettingExpander │ │ │ ├── SettingExpander.Properties.cs │ │ │ ├── SettingExpander.ThemeResources.xaml │ │ │ ├── SettingExpander.cs │ │ │ ├── SettingExpander.xaml │ │ │ └── SettingExpanderAutomationPeer.cs │ │ ├── SettingsGroup │ │ │ ├── SettingsGroup.Properties.cs │ │ │ ├── SettingsGroup.cs │ │ │ ├── SettingsGroup.xaml │ │ │ └── SettingsGroupAutomationPeer.cs │ │ ├── TitleBar │ │ │ ├── TitleBar.Properties.cs │ │ │ ├── TitleBar.ThemeResources.xaml │ │ │ ├── TitleBar.cs │ │ │ ├── TitleBar.xaml │ │ │ └── TitleBarTemplateSettings.cs │ │ ├── WebXAML.xaml │ │ └── WebXAML.xaml.cs │ ├── Helpers │ │ ├── ADBHelper.cs │ │ ├── AddressHelper.cs │ │ ├── CachesHelper.cs │ │ ├── Converter │ │ │ ├── DoubleToBoolConverter.cs │ │ │ ├── EmptyObjectToVisibilityConverter.cs │ │ │ ├── FileSizeToFriendlyStringConverter.cs │ │ │ ├── JoinEnumerableConverter.cs │ │ │ ├── StringRegexToBoolConverter.cs │ │ │ ├── StringRegexToObjectConverter.cs │ │ │ └── StringToBoolConverter.cs │ │ ├── DataTransferHelper.cs │ │ ├── DownloadHelper.cs │ │ ├── LanguageHelper.cs │ │ ├── SettingsHelper.cs │ │ ├── ThemeHelper.cs │ │ ├── UIHelper.cs │ │ ├── UpdateHelper.cs │ │ ├── WindowHelper.cs │ │ └── ZeroconfHelper.cs │ ├── Models │ │ ├── GitInfo.cs │ │ ├── MDNSDeviceData.cs │ │ ├── SystemVersionInfo.cs │ │ └── UpdateInfo.cs │ ├── Package.appxmanifest │ ├── Pages │ │ ├── InstallPage.xaml │ │ ├── InstallPage.xaml.cs │ │ ├── MainPage.xaml │ │ ├── MainPage.xaml.cs │ │ ├── SettingsPages │ │ │ ├── PairDevicePage.xaml │ │ │ ├── PairDevicePage.xaml.cs │ │ │ ├── SettingsPage.xaml │ │ │ ├── SettingsPage.xaml.cs │ │ │ ├── TestPage.xaml │ │ │ └── TestPage.xaml.cs │ │ └── ToolsPages │ │ │ ├── ApplicationsPage.xaml │ │ │ ├── ApplicationsPage.xaml.cs │ │ │ ├── InformationPage.xaml │ │ │ ├── InformationPage.xaml.cs │ │ │ ├── ProcessesPage.xaml │ │ │ └── ProcessesPage.xaml.cs │ ├── Properties │ │ ├── AssemblyInfo.cs │ │ └── Default.rd.xml │ ├── Strings │ │ ├── af-ZA │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── ar-SA │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── ca-ES │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── cs-CZ │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── da-DK │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── de-DE │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── el-GR │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── en-US │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── es-ES │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── fa-IR │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── fi-FI │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── fr-FR │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── he-IL │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── hu-HU │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── id-ID │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── it-IT │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── ja-JP │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── kaa-UZ │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── ko-KR │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── nl-NL │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── no-NO │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── pl-PL │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── pt-BR │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── pt-PT │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── ro-RO │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── ru-RU │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── sv-SE │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── tr-TR │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── ug-CN │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── uk-UA │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── vi-VN │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── zh-CN │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ ├── zh-Latn │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ │ └── zh-TW │ │ │ ├── ApplicationsPage.resw │ │ │ ├── CapabilitiesInfoControl.resw │ │ │ ├── InfosPage.resw │ │ │ ├── InstallPage.resw │ │ │ ├── MarkdownDialog.resw │ │ │ ├── PairDevicePage.resw │ │ │ ├── Permissions.resw │ │ │ ├── ProcessesPage.resw │ │ │ ├── Resources.resw │ │ │ ├── SettingsPage.resw │ │ │ ├── TestPage.resw │ │ │ └── TitleBar.resw │ ├── Styles │ │ ├── Button.xaml │ │ ├── ListView.xaml │ │ └── TextBlock.xaml │ ├── Themes │ │ ├── Color.xaml │ │ ├── CustomStyles.xaml │ │ └── Generic.xaml │ ├── ViewModels │ │ ├── InstallViewModel.cs │ │ ├── SettingsPages │ │ │ ├── PairDeviceViewModel.cs │ │ │ └── SettingsViewModel.cs │ │ └── ToolsPages │ │ │ ├── ApplicationsViewModel.cs │ │ │ ├── InformationViewModel.cs │ │ │ └── ProcessesViewModel.cs │ └── favicon.ico └── Zeroconf │ ├── Common │ ├── AsyncLock.cs │ ├── NetworkInterface.cs │ ├── NullDisposable.cs │ └── Stringable.cs │ ├── DNS │ ├── Header.cs │ ├── Question.cs │ ├── RR.cs │ ├── Record.cs │ ├── RecordA.cs │ ├── RecordAAAA.cs │ ├── RecordNSEC.cs │ ├── RecordPTR.cs │ ├── RecordReader.cs │ ├── RecordSRV.cs │ ├── RecordTXT.cs │ ├── RecordUnknown.cs │ ├── Request.cs │ ├── Response.cs │ └── Structs.cs │ ├── Interfaces │ ├── INetworkInterface.cs │ ├── IService.cs │ └── IZeroconfHost.cs │ ├── Models │ ├── AdapterInformation.cs │ ├── DomainService.cs │ ├── Service.cs │ ├── ServiceAnnouncement.cs │ ├── ZeroconfHost.cs │ └── ZeroconfOptions.cs │ ├── ResolverListener.cs │ ├── Zeroconf.csproj │ ├── ZeroconfResolver.Async.cs │ ├── ZeroconfResolver.Listener.cs │ └── ZeroconfResolver.cs ├── About.md ├── Directory.Build.props ├── Images ├── Guides │ ├── Snipaste_2019-10-12_22-46-37.png │ ├── Snipaste_2019-10-12_22-49-11.png │ ├── Snipaste_2019-10-13_12-42-40.png │ ├── Snipaste_2019-10-13_15-51-33.png │ ├── Snipaste_2019-10-13_16-01-09.png │ ├── Snipaste_2019-10-19_15-28-58.png │ ├── Snipaste_2019-10-20_23-36-44.png │ └── Snipaste_2021-03-05_22-26-31.png └── Screenshots │ └── Snipaste_2022-03-08_19-06-34.png ├── LICENSE ├── Privacy.md ├── README.md ├── azure-pipelines.yml ├── global.json └── logo.png /.editorconfig: -------------------------------------------------------------------------------- 1 | [*.cs] 2 | 3 | # CS0618: 类型或成员已过时 4 | dotnet_diagnostic.CS0618.severity = none 5 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: wherewhere 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 13 | custom: ['afdian.com/@wherewhere'] 14 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: true 2 | contact_links: 3 | - name: Question 4 | url: https://github.com/Paving-Base/APK-Installer-UWP/discussions/new?category=q-a 5 | about: Ask a question 6 | - name: Discussion 7 | url: https://github.com/Paving-Base/APK-Installer-UWP/discussions/new?category=general 8 | about: Start a discussion 9 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.yaml: -------------------------------------------------------------------------------- 1 | name: Feature request 2 | description: Suggest an idea for this project 3 | title: "Feature title" 4 | labels: [enhancement] 5 | body: 6 | - type: textarea 7 | validations: 8 | required: true 9 | attributes: 10 | label: Describe your feature request 11 | description: A clear and concise description of what the problem is. 12 | placeholder: I'm always frustrated when [...] 13 | - type: dropdown 14 | validations: 15 | required: true 16 | attributes: 17 | label: How important is this to you? 18 | options: 19 | - "Nice-to-have" 20 | - "Important" 21 | - "Critical" 22 | - type: textarea 23 | attributes: 24 | label: Describe the solution you'd like 25 | description: A clear and concise description of what you want to happen. 26 | - type: textarea 27 | attributes: 28 | label: Describe alternatives you've considered 29 | description: A clear and concise description of any alternative solutions or features you've considered. 30 | - type: textarea 31 | attributes: 32 | label: Additional context 33 | description: Add any other context or screenshots about the feature request here. 34 | -------------------------------------------------------------------------------- /APKInstaller/AAPTForNet/AAPTForNet.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 6.2.14 5 | latest 6 | uap10.0 7 | 10.0.17763.0 8 | 10.0.22621.0 9 | 10 | 11 | 12 | 13 | runtime; build; native; contentfiles; analyzers; buildtransitive 14 | 15 | 16 | 17 | 18 | 19 | PreserveNewest 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /APKInstaller/AAPTForNet/ApkParser.cs: -------------------------------------------------------------------------------- 1 | using AAPTForNet.Filters; 2 | using AAPTForNet.Models; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | 6 | namespace AAPTForNet 7 | { 8 | /// 9 | /// Parse output messages from AAPTool 10 | /// 11 | internal class ApkParser 12 | { 13 | public static ApkInfo Parse(DumpModel model) 14 | { 15 | if (!model.IsSuccess) 16 | { 17 | return new ApkInfo(); 18 | } 19 | 20 | List filters = [ 21 | new PermissionFilter(), 22 | new LabelFilter(), 23 | new FeatureFilter(), 24 | new SDKFilter(), 25 | new PackageFilter(), 26 | new ApplicationFilter(), 27 | new SupportScrFilter(), 28 | new LocaleFilter(), 29 | new DensityFilter(), 30 | new ABIFilter(), 31 | new LaunchableFilter() 32 | ]; 33 | 34 | foreach (string msg in model.Messages) 35 | { 36 | foreach (BaseFilter f in filters) 37 | { 38 | if (f.CanHandle(msg)) 39 | { 40 | f.AddMessage(msg); 41 | break; 42 | } 43 | } 44 | } 45 | 46 | return ApkInfo.Merge(filters.Select(f => f.GetAPK())); 47 | } 48 | } 49 | } 50 | 51 | -------------------------------------------------------------------------------- /APKInstaller/AAPTForNet/Filters/ABIFilter.cs: -------------------------------------------------------------------------------- 1 | using AAPTForNet.Models; 2 | using System; 3 | using System.Linq; 4 | 5 | namespace AAPTForNet.Filters 6 | { 7 | /// 8 | /// Application Binary Interface Filter 9 | /// 10 | /// https://developer.android.com/ndk/guides/abis 11 | internal class ABIFilter : BaseFilter 12 | { 13 | private string[] Segments = []; 14 | 15 | public override bool CanHandle(string msg) => msg.StartsWith("native-code:"); 16 | 17 | public override void AddMessage(string msg) => Segments = msg.Split([' ', '\''], StringSplitOptions.RemoveEmptyEntries); 18 | 19 | public override ApkInfo GetAPK() => new() { SupportedABIs = [.. Segments.Skip(1)] }; // Skip "native-code" 20 | 21 | public override void Clear() => throw new NotImplementedException(); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /APKInstaller/AAPTForNet/Filters/ApplicationFilter.cs: -------------------------------------------------------------------------------- 1 | using AAPTForNet.Models; 2 | 3 | namespace AAPTForNet.Filters 4 | { 5 | internal class ApplicationFilter : BaseFilter 6 | { 7 | private string[] Segments = []; 8 | 9 | public override bool CanHandle(string msg) => msg.StartsWith("application:"); 10 | 11 | public override void AddMessage(string msg = "") => Segments = msg.Split(Separator); 12 | 13 | public override ApkInfo GetAPK() 14 | { 15 | // Try getting icon name from manifest, may be an image 16 | string iconName = GetValue("icon="); 17 | 18 | return new ApkInfo 19 | { 20 | AppName = GetValue("label="), 21 | Icon = iconName == DefaultEmptyValue ? 22 | Icon.Default : new Icon(iconName) 23 | }; 24 | } 25 | 26 | public override void Clear() => Segments = []; 27 | 28 | private string GetValue(string key) 29 | { 30 | string output = string.Empty; 31 | for (int i = 0; i < Segments.Length; i++) 32 | { 33 | if (Segments[i].Contains(key)) 34 | { 35 | output = Segments[++i]; 36 | break; 37 | } 38 | } 39 | return string.IsNullOrEmpty(output) ? DefaultEmptyValue : output; 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /APKInstaller/AAPTForNet/Filters/BaseFilter.cs: -------------------------------------------------------------------------------- 1 | using AAPTForNet.Models; 2 | 3 | namespace AAPTForNet.Filters 4 | { 5 | internal abstract class BaseFilter 6 | { 7 | protected const char Separator = '\''; 8 | protected const string DefaultEmptyValue = "Unknown"; 9 | 10 | public abstract bool CanHandle(string msg); 11 | public abstract void AddMessage(string msg); 12 | public abstract ApkInfo GetAPK(); 13 | 14 | /// 15 | /// Test in loop 16 | /// 17 | public abstract void Clear(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /APKInstaller/AAPTForNet/Filters/DensityFilter.cs: -------------------------------------------------------------------------------- 1 | using AAPTForNet.Models; 2 | using System; 3 | using System.Linq; 4 | 5 | namespace AAPTForNet.Filters 6 | { 7 | internal class DensityFilter : BaseFilter 8 | { 9 | private string[] Segments = []; 10 | 11 | public override bool CanHandle(string msg) => msg.StartsWith("densities:"); 12 | 13 | public override void AddMessage(string msg) => Segments = msg.Split([' ', '\''], StringSplitOptions.RemoveEmptyEntries); 14 | 15 | public override ApkInfo GetAPK() => new() { SupportDensities = [.. Segments.Skip(1)] }; // Skip "densities" 16 | 17 | public override void Clear() => throw new NotImplementedException(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /APKInstaller/AAPTForNet/Filters/FeatureFilter.cs: -------------------------------------------------------------------------------- 1 | using AAPTForNet.Models; 2 | using System.Collections.Generic; 3 | 4 | namespace AAPTForNet.Filters 5 | { 6 | internal class FeatureFilter : BaseFilter 7 | { 8 | private readonly List Features = []; 9 | 10 | public override bool CanHandle(string msg) => msg.StartsWith(" uses-feature"); 11 | 12 | public override void AddMessage(string msg) 13 | { 14 | // uses-feature: name='' 15 | // -> ["uses-feature: name=", "", ""] 16 | Features.Add(msg.Split(Separator)[1]); 17 | } 18 | 19 | public override ApkInfo GetAPK() => new() { Features = Features }; 20 | 21 | public override void Clear() => Features.Clear(); 22 | 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /APKInstaller/AAPTForNet/Filters/LabelFilter.cs: -------------------------------------------------------------------------------- 1 | using AAPTForNet.Models; 2 | using System.Collections.Generic; 3 | 4 | namespace AAPTForNet.Filters 5 | { 6 | internal class LabelFilter : BaseFilter 7 | { 8 | private readonly List Messages = []; 9 | private string[] Segments => string.Join(string.Empty, Messages).Split(Separator); 10 | 11 | public override bool CanHandle(string msg) => msg.StartsWith("application-label-"); 12 | 13 | public override void AddMessage(string msg) 14 | { 15 | if (!Messages.Contains(msg)) 16 | { 17 | Messages.Add(msg); 18 | } 19 | } 20 | 21 | public override ApkInfo GetAPK() => new() { LocaleLabels = GetApplicationLabels() }; 22 | 23 | public override void Clear() => Messages.Clear(); 24 | 25 | private Dictionary GetApplicationLabels() 26 | { 27 | Dictionary labels = []; 28 | for (int i = 0; i < Segments.Length; i++) 29 | { 30 | string Segment = Segments[i]; 31 | if (Segment.StartsWith("application-label-")) 32 | { 33 | string locale = Segment.Substring(18, Segments[i].Length - 19); 34 | labels.Add(locale, Segments[++i]); 35 | } 36 | } 37 | return labels; 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /APKInstaller/AAPTForNet/Filters/LaunchableFilter.cs: -------------------------------------------------------------------------------- 1 | using AAPTForNet.Models; 2 | 3 | namespace AAPTForNet.Filters 4 | { 5 | internal class LaunchableFilter : BaseFilter 6 | { 7 | private string LaunchableActivity = string.Empty; 8 | 9 | public override bool CanHandle(string msg) => msg.StartsWith("launchable-activity:"); 10 | 11 | public override void AddMessage(string msg) => LaunchableActivity = msg.Split(Separator)[1]; 12 | 13 | public override ApkInfo GetAPK() => new() { LaunchableActivity = LaunchableActivity }; 14 | 15 | public override void Clear() => LaunchableActivity = string.Empty; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /APKInstaller/AAPTForNet/Filters/LocaleFilter.cs: -------------------------------------------------------------------------------- 1 | using AAPTForNet.Models; 2 | using System; 3 | using System.Linq; 4 | 5 | namespace AAPTForNet.Filters 6 | { 7 | internal class LocaleFilter : BaseFilter 8 | { 9 | private string[] Segments = []; 10 | 11 | public override bool CanHandle(string msg) => msg.StartsWith("locales:"); 12 | 13 | public override void AddMessage(string msg) => Segments = msg.Split([' ', '\''], StringSplitOptions.RemoveEmptyEntries); 14 | 15 | public override ApkInfo GetAPK() => new() { SupportLocales = Segments.Skip(1).Where(x => !x.Equals("--_--", StringComparison.OrdinalIgnoreCase)).ToList() }; // Skip "locales:" 16 | 17 | public override void Clear() => throw new NotImplementedException(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /APKInstaller/AAPTForNet/Filters/PackageFilter.cs: -------------------------------------------------------------------------------- 1 | using AAPTForNet.Models; 2 | 3 | namespace AAPTForNet.Filters 4 | { 5 | internal class PackageFilter : BaseFilter 6 | { 7 | private string[] Segments = []; 8 | 9 | public override bool CanHandle(string msg) => msg.StartsWith("package:"); 10 | 11 | public override void AddMessage(string msg) => Segments = msg.Split(Separator); 12 | 13 | public override ApkInfo GetAPK() => new() 14 | { 15 | SplitName = GetValueOrDefault("split"), 16 | PackageName = GetValueOrDefault("package"), 17 | VersionName = GetValueOrDefault("versionName"), 18 | VersionCode = GetValueOrDefault("versionCode"), 19 | }; 20 | 21 | public override void Clear() => Segments = []; 22 | 23 | private string GetValueOrDefault(string key) 24 | { 25 | string output = string.Empty; 26 | for (int i = 0; i < Segments.Length; i++) 27 | { 28 | if (Segments[i].Contains(key)) 29 | { 30 | // Find key 31 | output = Segments[++i]; // Get value 32 | break; 33 | } 34 | } 35 | return string.IsNullOrEmpty(output) ? DefaultEmptyValue : output; 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /APKInstaller/AAPTForNet/Filters/PermissionFilter.cs: -------------------------------------------------------------------------------- 1 | using AAPTForNet.Models; 2 | using System.Collections.Generic; 3 | 4 | namespace AAPTForNet.Filters 5 | { 6 | internal class PermissionFilter : BaseFilter 7 | { 8 | private readonly List Permissions = []; 9 | 10 | public override bool CanHandle(string msg) => msg.StartsWith("uses-permission:"); 11 | 12 | public override void AddMessage(string msg) 13 | { 14 | // uses-permission: name='' 15 | // -> ["uses-permission: name=", "", ""] 16 | Permissions.Add(msg.Split(Separator)[1]); 17 | } 18 | 19 | public override ApkInfo GetAPK() => new() { Permissions = Permissions }; 20 | 21 | public override void Clear() => Permissions.Clear(); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /APKInstaller/AAPTForNet/Filters/SDKFilter.cs: -------------------------------------------------------------------------------- 1 | using AAPTForNet.Models; 2 | using System.Collections.Generic; 3 | 4 | namespace AAPTForNet.Filters 5 | { 6 | internal class SDKFilter : BaseFilter 7 | { 8 | private readonly List Messages = []; 9 | private string[] Segments => string.Join(string.Empty, Messages).Split(Separator); 10 | 11 | public override bool CanHandle(string msg) => msg.StartsWith("sdkVersion:") || msg.StartsWith("targetSdkVersion:"); 12 | 13 | public override void AddMessage(string msg) 14 | { 15 | if (!Messages.Contains(msg)) 16 | { 17 | Messages.Add(msg); 18 | } 19 | } 20 | 21 | public override ApkInfo GetAPK() 22 | { 23 | return new ApkInfo 24 | { 25 | MinSDK = SDKInfo.GetInfo(GetMinSDKVersion()), 26 | TargetSDK = SDKInfo.GetInfo(GetTargetSDKVersion()) 27 | }; 28 | } 29 | 30 | public override void Clear() => Messages.Clear(); 31 | 32 | private string GetMinSDKVersion() 33 | { 34 | for (int i = 0; i < Segments.Length; i++) 35 | { 36 | if (Segments[i].StartsWith("sdkVersion:")) 37 | { 38 | return Segments[++i]; 39 | } 40 | } 41 | return string.Empty; 42 | } 43 | 44 | private string GetTargetSDKVersion() 45 | { 46 | for (int i = 0; i < Segments.Length; i++) 47 | { 48 | if (Segments[i].StartsWith("targetSdkVersion:")) 49 | { 50 | return Segments[++i]; 51 | } 52 | } 53 | return string.Empty; 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /APKInstaller/AAPTForNet/Filters/SupportScrFilter.cs: -------------------------------------------------------------------------------- 1 | using AAPTForNet.Models; 2 | 3 | namespace AAPTForNet.Filters 4 | { 5 | internal class SupportScrFilter : BaseFilter 6 | { 7 | public const string SmallScreen = "small"; 8 | public const string NormalScreen = "normal"; 9 | public const string LargeScreen = "large"; 10 | public const string xLargeScreen = "xlarge"; 11 | 12 | private string Message = string.Empty; 13 | 14 | public override bool CanHandle(string msg) => msg.StartsWith("supports-screens:"); 15 | 16 | public override void AddMessage(string msg) => Message = msg; 17 | 18 | public override ApkInfo GetAPK() 19 | { 20 | ApkInfo apk = new(); 21 | 22 | if (Message.Contains(SmallScreen)) 23 | { 24 | apk.SupportScreens.Add(SmallScreen); 25 | } 26 | 27 | if (Message.Contains(NormalScreen)) 28 | { 29 | apk.SupportScreens.Add(NormalScreen); 30 | } 31 | 32 | if (Message.Contains(LargeScreen)) 33 | { 34 | apk.SupportScreens.Add(LargeScreen); 35 | } 36 | 37 | if (Message.Contains(xLargeScreen)) 38 | { 39 | apk.SupportScreens.Add(xLargeScreen); 40 | } 41 | 42 | return apk; 43 | } 44 | 45 | public override void Clear() => Message = string.Empty; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /APKInstaller/AAPTForNet/Models/Configs.cs: -------------------------------------------------------------------------------- 1 | namespace AAPTForNet.Models 2 | { 3 | internal enum Configs 4 | { 5 | anydpi = 0, 6 | mdpi = 1, 7 | @default = 2, 8 | hdpi = 4, 9 | xhdpi = 8, 10 | xxhdpi = 16, 11 | xxxhdpi = 32 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /APKInstaller/AAPTForNet/Models/DumpModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace AAPTForNet.Models 4 | { 5 | public class DumpModel(string path, bool success, List msg) 6 | { 7 | public string FilePath { get; } = path; 8 | public bool IsSuccess { get; } = success; 9 | public List Messages { get; } = msg; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /APKInstaller/AAPTForNet/ResourceDetector.cs: -------------------------------------------------------------------------------- 1 | using System.Text.RegularExpressions; 2 | 3 | namespace AAPTForNet 4 | { 5 | internal class ResourceDetector 6 | { 7 | private static readonly string config = 8 | string.Join("|", System.Enum.GetNames(typeof(Models.Configs))); 9 | 10 | /// 11 | /// 12 | /// resource id 13 | public static bool IsResource(string input, string id = "") 14 | { 15 | // id is a word (\w) 16 | id = string.Empty.Equals(id) ? @"\w*" : id; 17 | return Regex.IsMatch(input, $"^\\s*resource\\s{id}"); 18 | } 19 | /// 20 | /// Is resource value 21 | /// 22 | public static bool IsResourceValue(string input) 23 | { 24 | // Start with space, then (string?) 25 | return Regex.IsMatch(input, @"^\s*\((string\d*)\)*"); 26 | } 27 | /// 28 | /// Determines resource is reference (to another) 29 | /// 30 | public static bool IsReference(string input) 31 | { 32 | // Start with space, then (reference) 33 | return Regex.IsMatch(input, @"^\s*\((reference)\)*"); 34 | } 35 | /// 36 | /// Determines resource is a bitmap resource 37 | /// 38 | public static bool IsBitmapElement(string input) 39 | { 40 | return Regex.IsMatch(input, @"^\s*E:\sbitmap"); 41 | } 42 | 43 | public static bool IsConfig(string input) 44 | { 45 | // config (default) | (hdpi|mdpi|...)[-vxx] 46 | return Regex.IsMatch(input, $"^\\s*config\\s\\(?({config})(-v\\d*)?\\)?:"); 47 | } 48 | 49 | public static bool IsEntryType(string input) 50 | { 51 | // type x configCount=xx entryCount=xxx 52 | return Regex.IsMatch(input, $"^\\s*type\\s\\d*\\sconfigCount=\\d*\\sentryCount=\\d*$"); 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /APKInstaller/AAPTForNet/Tools/aapt.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/AAPTForNet/Tools/aapt.exe -------------------------------------------------------------------------------- /APKInstaller/APKInstaller.Metadata/APKInstaller.Metadata.def: -------------------------------------------------------------------------------- 1 | EXPORTS 2 | DllCanUnloadNow = WINRT_CanUnloadNow PRIVATE 3 | DllGetActivationFactory = WINRT_GetActivationFactory PRIVATE 4 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller.Metadata/PropertySheet.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller.Metadata/ServerManager.idl: -------------------------------------------------------------------------------- 1 | namespace APKInstaller.Metadata 2 | { 3 | [contractversion(1)] 4 | apicontract APKInstallerContract{}; 5 | 6 | delegate Boolean DumpDelegate(String line, Int32 index); 7 | 8 | [default_interface] 9 | [contract(APKInstallerContract, 1)] 10 | runtimeclass ServerManager 11 | { 12 | ServerManager(); 13 | 14 | Boolean IsServerRunning { get; }; 15 | 16 | event Windows.Foundation.EventHandler ServerManagerDestructed; 17 | 18 | UInt32 RunProcess(String filename, String command, IVector errorOutput, IVector standardOutput); 19 | Windows.Foundation.IAsyncOperation RunProcessAsync(String filename, String command, IVector errorOutput, IVector standardOutput); 20 | Windows.Foundation.IAsyncOperation DumpAsync(String filename, String command, DumpDelegate callback, IVector output, Int32 encode); 21 | Boolean EnableLoopback(); 22 | Boolean CreateFileSymbolic(String symlink, String target, String example); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller.Metadata/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller.Metadata/pch.cpp: -------------------------------------------------------------------------------- 1 | #include "pch.h" 2 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller.Metadata/pch.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | #include 5 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller.Metadata/readme.txt: -------------------------------------------------------------------------------- 1 | ======================================================================== 2 | C++/WinRT APKInstaller.Metadata Project Overview 3 | ======================================================================== 4 | 5 | This project demonstrates how to get started authoring Windows Runtime 6 | classes directly with standard C++, using the C++/WinRT SDK component 7 | to generate implementation headers from interface (IDL) files. The 8 | generated Windows Runtime component binary and WinMD files should then 9 | be bundled with the Universal Windows Platform (UWP) app consuming them. 10 | 11 | Steps: 12 | 1. Create an interface (IDL) file to define your Windows Runtime class, 13 | its default interface, and any other interfaces it implements. 14 | 2. Build the project once to generate module.g.cpp, module.h.cpp, and 15 | implementation templates under the "Generated Files" folder, as 16 | well as skeleton class definitions under "Generated Files\sources". 17 | 3. Use the skeleton class definitions for reference to implement your 18 | Windows Runtime classes. 19 | 20 | ======================================================================== 21 | Learn more about C++/WinRT here: 22 | http://aka.ms/cppwinrt/ 23 | ======================================================================== 24 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller.Projection/APKInstaller.Projection.def: -------------------------------------------------------------------------------- 1 | EXPORTS 2 | DllCanUnloadNow = WINRT_CanUnloadNow PRIVATE 3 | DllGetActivationFactory = WINRT_GetActivationFactory PRIVATE 4 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller.Projection/APKInstallerProjectionFactory.cpp: -------------------------------------------------------------------------------- 1 | #include "pch.h" 2 | #include "APKInstallerProjectionFactory.h" 3 | #include "APKInstallerProjectionFactory.g.cpp" 4 | 5 | namespace winrt::APKInstaller::Projection::implementation 6 | { 7 | static const CLSID CLSID_ServerManager = { 0x4036b695, 0xca92, 0x45ea, { 0x89, 0x65, 0xce, 0x19, 0x47, 0xa6, 0xb2, 0x69 } }; // 4036B695-CA92-45EA-8965-CE1947A6B269 8 | 9 | ServerManager APKInstallerProjectionFactory::ServerManager() 10 | { 11 | return try_create_instance<::ServerManager>(CLSID_ServerManager, CLSCTX_ALL); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller.Projection/APKInstallerProjectionFactory.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "APKInstallerProjectionFactory.g.h" 4 | #include "winrt/APKInstaller.Metadata.h" 5 | 6 | using namespace winrt::APKInstaller::Metadata; 7 | 8 | namespace winrt::APKInstaller::Projection::implementation 9 | { 10 | struct APKInstallerProjectionFactory : APKInstallerProjectionFactoryT 11 | { 12 | static ServerManager ServerManager(); 13 | }; 14 | } 15 | 16 | namespace winrt::APKInstaller::Projection::factory_implementation 17 | { 18 | struct APKInstallerProjectionFactory : APKInstallerProjectionFactoryT 19 | { 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller.Projection/APKInstallerProjectionFactory.idl: -------------------------------------------------------------------------------- 1 | namespace APKInstaller.Projection 2 | { 3 | [default_interface] 4 | [contract(APKInstaller.Metadata.APKInstallerContract, 1)] 5 | static runtimeclass APKInstallerProjectionFactory 6 | { 7 | static APKInstaller.Metadata.ServerManager ServerManager { get; }; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller.Projection/PropertySheet.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller.Projection/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller.Projection/pch.cpp: -------------------------------------------------------------------------------- 1 | #include "pch.h" 2 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller.Projection/pch.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | #include 5 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller.Projection/readme.txt: -------------------------------------------------------------------------------- 1 | ======================================================================== 2 | C++/WinRT APKInstaller.Projection Project Overview 3 | ======================================================================== 4 | 5 | This project demonstrates how to get started authoring Windows Runtime 6 | classes directly with standard C++, using the C++/WinRT SDK component 7 | to generate implementation headers from interface (IDL) files. The 8 | generated Windows Runtime component binary and WinMD files should then 9 | be bundled with the Universal Windows Platform (UWP) app consuming them. 10 | 11 | Steps: 12 | 1. Create an interface (IDL) file to define your Windows Runtime class, 13 | its default interface, and any other interfaces it implements. 14 | 2. Build the project once to generate module.g.cpp, module.h.cpp, and 15 | implementation templates under the "Generated Files" folder, as 16 | well as skeleton class definitions under "Generated Files\sources". 17 | 3. Use the skeleton class definitions for reference to implement your 18 | Windows Runtime classes. 19 | 20 | ======================================================================== 21 | Learn more about C++/WinRT here: 22 | http://aka.ms/cppwinrt/ 23 | ======================================================================== 24 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller.Server/APKInstaller.Server.rc: -------------------------------------------------------------------------------- 1 | // Microsoft Visual C++ generated resource script. 2 | // 3 | #include "resource.h" 4 | ///////////////////////////////////////////////////////////////////////////// 5 | // 中文(简体,中国) resources 6 | 7 | #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS) 8 | LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED 9 | #pragma code_page(936) 10 | 11 | #ifdef APSTUDIO_INVOKED 12 | ///////////////////////////////////////////////////////////////////////////// 13 | // 14 | // TEXTINCLUDE 15 | // 16 | 17 | 1 TEXTINCLUDE 18 | BEGIN 19 | "resource.h\0" 20 | END 21 | 22 | 2 TEXTINCLUDE 23 | BEGIN 24 | "\0" 25 | END 26 | 27 | 3 TEXTINCLUDE 28 | BEGIN 29 | "\r\n" 30 | "\0" 31 | END 32 | 33 | #endif // APSTUDIO_INVOKED 34 | 35 | 36 | ///////////////////////////////////////////////////////////////////////////// 37 | // 38 | // Icon 39 | // 40 | 41 | // Icon with lowest ID value placed first to ensure application icon 42 | // remains consistent on all systems. 43 | IDI_ICON1 ICON "favicon.ico" 44 | 45 | #endif // 中文(简体,中国) resources 46 | ///////////////////////////////////////////////////////////////////////////// 47 | 48 | 49 | 50 | #ifndef APSTUDIO_INVOKED 51 | ///////////////////////////////////////////////////////////////////////////// 52 | // 53 | // Generated from the TEXTINCLUDE 3 resource. 54 | // 55 | 56 | 57 | ///////////////////////////////////////////////////////////////////////////// 58 | #endif // not APSTUDIO_INVOKED 59 | 60 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller.Server/APKInstaller.Server.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Source Files 6 | 7 | 8 | Source Files 9 | 10 | 11 | Source Files 12 | 13 | 14 | 15 | 16 | Header Files 17 | 18 | 19 | Header Files 20 | 21 | 22 | Header Files 23 | 24 | 25 | Header Files 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | {FC1B4A79-1E2C-40C8-B85D-304FDAE92C78} 38 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 39 | 40 | 41 | {97A8B20E-B406-4F48-993E-C106069293C0} 42 | h;hh;hpp;hxx;hm;inl;inc;xsd 43 | 44 | 45 | {8219BA3B-BEEF-4AA9-8149-88D3110D87AB} 46 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 47 | 48 | 49 | 50 | 51 | Resource Files 52 | 53 | 54 | 55 | 56 | Resource Files 57 | 58 | 59 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller.Server/Factory.cpp: -------------------------------------------------------------------------------- 1 | #include "pch.h" 2 | #include "Factory.h" 3 | #include "main.h" 4 | 5 | using namespace APKInstaller::Metadata; 6 | using namespace std::chrono; 7 | 8 | const CLSID& Factory::GetCLSID() 9 | { 10 | static const CLSID CLSID_ServerManager = { 0x4036b695, 0xca92, 0x45ea, { 0x89, 0x65, 0xce, 0x19, 0x47, 0xa6, 0xb2, 0x69 } }; // 4036B695-CA92-45EA-8965-CE1947A6B269 11 | return CLSID_ServerManager; 12 | } 13 | 14 | Windows::Foundation::IAsyncAction Factory::ReleaseServerAsync() 15 | { 16 | _conReleaseCount++; 17 | co_await resume_after(seconds(10)); 18 | _conReleaseCount--; 19 | if (_conReleaseCount) { co_return; } 20 | _releaseNotifier(); 21 | } 22 | 23 | Windows::Foundation::IInspectable Factory::ActivateInstance() 24 | { 25 | ServerManager result = ServerManager::ServerManager(); 26 | if (result == nullptr) { return nullptr; } 27 | CoAddRefServerProcess(); 28 | result.ServerManagerDestructed( 29 | [](Windows::Foundation::IInspectable, bool) 30 | { 31 | if (CoReleaseServerProcess() == 0) 32 | { 33 | ReleaseServerAsync(); 34 | } 35 | }); 36 | return result.as(); 37 | } 38 | 39 | HRESULT STDMETHODCALLTYPE Factory::CreateInstance(::IUnknown* pUnkOuter, REFIID riid, void** ppvObject) try 40 | { 41 | if (!ppvObject) { return E_POINTER; } 42 | *ppvObject = nullptr; 43 | if (pUnkOuter != nullptr) { return CLASS_E_NOAGGREGATION; } 44 | ServerManager result = ServerManager::ServerManager(); 45 | if (!result) { return S_FALSE; } 46 | CoAddRefServerProcess(); 47 | result.ServerManagerDestructed( 48 | [](Windows::Foundation::IInspectable, bool) 49 | { 50 | if (CoReleaseServerProcess() == 0) 51 | { 52 | ReleaseServerAsync(); 53 | } 54 | }); 55 | return result.as(riid, ppvObject); 56 | } 57 | catch (...) 58 | { 59 | return to_hresult(); 60 | } 61 | 62 | HRESULT STDMETHODCALLTYPE Factory::LockServer(BOOL fLock) try 63 | { 64 | if (fLock) 65 | { 66 | CoAddRefServerProcess(); 67 | } 68 | else if (CoReleaseServerProcess() == 0) 69 | { 70 | ReleaseServerAsync(); 71 | } 72 | return S_OK; 73 | } 74 | catch (...) 75 | { 76 | return to_hresult(); 77 | } 78 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller.Server/Factory.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | using namespace winrt; 4 | 5 | static unsigned int _conReleaseCount = 0; 6 | 7 | struct Factory : winrt::implements 8 | { 9 | static const CLSID& GetCLSID(); 10 | static Windows::Foundation::IAsyncAction ReleaseServerAsync(); 11 | 12 | // IActivationFactory 13 | Windows::Foundation::IInspectable ActivateInstance(); 14 | 15 | // IClassFactory 16 | HRESULT STDMETHODCALLTYPE CreateInstance(::IUnknown* pUnkOuter, REFIID riid, void** ppvObject); 17 | HRESULT STDMETHODCALLTYPE LockServer(BOOL fLock); 18 | }; 19 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller.Server/PropertySheet.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller.Server/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller.Server/favicon.ico -------------------------------------------------------------------------------- /APKInstaller/APKInstaller.Server/main.cpp: -------------------------------------------------------------------------------- 1 | #include "pch.h" 2 | #include "main.h" 3 | #include "Factory.h" 4 | 5 | #pragma comment(linker, "/subsystem:windows /entry:mainCRTStartup") 6 | 7 | using namespace winrt; 8 | using namespace std::chrono; 9 | 10 | int main() 11 | { 12 | init_apartment(); 13 | 14 | // Enable fast rundown of objects so that the server exits faster when clients go away. 15 | { 16 | com_ptr globalOptions; 17 | check_hresult(CoCreateInstance(CLSID_GlobalOptions, nullptr, CLSCTX_INPROC, IID_PPV_ARGS(&globalOptions))); 18 | check_hresult(globalOptions->Set(COMGLB_RO_SETTINGS, COMGLB_FAST_RUNDOWN)); 19 | } 20 | 21 | _comServerExitEvent = CreateEvent(NULL, FALSE, FALSE, NULL); 22 | DWORD token = RegisterServerManager(); 23 | 24 | CheckComRefAsync(); 25 | WaitForSingleObject(_comServerExitEvent, INFINITE); 26 | 27 | check_hresult(CoRevokeClassObject(token)); 28 | uninit_apartment(); 29 | } 30 | 31 | IAsyncAction CheckComRefAsync() 32 | { 33 | co_await resume_after(seconds(10)); 34 | CoAddRefServerProcess(); 35 | if (CoReleaseServerProcess() == 0) 36 | { 37 | _releaseNotifier(); 38 | } 39 | } 40 | 41 | DWORD RegisterServerManager() 42 | { 43 | DWORD registration = 0; 44 | 45 | check_hresult(CoRegisterClassObject( 46 | Factory::GetCLSID(), 47 | make().as<::IUnknown>().get(), 48 | CLSCTX_LOCAL_SERVER, 49 | REGCLS_MULTIPLEUSE, 50 | ®istration)); 51 | 52 | return registration; 53 | } 54 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller.Server/main.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | using namespace winrt::Windows::Foundation; 4 | 5 | // Holds the main open until COM tells us there are no more server connections 6 | inline HANDLE _comServerExitEvent; 7 | 8 | // Routine Description: 9 | // - Called back when COM says there is nothing left for our server to do and we can tear down. 10 | inline void _releaseNotifier() noexcept 11 | { 12 | SetEvent(_comServerExitEvent); 13 | } 14 | 15 | IAsyncAction CheckComRefAsync(); 16 | DWORD RegisterServerManager(); -------------------------------------------------------------------------------- /APKInstaller/APKInstaller.Server/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller.Server/pch.cpp: -------------------------------------------------------------------------------- 1 | #include "pch.h" 2 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller.Server/pch.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | #include 5 | #include 6 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller.Server/readme.txt: -------------------------------------------------------------------------------- 1 | ======================================================================== 2 | C++/WinRT APKInstaller.Server Project Overview 3 | ======================================================================== 4 | 5 | This project demonstrates how to get started consuming Windows Runtime 6 | classes directly from standard C++, using platform projection headers 7 | generated from Windows SDK metadata files. 8 | 9 | Steps to generate and consume SDK platform projection: 10 | 1. Build project initially to generate platform projection headers into 11 | your Generated Files folder. 12 | 2. Include a projection namespace header in your pch.h, such as 13 | . 14 | 3. Consume winrt namespace and any Windows Runtime namespaces, such as 15 | winrt::Windows::Foundation, from source code. 16 | 4. Initialize apartment via init_apartment() and consume winrt classes. 17 | 18 | Steps to generate and consume a projection from third party metadata: 19 | 1. Add a WinMD reference by right-clicking the References project node 20 | and selecting "Add Reference...". In the Add References dialog, 21 | browse to the component WinMD you want to consume and add it. 22 | 2. Build the project once to generate projection headers for the 23 | referenced WinMD file under the "Generated Files" subfolder. 24 | 3. As above, include projection headers in pch or source code 25 | to consume projected Windows Runtime classes. 26 | 27 | ======================================================================== 28 | Learn more about C++/WinRT here: 29 | http://aka.ms/cppwinrt/ 30 | ======================================================================== 31 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller.Server/resource.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller.Server/resource.h -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/App.xaml: -------------------------------------------------------------------------------- 1 |  7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | Segoe Fluent Icons,Segoe MDL2 Assets,Segoe UI Symbol 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/256x256.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.af-ZA.md: -------------------------------------------------------------------------------- 1 | #### Welkom by die APK-installeerder! 2 | 3 | ##### Verklaring 4 | 1. Please comply with the [APK Installer End User License Agreement and Privacy Policy](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md). 5 | 2. This program is open source software, so please make sure the program is from [this Github repository](https://github.com/Paving-Base/APK-Installer-UWP) or [this application](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF) to ensure your data security. 6 | 3. If the source of the program is not abnormal, all your data will be used only for the running of the program or stored locally during the running, and the developer will not steal any of your data. Gee tog asseblief aandag aan die veiligheid van die omgewing. 7 | 4. The translation of this application comes from the [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") community, and all texts does not represent the author's views. 8 | 9 | ##### Vertaal 10 | Dankie aan [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin")-vertalers vir hul ondersteuning. If there are any problems with the translation, please feel free to correct us. And please translate seriously. Everything you write will be read all over the world. 11 | 12 | ##### Bydraers 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### Aanhalings en verwysings 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.ar-SA.md: -------------------------------------------------------------------------------- 1 | #### مرحبا بكم في تثبيت APK! 2 | 3 | ##### تصريح 4 | 1. الرجاء اتباع [اتفاق ترخيص المستخدم النهائي وسياسة الخصوصية لـ APK](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md). 5 | 2. This program is open source software, so please make sure the program is from [this Github repository](https://github.com/Paving-Base/APK-Installer-UWP) or [this application](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF) to ensure your data security. 6 | 3. If the source of the program is not abnormal, all your data will be used only for the running of the program or stored locally during the running, and the developer will not steal any of your data. ومع ذلك، يرجى الاهتمام في الناحية الأمنية إلى بيئة البرنامَج. 7 | 4. The translation of this application comes from the [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") community, and all texts does not represent the author's views. 8 | 9 | ##### ترجم 10 | شكرا لمترجمي [كراودين](https://crowdin.com/project/APKInstaller "Crowdin") على دعمهم. If there are any problems with the translation, please feel free to correct us. And please translate seriously. Everything you write will be read all over the world. 11 | 12 | ##### المساهمون 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### الإشارات والمراجع 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.ca-ES.md: -------------------------------------------------------------------------------- 1 | #### Welcome to the APK Installer! 2 | 3 | ##### Declaration 4 | 1. Please comply with the [APK Installer End User License Agreement and Privacy Policy](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md). 5 | 2. This program is open source software, so please make sure the program is from [this Github repository](https://github.com/Paving-Base/APK-Installer-UWP) or [this application](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF) to ensure your data security. 6 | 3. If the source of the program is not abnormal, all your data will be used only for the running of the program or stored locally during the running, and the developer will not steal any of your data. Still, please pay attention to the security of the environment. 7 | 4. The translation of this application comes from the [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") community, and all texts does not represent the author's views. 8 | 9 | ##### Traduir 10 | Thanks to [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") translators for their support. If there are any problems with the translation, please feel free to correct us. And please translate seriously. Everything you write will be read all over the world. 11 | 12 | ##### Contributors 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### Citations and References 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.cs-CZ.md: -------------------------------------------------------------------------------- 1 | #### Welcome to the APK Installer! 2 | 3 | ##### Declaration 4 | 1. Please comply with the [APK Installer End User License Agreement and Privacy Policy](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md). 5 | 2. This program is open source software, so please make sure the program is from [this Github repository](https://github.com/Paving-Base/APK-Installer-UWP) or [this application](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF) to ensure your data security. 6 | 3. If the source of the program is not abnormal, all your data will be used only for the running of the program or stored locally during the running, and the developer will not steal any of your data. Still, please pay attention to the security of the environment. 7 | 4. The translation of this application comes from the [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") community, and all texts does not represent the author's views. 8 | 9 | ##### Translate 10 | Thanks to [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") translators for their support. If there are any problems with the translation, please feel free to correct us. And please translate seriously. Everything you write will be read all over the world. 11 | 12 | ##### Contributors 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### Citations and References 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.da-DK.md: -------------------------------------------------------------------------------- 1 | #### Velkommen til APK Installeret! 2 | 3 | ##### Erklæring 4 | 1. Please comply with the [APK Installer End User License Agreement and Privacy Policy](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md). 5 | 2. This program is open source software, so please make sure the program is from [this Github repository](https://github.com/Paving-Base/APK-Installer-UWP) or [this application](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF) to ensure your data security. 6 | 3. If the source of the program is not abnormal, all your data will be used only for the running of the program or stored locally during the running, and the developer will not steal any of your data. Still, please pay attention to the security of the environment. 7 | 4. The translation of this application comes from the [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") community, and all texts does not represent the author's views. 8 | 9 | ##### Translate 10 | Tak til [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") oversættere for deres support. If there are any problems with the translation, please feel free to correct us. And please translate seriously. Everything you write will be read all over the world. 11 | 12 | ##### Bidragsydere 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### Citater og referencer 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.de-DE.md: -------------------------------------------------------------------------------- 1 | #### Willkommen zum Chamilo-Installer 2 | 3 | ##### Erklärungen 4 | 1. Bitte halten Sie sich an die [APK Installer Endbenutzer-Lizenzvereinbarung und Datenschutzerklärung](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md). 5 | 2. Dieses Programm ist eine Open-Source-Software, stelle also sicher, dass das Programm von [diesem Github Repository](https://github.com/Paving-Base/APK-Installer-UWP) oder [dieser Anwendung](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF) stammt, um deine Daten sicher zu halten. 6 | 3. Wenn die Quelle des Programms nicht abnorm ist, werden Ihre Daten ausschließlich für die Ausführung des Programms verwendet oder lokal während der Ausführung gespeichert, und der Entwickler wird keine Ihrer Daten stehlen. Achten Sie aber trotzdem auf die Sicherheit der Nutzungsumgebung. 7 | 4. Die Übersetzung dieser Anwendung stammt von der [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") Community und alle Texte repräsentieren nicht die Ansichten des Autors. 8 | 9 | ##### Übersetzen 10 | Dank an die [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin")-Übersetzer für ihre Unterstützung. Sollte es jegliche Probleme mit der Übersetzung geben, können Sie diese gerne korrigieren. Bitte übersetzen Sie ernsthaft. Alles, was Sie schreiben, wird auf der ganzen Welt lesbar sein. 11 | 12 | ##### Mitwirkende 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### Zitate und Referenzen 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.el-GR.md: -------------------------------------------------------------------------------- 1 | #### Welcome to the APK Installer! 2 | 3 | ##### Declaration 4 | 1. Please comply with the [APK Installer End User License Agreement and Privacy Policy](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md). 5 | 2. This program is open source software, so please make sure the program is from [this Github repository](https://github.com/Paving-Base/APK-Installer-UWP) or [this application](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF) to ensure your data security. 6 | 3. If the source of the program is not abnormal, all your data will be used only for the running of the program or stored locally during the running, and the developer will not steal any of your data. Still, please pay attention to the security of the environment. 7 | 4. The translation of this application comes from the [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") community, and all texts does not represent the author's views. 8 | 9 | ##### Translate 10 | Thanks to [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") translators for their support. If there are any problems with the translation, please feel free to correct us. And please translate seriously. Everything you write will be read all over the world. 11 | 12 | ##### Contributors 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### Citations and References 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.en-US.md: -------------------------------------------------------------------------------- 1 | #### Welcome to the APK Installer! 2 | 3 | ##### Declaration 4 | 1. Please comply with the [APK Installer End User License Agreement and Privacy Policy](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md). 5 | 2. This program is open source software, so please make sure the program is from [this Github repository](https://github.com/Paving-Base/APK-Installer-UWP) or [this application](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF) to ensure your data security. 6 | 3. If the source of the program is not abnormal, all your data will be used only for the running of the program or stored locally during the running, and the developer will not steal any of your data. Still, please pay attention to the security of the environment. 7 | 4. The translation of this application comes from the [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") community, and all texts does not represent the author's views. 8 | 9 | ##### Translate 10 | Thanks to [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") translators for their support. If there are any problems with the translation, please feel free to correct us. And please translate seriously. Everything you write will be read all over the world. 11 | 12 | ##### Contributors 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### Citations and References 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.es-ES.md: -------------------------------------------------------------------------------- 1 | #### Bienvenido al instalador de Chamilo 2 | 3 | ##### Declaración 4 | 1. Por favor, cumple con el [Acuerdo de licencia de usuario final y la Política de privacidad de APK Installer](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md). 5 | 2. Este programa es un software de código abierto, así que por favor, asegúrate de que este programa es de [este repositorio de GitHub](https://github.com/Paving-Base/APK-Installer-UWP) o [esta aplicación](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF) para asegurar tus datos de seguridad. 6 | 3. Si el origen del programa no es anormal, todos sus datos se usarán únicamente para la ejecución del programa o almacenarse localmente durante la ejecución. Aún así, por favor, presta atención a la seguridad del medio ambiente. 7 | 4. La traducción de esta aplicación proviene de la comunidad [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") y todos los textos no representan las vistas del autor. 8 | 9 | ##### Traducir 10 | Gracias a los traductores de [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") por su apoyo. Si hay cualquier problema con la traducción, por favor, siéntete libre de corregirnos. Y por favor, traduce seriamente. Cualquier cosa que escribas será leído en todo el mundo. 11 | 12 | ##### Contribuidores 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### Citaciones y referencias 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.fa-IR.md: -------------------------------------------------------------------------------- 1 | #### به نصب‌کننده‌ی APK خوش آمدید! 2 | 3 | ##### اعلامیه 4 | 1. لطفا با [توافق‌نامه کاربر نهایی و خط مشی نصب‌کننده‌ی APK](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md) موافقت کنید. 5 | 2. این برنامه یک نرم‌افزار منبع‌باز است؛ پس لطفاً به جهت اطمینان از حفظ امنیت داده‌های خود، مطمئن شوید که برنامه از [این مخزن گیت‌هاب](https://github.com/Paving-Base/APK-Installer-UWP) یا [ فروشگاه مایکروسافت](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF) دانلود شده است. 6 | 3. اگر منبع برنامه رفتار غیرعادی نداشته نباشد، تمامی داده‌های شما تنها برای اجرای برنامه یا ذخیره به صورت محلی، و تنها در هنگام اجرای برنامه، استفاده میشود و توسعه‌دهندگان هیچکدام از داده‌های شما را به سرقت نمی‌برند. با این وجود، لطفاً به امنیت محیط اجرا توجه فرمایید. 7 | 4. ترجمه این برنامه توسط انجمن [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") انجام شده است، و تمامی متون الزاماً دیدگاه مولفین را بیان نمیکنند. {هر چندکه من سعی میکنم از خودم چیزی ننویسم و صرفا ترجمه‌ای وفادار به متن اصلی ارائه بدم (:} 8 | 9 | ##### ترجمه 10 | ممنون از حمایت مترجمین [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin"). در صورت وجود اشکال در ترجمه، میتوانید این ترجمه را اصلاح کنید. و لطفا ترجمه‌ای موقرانه انجام دهید. هرچیزی که بنویسید در سر تا سر دنیا خوانده خواهد شد. 11 | 12 | ##### مشارکت‌کنندگان 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### نقل‌قول‌ها و منابع 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.fi-FI.md: -------------------------------------------------------------------------------- 1 | #### Welcome to the APK Installer! 2 | 3 | ##### Declaration 4 | 1. Please comply with the [APK Installer End User License Agreement and Privacy Policy](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md). 5 | 2. This program is open source software, so please make sure the program is from [this Github repository](https://github.com/Paving-Base/APK-Installer-UWP) or [this application](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF) to ensure your data security. 6 | 3. If the source of the program is not abnormal, all your data will be used only for the running of the program or stored locally during the running, and the developer will not steal any of your data. Still, please pay attention to the security of the environment. 7 | 4. The translation of this application comes from the [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") community, and all texts does not represent the author's views. 8 | 9 | ##### Translate 10 | Thanks to [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") translators for their support. If there are any problems with the translation, please feel free to correct us. And please translate seriously. Everything you write will be read all over the world. 11 | 12 | ##### Contributors 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### Citations and References 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.fr-FR.md: -------------------------------------------------------------------------------- 1 | #### Bienvenue dans l'installateur d'APK! 2 | 3 | ##### Déclaration 4 | 1. Veuillez vous conformer au [Contrat de licence et à la politique de confidentialité de l'Utilisateur final APK](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md). 5 | 2. Ce programme est un logiciel open source, donc assurez-vous que le programme provient de [ce dépôt Github](https://github.com/Paving-Base/APK-Installer-UWP) ou [cette application](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF) pour assurer la sécurité de vos données. 6 | 3. Si la source du programme n'est pas anormale, toutes vos données ne seront utilisées que pour l'exécution du programme ou stockées localement pendant l'exécution, et le développeur ne volera aucune de vos données. Néanmoins, veuillez prêter attention à la sécurité de l'environnement. 7 | 4. La traduction de cette application provient de la communauté [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") et tous les textes ne représentent pas les opinions de l'auteur. 8 | 9 | ##### Traduire 10 | Thanks to [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") translators for their support. En cas de problème avec la traduction, n'hésitez pas à nous corriger. And please translate seriously. Tout ce que vous écrivez sera lu partout dans le monde. 11 | 12 | ##### Contributors 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### Citations and References 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.he-IL.md: -------------------------------------------------------------------------------- 1 | #### ברוכים הבאים למתקין ה- APK! 2 | 3 | ##### הצהרת 4 | 1. Please comply with the [APK Installer End User License Agreement and Privacy Policy](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md). 5 | 2. This program is open source software, so please make sure the program is from [this Github repository](https://github.com/Paving-Base/APK-Installer-UWP) or [this application](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF) to ensure your data security. 6 | 3. If the source of the program is not abnormal, all your data will be used only for the running of the program or stored locally during the running, and the developer will not steal any of your data. ובכל זאת, אנא שימו לב לביטחון הסביבה. 7 | 4. The translation of this application comes from the [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") community, and all texts does not represent the author's views. 8 | 9 | ##### תרגם 10 | תודה למתרגמים [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") על תמיכתם. If there are any problems with the translation, please feel free to correct us. And please translate seriously. Everything you write will be read all over the world. 11 | 12 | ##### תורמים 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### ציטוטים והפניות 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.hu-HU.md: -------------------------------------------------------------------------------- 1 | #### Üdvözöljük az APK telepítőben! 2 | 3 | ##### Nyilatkozat 4 | 1. Kérjük, tartsa be az [APK telepítő végfelhasználói licencszerződést és adatvédelmi szabályzatot](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md). 5 | 2. Ez a program nyílt forráskódú szoftver, ezért az adatbiztonság érdekében győződjön meg róla, hogy a program ebből [a Github-tárból](https://github.com/Paving-Base/APK-Installer-UWP) vagy [ebből az alkalmazásból](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF) származik. 6 | 3. Ha a program forrása nem abnormális, akkor az összes adatodat csak a program futtatásához használják, vagy a futás során helyben tárolják, és a fejlesztő nem lopja el az adataidat. Ennek ellenére kérjük, ügyeljen a környezet biztonságára. 7 | 4. Az alkalmazás fordítása a [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") közösségtől származik, és minden szöveg nem a szerző nézeteit képviseli. 8 | 9 | ##### Fordítás 10 | Köszönet a [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") fordítóknak a támogatásért. Ha bármilyen probléma van a fordítással, kérjük, bátran javítson ki minket. És kérjük, fordítson komolyan. Mindent, amit ír, az egész világon el fogják olvasni. 11 | 12 | ##### Hozzájárulók 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### Idézetek és hivatkozások 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.id-ID.md: -------------------------------------------------------------------------------- 1 | #### Selamat datang di Penginstal APK! 2 | 3 | ##### Pernyataan 4 | 1. Harap patuhi [Perjanjian Lisensi Pengguna Akhir APK Installer dan Kebijakan Privasi](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md). 5 | 2. Program ini adalah perangkat lunak open source, jadi pastikan program tersebut berasal dari [repositori Github ini](https://github.com/Paving-Base/APK-Installer-UWP) atau [aplikasi ini](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF) untuk memastikan keamanan data anda. 6 | 3. Jika sumber program tidak abnormal, semua data anda hanya akan digunakan untuk menjalankan program atau disimpan secara lokal selama berjalan, dan pengembang tidak akan mencuri data anda. Tetap saja, harap perhatikan keamanan lingkungan. 7 | 4. Terjemahan aplikasi ini berasal dari komunitas [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin"), dan semua teks tidak mewakili pandangan penulis. 8 | 9 | ##### Terjemahkan 10 | Terima kasih kepada penerjemah [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") atas dukungan mereka. Jika ada masalah dengan terjemahan, jangan ragu untuk mengoreksi kami. Dan tolong terjemahkan dengan serius. Semua yang Anda tulis akan dibaca di seluruh dunia. 11 | 12 | ##### Kontributor 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### Kutipan dan Referensi 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.it-IT.md: -------------------------------------------------------------------------------- 1 | #### Benvenuto su APK Installer! 2 | 3 | ##### Dichiarazione 4 | 1. Please comply with the [APK Installer End User License Agreement and Privacy Policy](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md). 5 | 2. This program is open source software, so please make sure the program is from [this Github repository](https://github.com/Paving-Base/APK-Installer-UWP) or [this application](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF) to ensure your data security. 6 | 3. If the source of the program is not abnormal, all your data will be used only for the running of the program or stored locally during the running, and the developer will not steal any of your data. Tuttavia, presta attenzione alla sicurezza dell'ambiente. 7 | 4. La traduzione di questa applicazione proviene dalla comunità [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") e tutti i testi non rappresentano le opinioni dell'autore. 8 | 9 | ##### Traduzioni 10 | Grazie a @CyberMatique per il suo supporto. Se ci sono problemi con la traduzione, non esitate a correggerci. E per favore traduci seriamente. Tutto quello che scrivi sarà letto in tutto il mondo. 11 | 12 | ##### Collaboratori 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### Citazioni e Riferimenti 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.ja-JP.md: -------------------------------------------------------------------------------- 1 | #### APKインストーラーへようこそ! 2 | 3 | ##### 宣言 4 | 1. Please comply with the [APK Installer End User License Agreement and Privacy Policy](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md). 5 | 2. This program is open source software, so please make sure the program is from [this Github repository](https://github.com/Paving-Base/APK-Installer-UWP) or [this application](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF) to ensure your data security. 6 | 3. If the source of the program is not abnormal, all your data will be used only for the running of the program or stored locally during the running, and the developer will not steal any of your data. それでも、あなたの環境のセキュリティには注意してください。 7 | 4. The translation of this application comes from the [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") community, and all texts does not represent the author's views. 8 | 9 | ##### 翻訳する 10 | [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") の翻訳者のサポートに感謝します。 If there are any problems with the translation, please feel free to correct us. And please translate seriously. Everything you write will be read all over the world. 11 | 12 | ##### 貢献者 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### 文献と参照 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.kaa-UZ.md: -------------------------------------------------------------------------------- 1 | #### APK ornatıwshısına xosh keldińiz! 2 | 3 | ##### Deklaraciya 4 | 1. Ótinish, [APK Installer paydalanıwshısınıń licenziya shártnamasına hám qupiyalıq siyasatına](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md) ámel qılıń. 5 | 2. Bul ashıq kodlı baǵdarlama, sonlıqtan maǵlıwmatlarıńızdıń qáwipsizligin támiyinlew ushın onıń [Github repozitoriyasınan](https://github.com/Paving-Base/APK-Installer-UWP) yamasa [usı baǵdarlamadan](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF) ekenligine isenim kámil etiń. 6 | 3. Eger baǵdarlamanıń deregi ózgeshe bolmasa, siziń bárshe dereklerińiz tek baǵdarlamanı iske túsiriw ushın qollanıladı yamasa jumıs barısında ishki yadqa saqlanadı hám baǵdarlamashı siziń maǵlıwmatlarıńızdı urlay almaydı. Ótinish, sonda da ortalıq qáwipsizligine itibar qaratıń. 7 | 4. Baǵdarlamanıń awdarması [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") birlespesinen alınǵan hám barlıq tekstler avtordıń kózqarasın sáwlelendirmeydi. 8 | 9 | ##### Awdarıw 10 | [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") awdarmashılarına qollap-quwatlawı ushın raxmet. Eger awdarmada qanday da mashqala bolsa, ótinish, bizlerdiń qátelerimizdi durıslawǵa tartınbań. Ótinish, shıntlap awdarmalań. Siziń barlıq jazǵanıńızdı dúnya júzi oqıydı. 11 | 12 | ##### Avtorlar 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### Paydalanatuǵın kitapxanalar 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.ko-KR.md: -------------------------------------------------------------------------------- 1 | #### Welcome to the APK Installer! 2 | 3 | ##### Declaration 4 | 1. Please comply with the [APK Installer End User License Agreement and Privacy Policy](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md). 5 | 2. This program is open source software, so please make sure the program is from [this Github repository](https://github.com/Paving-Base/APK-Installer-UWP) or [this application](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF) to ensure your data security. 6 | 3. If the source of the program is not abnormal, all your data will be used only for the running of the program or stored locally during the running, and the developer will not steal any of your data. Still, please pay attention to the security of the environment. 7 | 4. The translation of this application comes from the [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") community, and all texts does not represent the author's views. 8 | 9 | ##### Translate 10 | Thanks to [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") translators for their support. If there are any problems with the translation, please feel free to correct us. And please translate seriously. Everything you write will be read all over the world. 11 | 12 | ##### Contributors 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### Citations and References 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.nl-NL.md: -------------------------------------------------------------------------------- 1 | #### Welkom bij de APK Installer! 2 | 3 | ##### Disclaimer 4 | 1. Volg de [APK Installer End User License Agreement en Privacy Policy](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md). 5 | 2. This program is open source software, so please make sure the program is from [this Github repository](https://github.com/Paving-Base/APK-Installer-UWP) or [this application](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF) to ensure your data security. 6 | 3. If the source of the program is not abnormal, all your data will be used only for the running of the program or stored locally during the running, and the developer will not steal any of your data. Houd alstublieft nog steeds rekening met de veiligheid van de omgeving. 7 | 4. The translation of this application comes from the [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") community, and all texts does not represent the author's views. 8 | 9 | ##### Vertalen 10 | Dank aan de [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") vertalers voor hun steun. If there are any problems with the translation, please feel free to correct us. And please translate seriously. Everything you write will be read all over the world. 11 | 12 | ##### Bijdragers 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### Referenties en verwijzingen 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.no-NO.md: -------------------------------------------------------------------------------- 1 | #### Welcome to the APK Installer! 2 | 3 | ##### Declaration 4 | 1. Please comply with the [APK Installer End User License Agreement and Privacy Policy](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md). 5 | 2. This program is open source software, so please make sure the program is from [this Github repository](https://github.com/Paving-Base/APK-Installer-UWP) or [this application](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF) to ensure your data security. 6 | 3. If the source of the program is not abnormal, all your data will be used only for the running of the program or stored locally during the running, and the developer will not steal any of your data. Still, please pay attention to the security of the environment. 7 | 4. The translation of this application comes from the [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") community, and all texts does not represent the author's views. 8 | 9 | ##### Translate 10 | Thanks to [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") translators for their support. If there are any problems with the translation, please feel free to correct us. And please translate seriously. Everything you write will be read all over the world. 11 | 12 | ##### Contributors 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### Citations and References 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.pl-PL.md: -------------------------------------------------------------------------------- 1 | #### Witaj w Instalatorze APK! 2 | 3 | ##### Deklaracja 4 | 1. Please comply with the [APK Installer End User License Agreement and Privacy Policy](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md). 5 | 2. This program is open source software, so please make sure the program is from [this Github repository](https://github.com/Paving-Base/APK-Installer-UWP) or [this application](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF) to ensure your data security. 6 | 3. If the source of the program is not abnormal, all your data will be used only for the running of the program or stored locally during the running, and the developer will not steal any of your data. Still, please pay attention to the security of the environment. 7 | 4. The translation of this application comes from the [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") community, and all texts does not represent the author's views. 8 | 9 | ##### Tłumaczenie 10 | Dziękujemy tłumaczom [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") za ich wsparcie. If there are any problems with the translation, please feel free to correct us. And please translate seriously. Everything you write will be read all over the world. 11 | 12 | ##### Współtwórcy 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### Cytaty i odniesienia 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.pt-BR.md: -------------------------------------------------------------------------------- 1 | #### Bem-vindo a instalação do Instalador de APK! 2 | 3 | ##### Declaração 4 | 1. Please comply with the [APK Installer End User License Agreement and Privacy Policy](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md). 5 | 2. This program is open source software, so please make sure the program is from [this Github repository](https://github.com/Paving-Base/APK-Installer-UWP) or [this application](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF) to ensure your data security. 6 | 3. If the source of the program is not abnormal, all your data will be used only for the running of the program or stored locally during the running, and the developer will not steal any of your data. Ainda assim, por favor, preste atenção à segurança do ambiente. 7 | 4. The translation of this application comes from the [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") community, and all texts does not represent the author's views. 8 | 9 | ##### Traduza 10 | Obrigado a [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") tradutores por seu apoio. If there are any problems with the translation, please feel free to correct us. And please translate seriously. Everything you write will be read all over the world. 11 | 12 | ##### Colaboradores 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### Referências e Referências 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.pt-PT.md: -------------------------------------------------------------------------------- 1 | #### Bem-vindo ao instalador APK! 2 | 3 | ##### Manifesto 4 | 1. Please comply with the [APK Installer End User License Agreement and Privacy Policy](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md). 5 | 2. This program is open source software, so please make sure the program is from [this Github repository](https://github.com/Paving-Base/APK-Installer-UWP) or [this application](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF) to ensure your data security. 6 | 3. If the source of the program is not abnormal, all your data will be used only for the running of the program or stored locally during the running, and the developer will not steal any of your data. Still, please pay attention to the security of the environment. 7 | 4. The translation of this application comes from the [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") community, and all texts does not represent the author's views. 8 | 9 | ##### Traduzir 10 | Obrigado aos tradutores do [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") pelo seu apoio. If there are any problems with the translation, please feel free to correct us. And please translate seriously. Everything you write will be read all over the world. 11 | 12 | ##### Contribuidores 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### Referências e citações 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.ro-RO.md: -------------------------------------------------------------------------------- 1 | #### Bine ați venit la APK Installer! 2 | 3 | ##### Declarație 4 | 1. Please comply with the [APK Installer End User License Agreement and Privacy Policy](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md). 5 | 2. This program is open source software, so please make sure the program is from [this Github repository](https://github.com/Paving-Base/APK-Installer-UWP) or [this application](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF) to ensure your data security. 6 | 3. If the source of the program is not abnormal, all your data will be used only for the running of the program or stored locally during the running, and the developer will not steal any of your data. Totuşi, vă rog să acordaţi atenţie securităţii mediului. 7 | 4. The translation of this application comes from the [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") community, and all texts does not represent the author's views. 8 | 9 | ##### Traducere 10 | Mulţumim traducătorilor [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") pentru sprijinul lor. If there are any problems with the translation, please feel free to correct us. And please translate seriously. Everything you write will be read all over the world. 11 | 12 | ##### Contribuitori 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### Citaţii şi referinţe 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.ru-RU.md: -------------------------------------------------------------------------------- 1 | #### Добро пожаловать в установщик APK! 2 | 3 | ##### Декларация 4 | 1. Пожалуйста, следуйте [Лицензионному соглашению и политике конфиденциальности программы APK Installer](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md). 5 | 2. Эта программа является программным обеспечением с открытым исходным кодом, поэтому, пожалуйста, убедитесь, что программа взята из [этого репозитория Github](https://github.com/Paving-Base/APK-Installer-UWP) или [этого приложения](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF), чтобы обеспечить безопасность ваших данных. 6 | 3. Если источник программы не является опасным, все ваши данные будут использоваться только для запуска программы или храниться локально во время ее работы, и разработчик не украдет никаких ваших данных. Тем не менее обращайте внимание на безопасность окружения. 7 | 4. Перевод этого приложения взят из сообщества [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin"), и все тексты не отражают точку зрения автора. 8 | 9 | ##### Перевод 10 | Спасибо переводчикам [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") за их помощь. Если возникнут какие-либо проблемы с переводом, пожалуйста, не стесняйтесь исправлять нас. И, пожалуйста, отнеситесь к переводу серьезно. Все, что вы пишете, будет прочитано людьми во всем мире. 11 | 12 | ##### Авторы 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### Используемые библиотеки 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.sr-SP.md: -------------------------------------------------------------------------------- 1 | #### Welcome to the APK Installer! 2 | 3 | ##### Declaration 4 | 1. Please comply with the [APK Installer End User License Agreement and Privacy Policy](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md). 5 | 2. This program is open source software, so please make sure the program is from [this Github repository](https://github.com/Paving-Base/APK-Installer-UWP) or [this application](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF) to ensure your data security. 6 | 3. If the source of the program is not abnormal, all your data will be used only for the running of the program or stored locally during the running, and the developer will not steal any of your data. Still, please pay attention to the security of the environment. 7 | 4. The translation of this application comes from the [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") community, and all texts does not represent the author's views. 8 | 9 | ##### Translate 10 | Thanks to [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") translators for their support. If there are any problems with the translation, please feel free to correct us. And please translate seriously. Everything you write will be read all over the world. 11 | 12 | ##### Contributors 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### Citations and References 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 22 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 23 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 24 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 25 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 26 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.sv-SE.md: -------------------------------------------------------------------------------- 1 | #### Välkommen till APK Installera! 2 | 3 | ##### Declaration 4 | 1. Please comply with the [APK Installer End User License Agreement and Privacy Policy](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md). 5 | 2. This program is open source software, so please make sure the program is from [this Github repository](https://github.com/Paving-Base/APK-Installer-UWP) or [this application](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF) to ensure your data security. 6 | 3. If the source of the program is not abnormal, all your data will be used only for the running of the program or stored locally during the running, and the developer will not steal any of your data. Still, please pay attention to the security of the environment. 7 | 4. The translation of this application comes from the [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") community, and all texts does not represent the author's views. 8 | 9 | ##### Translate 10 | Thanks to [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") translators for their support. If there are any problems with the translation, please feel free to correct us. And please translate seriously. Everything you write will be read all over the world. 11 | 12 | ##### Contributors 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### Citations and References 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.tr-TR.md: -------------------------------------------------------------------------------- 1 | #### APK Installer'a Hoş Geldin! 2 | 3 | ##### Açıklama 4 | 1. Lütfen [ APK Installer Son Kullanıcı Lisans Sözleşmesini ve Gizlilik Politikasını ](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md) takip edin. 5 | 2. Bu program açık kaynaklı bir yazılımdır, bu nedenle verilerinizi güvende tutmak için lütfen programın [ bu Github deposundan ](https://github.com/Paving-Base/APK-Installer-UWP) veya [ bu uygulamadan ](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF) olduğundan emin olun. 6 | 3. Programın kaynağı anormal değilse, tüm verileriniz yalnızca programın çalışması için kullanılacak veya çalışma sırasında yerel olarak depolanacak ve geliştirici verilerinizin hiçbirini çalmayacaktır. Ancak yine de, lütfen kullanım ortamının güvenliğine dikkat edin. 7 | 4. Bu uygulamanın çevirisi [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") topluluğundan gelmektedir ve tüm metinler yazarın görüşlerini temsil etmemektedir. 8 | 9 | ##### Çeviri 10 | [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") çevirmenlerine destekleri için teşekkür ederiz. Çeviride herhangi bir sorun varsa, lütfen bizi düzeltmekten çekinmeyin. Ve lütfen ciddi bir şekilde tercüme edin. Yazdığınız her şey tüm dünyada okunacak. 11 | 12 | ##### Katkıda bulunanlar 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### Atıflar ve Referanslar 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.ug-CN.md: -------------------------------------------------------------------------------- 1 | #### Welcome to the APK Installer! 2 | 3 | ##### Declaration 4 | 1. Please comply with the [APK Installer End User License Agreement and Privacy Policy](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md). 5 | 2. This program is open source software, so please make sure the program is from [this Github repository](https://github.com/Paving-Base/APK-Installer-UWP) or [this application](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF) to ensure your data security. 6 | 3. If the source of the program is not abnormal, all your data will be used only for the running of the program or stored locally during the running, and the developer will not steal any of your data. Still, please pay attention to the security of the environment. 7 | 4. The translation of this application comes from the [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") community, and all texts does not represent the author's views. 8 | 9 | ##### تەرجىمە قىلىش 10 | Thanks to [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") translators for their support. If there are any problems with the translation, please feel free to correct us. And please translate seriously. Everything you write will be read all over the world. 11 | 12 | ##### Contributors 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### Citations and References 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.uk-UA.md: -------------------------------------------------------------------------------- 1 | #### Ласкаво просимо до Інсталятора APK! 2 | 3 | ##### Декларація 4 | 1. Please comply with the [APK Installer End User License Agreement and Privacy Policy](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md). 5 | 2. This program is open source software, so please make sure the program is from [this Github repository](https://github.com/Paving-Base/APK-Installer-UWP) or [this application](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF) to ensure your data security. 6 | 3. If the source of the program is not abnormal, all your data will be used only for the running of the program or stored locally during the running, and the developer will not steal any of your data. Проте зверніть увагу на безпеку навколишнього середовища. 7 | 4. The translation of this application comes from the [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") community, and all texts does not represent the author's views. 8 | 9 | ##### Переклад 10 | Дякую перекладачам з [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") за підтримку. If there are any problems with the translation, please feel free to correct us. And please translate seriously. Everything you write will be read all over the world. 11 | 12 | ##### Розробники 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### Цитування та посилання 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.vi-VN.md: -------------------------------------------------------------------------------- 1 | #### Chào mừng đến APK Cài đặt! 2 | 3 | ##### Tuyên bố 4 | 1. Vui lòng tuân thủ Thỏa thuận cấp phép người dùng cuối của APK Installer [ và Chính sách quyền riêng tư ](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md). 5 | 2. Chương trình này là phần mềm mã nguồn mở, vì vậy hãy đảm bảo rằng chương trình là từ [kho lưu trữ Github](https://github.com/Paving-Base/APK-Installer-UWP) hoặc [ứng dụng này](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF) để giữ an toàn cho dữ liệu của bạn. 6 | 3. Nếu nguồn của chương trình không có gì bất thường, tất cả dữ liệu của bạn sẽ chỉ được sử dụng để chạy với chương trình hoặc được lưu trữ cục bộ trong quá trình chạy chương trình và nhà phát triển sẽ không đánh cắp bất kỳ dữ liệu nào của bạn. Tuy nhiên, hãy chú ý đến an ninh của môi trường. 7 | 4. Bản dịch văn bản của ứng dụng này xuất phát từ cộng đồng [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") và tất cả các văn bản không đại diện cho quan điểm của tác giả. 8 | 9 | ##### Dịch 10 | Cảm ơn các dịch giả [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") đã hỗ trợ họ. Nếu có bất kỳ vấn đề nào với bản dịch, vui lòng sửa cho chúng tôi. Và hãy dịch một cách nghiêm túc. Mọi thứ bạn viết sẽ được đọc trên toàn thế giới. 11 | 12 | ##### Những người đóng góp 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### Trích dẫn và các tài liệu tham khảo 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.zh-CN.md: -------------------------------------------------------------------------------- 1 | #### 欢迎使用 APK 安装程序! 2 | 3 | ##### 声明 4 | 1. 请遵守 [APK Installer 最终用户许可协议与隐私条款](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md)。 5 | 2. 本程序是开源软件,因此,在使用时请确保程序是来自[本 Github 仓库](https://github.com/Paving-Base/APK-Installer-UWP)或应用商店中的[本应用](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF),以确保您的数据安全。 6 | 3. 若程序来源无异常,程序运行过程中您的所有数据都仅用于程序运行或储存于本地,开发者不会窃取您的任何数据。 但即便如此,也请注意使用环境的安全性。 7 | 4. 本应用文本翻译来自 [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") 社区,所有文本均不代表作者观点。 8 | 9 | ##### 翻译 10 | 感谢 [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") 翻译者的支持。 如果翻译出现了什么问题,欢迎前来纠正。 并且请认真对待翻译。 您所写的一切将会被全世界阅读。 11 | 12 | ##### 参与人员 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### 引用及参考 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.zh-Latn.md: -------------------------------------------------------------------------------- 1 | #### Huānyíng shǐyòng APK ānzhuāngchéngxù! 2 | 3 | ##### Shēngmíng 4 | 1. 请遵守 [APK Installer 最终用户许可协议与隐私条款](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md)。 5 | 2. 本程序是开源软件,因此,在使用时请确保程序是来自[本 Github 仓库](https://github.com/Paving-Base/APK-Installer-UWP)或应用商店中的[本应用](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF),以确保您的数据安全。 6 | 3. 若程序来源无异常,程序运行过程中您的所有数据都仅用于程序运行或储存于本地,开发者不会窃取您的任何数据。 Dàn jíbiàn rúcǐ, yě qǐng zhùyì shǐyòng huánjìng de ānquánxìng. Dàn jíbiàn rúcǐ, yě qǐng zhùyì shǐyòng huánjìng de ānquánxìng. 7 | 4. 本应用文本翻译来自 [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") 社区,所有文本均不代表作者观点。 8 | 9 | ##### Fānyì 10 | Gǎnxiè [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") fānyìzhě de zhīchí. 如果翻译出现了什么问题,欢迎前来纠正。 并且请认真对待翻译。 您所写的一切将会被全世界阅读。 11 | 12 | ##### Cānyù rényuán 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### Yǐnyòng jí cānkǎo 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/About/About.zh-TW.md: -------------------------------------------------------------------------------- 1 | #### 歡迎使用 APK 安裝程式! 2 | 3 | ##### 聲明 4 | 1. 請遵守 [APK Installer 最終使用者許可協定與隱私條款](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md)。 5 | 2. 本程式是開源軟體,因此,在使用時請確保程式是來自[本 Github 倉庫](https://github.com/Paving-Base/APK-Installer-UWP)或應用商店中的[本應用](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF),以確保您的數據安全。 6 | 3. 若程式來源無異常,程式運行過程中您的所有數據都僅用於與程式運行或儲存於本地,開發者不會竊取您的任何數據。 但即便如此,也請注意使用環境的安全性。 7 | 4. 本應用文本翻譯來自 [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") 社區,所有文本均不代表作者觀點。 8 | 9 | ##### 翻譯 10 | 感謝 [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") 翻譯者的支援。 如果翻譯出現了什麼問題,歡迎前來糾正。 並且請認真對待翻譯。 您所寫的一切將會被全世界閱讀。 11 | 12 | ##### 參與人員 13 | - [wherewhere](https://github.com/wherewhere) 14 | - [Void48](https://github.com/Void48) 15 | - [EP012014](https://github.com/EP012014) 16 | - [A Big Salty Fish](https://github.com/bigsaltyfishes) 17 | - [sam1357](https://github.com/sam1357) 18 | 19 | ##### 引用及參考 20 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 21 | - [Zeroconf](https://github.com/novotnyllc/Zeroconf "Zeroconf") 22 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 23 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 24 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 25 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 26 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 27 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/LargeTile.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/LargeTile.scale-100.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/LargeTile.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/LargeTile.scale-125.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/LargeTile.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/LargeTile.scale-150.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/LargeTile.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/LargeTile.scale-200.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/LargeTile.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/LargeTile.scale-400.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/LockScreenLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/LockScreenLogo.scale-200.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/SmallTile.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/SmallTile.scale-100.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/SmallTile.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/SmallTile.scale-125.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/SmallTile.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/SmallTile.scale-150.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/SmallTile.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/SmallTile.scale-200.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/SmallTile.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/SmallTile.scale-400.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/SplashScreen.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/SplashScreen.scale-100.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/SplashScreen.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/SplashScreen.scale-125.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/SplashScreen.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/SplashScreen.scale-150.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/SplashScreen.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/SplashScreen.scale-200.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/SplashScreen.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/SplashScreen.scale-400.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/Square150x150Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/Square150x150Logo.scale-100.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/Square150x150Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/Square150x150Logo.scale-125.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/Square150x150Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/Square150x150Logo.scale-150.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/Square150x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/Square150x150Logo.scale-200.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/Square150x150Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/Square150x150Logo.scale-400.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/Square44x44Logo.altform-lightunplated_targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/Square44x44Logo.altform-lightunplated_targetsize-16.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/Square44x44Logo.altform-lightunplated_targetsize-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/Square44x44Logo.altform-lightunplated_targetsize-24.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/Square44x44Logo.altform-lightunplated_targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/Square44x44Logo.altform-lightunplated_targetsize-256.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/Square44x44Logo.altform-lightunplated_targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/Square44x44Logo.altform-lightunplated_targetsize-32.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/Square44x44Logo.altform-lightunplated_targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/Square44x44Logo.altform-lightunplated_targetsize-48.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/Square44x44Logo.altform-unplated_targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/Square44x44Logo.altform-unplated_targetsize-16.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/Square44x44Logo.altform-unplated_targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/Square44x44Logo.altform-unplated_targetsize-256.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/Square44x44Logo.altform-unplated_targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/Square44x44Logo.altform-unplated_targetsize-32.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/Square44x44Logo.altform-unplated_targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/Square44x44Logo.altform-unplated_targetsize-48.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/Square44x44Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/Square44x44Logo.scale-100.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/Square44x44Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/Square44x44Logo.scale-125.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/Square44x44Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/Square44x44Logo.scale-150.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/Square44x44Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/Square44x44Logo.scale-200.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/Square44x44Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/Square44x44Logo.scale-400.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/Square44x44Logo.targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/Square44x44Logo.targetsize-16.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/Square44x44Logo.targetsize-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/Square44x44Logo.targetsize-24.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/Square44x44Logo.targetsize-24_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/Square44x44Logo.targetsize-24_altform-unplated.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/Square44x44Logo.targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/Square44x44Logo.targetsize-256.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/Square44x44Logo.targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/Square44x44Logo.targetsize-32.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/Square44x44Logo.targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/Square44x44Logo.targetsize-48.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/StoreLogo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/StoreLogo.scale-100.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/StoreLogo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/StoreLogo.scale-125.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/StoreLogo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/StoreLogo.scale-150.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/StoreLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/StoreLogo.scale-200.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/StoreLogo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/StoreLogo.scale-400.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/Wide310x150Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/Wide310x150Logo.scale-100.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/Wide310x150Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/Wide310x150Logo.scale-125.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/Wide310x150Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/Wide310x150Logo.scale-150.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/Wide310x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/Wide310x150Logo.scale-200.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Assets/Wide310x150Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/Assets/Wide310x150Logo.scale-400.png -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Common/MetroLoggerFactory.cs: -------------------------------------------------------------------------------- 1 | using AdvancedSharpAdbClient.Logs; 2 | using APKInstaller.Helpers; 3 | using System; 4 | using System.ComponentModel; 5 | 6 | namespace APKInstaller.Common 7 | { 8 | public class MetroLoggerFactory : ILoggerFactory 9 | { 10 | public ILogger CreateLogger(string categoryName) => new MetroLogger(categoryName); 11 | 12 | public ILogger CreateLogger() => new MetroLogger(); 13 | } 14 | 15 | [EditorBrowsable(EditorBrowsableState.Never)] 16 | public class MetroLogger(string name) : ILogger 17 | { 18 | public virtual MetroLog.ILogger Logger { get; } = SettingsHelper.LogManager.GetLogger(name); 19 | 20 | public void Log(LogLevel logLevel, Exception exception, string message, params object[] args) 21 | { 22 | switch (logLevel) 23 | { 24 | case LogLevel.Trace: 25 | Logger.Trace(string.Format(message, args), exception); 26 | break; 27 | case LogLevel.Debug: 28 | Logger.Debug(string.Format(message, args), exception); 29 | break; 30 | case LogLevel.Information: 31 | Logger.Info(string.Format(message, args), exception); 32 | break; 33 | case LogLevel.Warning: 34 | Logger.Warn(string.Format(message, args), exception); 35 | break; 36 | case LogLevel.Error: 37 | Logger.Error(string.Format(message, args), exception); 38 | break; 39 | case LogLevel.Critical: 40 | Logger.Fatal(string.Format(message, args), exception); 41 | break; 42 | case LogLevel.None: 43 | default: 44 | break; 45 | } 46 | } 47 | } 48 | 49 | [EditorBrowsable(EditorBrowsableState.Never)] 50 | public class MetroLogger : MetroLogger, ILogger 51 | { 52 | public override MetroLog.ILogger Logger { get; } = SettingsHelper.LogManager.GetLogger(); 53 | 54 | public MetroLogger() : base(typeof(T).Name) { } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Controls/Dialogs/MarkdownDialog.xaml: -------------------------------------------------------------------------------- 1 |  12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 24 | 25 | 30 | 36 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Controls/Dialogs/SplitAPKDialog.xaml.cs: -------------------------------------------------------------------------------- 1 | using AAPTForNet.Models; 2 | using System.Collections.Generic; 3 | using Windows.UI.Xaml.Controls; 4 | 5 | // https://go.microsoft.com/fwlink/?LinkId=234238 上介绍了“内容对话框”项模板 6 | 7 | namespace APKInstaller.Controls.Dialogs 8 | { 9 | public sealed partial class SplitAPKDialog : ContentDialog 10 | { 11 | public IList Packages { get; } 12 | 13 | public SplitAPKDialog(IList packages) 14 | { 15 | InitializeComponent(); 16 | Packages = packages; 17 | } 18 | } 19 | 20 | public record class SplitAPKSelector(ApkInfo Package) 21 | { 22 | public ApkInfo Package { get; } = Package; 23 | public bool IsSelected { get; set; } 24 | } 25 | } -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Controls/QRCode/QRCodeTemplateSettings.cs: -------------------------------------------------------------------------------- 1 | using Windows.UI.Xaml; 2 | using Windows.UI.Xaml.Media; 3 | 4 | namespace APKInstaller.Controls 5 | { 6 | public partial class QRCodeTemplateSettings : DependencyObject 7 | { 8 | #region GeometryGroup 9 | 10 | /// 11 | /// Identifies the dependency property. 12 | /// 13 | public static readonly DependencyProperty GeometryGroupProperty = 14 | DependencyProperty.Register( 15 | nameof(GeometryGroup), 16 | typeof(GeometryGroup), 17 | typeof(QRCodeTemplateSettings), 18 | null); 19 | 20 | /// 21 | /// Gets or sets the GeometryGroup. 22 | /// 23 | public GeometryGroup GeometryGroup 24 | { 25 | get => (GeometryGroup)GetValue(GeometryGroupProperty); 26 | set => SetValue(GeometryGroupProperty, value); 27 | } 28 | 29 | #endregion 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Controls/Setting/SettingAutomationPeer.cs: -------------------------------------------------------------------------------- 1 | using Windows.UI.Xaml.Automation.Peers; 2 | 3 | namespace APKInstaller.Controls 4 | { 5 | /// 6 | /// AutomationPeer for SettingsCard 7 | /// 8 | public class SettingAutomationPeer : ButtonBaseAutomationPeer 9 | { 10 | /// 11 | /// Initializes a new instance of the class. 12 | /// 13 | /// Setting 14 | public SettingAutomationPeer(Setting owner) : base(owner) 15 | { 16 | } 17 | 18 | /// 19 | /// Gets the control type for the element that is associated with the UI Automation peer. 20 | /// 21 | /// The control type. 22 | protected override AutomationControlType GetAutomationControlTypeCore() 23 | { 24 | return AutomationControlType.Group; 25 | } 26 | 27 | /// 28 | /// Called by GetClassName that gets a human readable name that, in addition to AutomationControlType, 29 | /// differentiates the control represented by this AutomationPeer. 30 | /// 31 | /// The string that contains the name. 32 | protected override string GetClassNameCore() 33 | { 34 | string classNameCore = Owner.GetType().Name; 35 | #if DEBUG_AUTOMATION 36 | System.Diagnostics.Debug.WriteLine("SettingsCardAutomationPeer.GetClassNameCore returns " + classNameCore); 37 | #endif 38 | return classNameCore; 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Controls/SettingExpander/SettingExpander.cs: -------------------------------------------------------------------------------- 1 | using Windows.UI.Xaml.Automation; 2 | using Windows.UI.Xaml.Automation.Peers; 3 | using Windows.UI.Xaml.Controls; 4 | 5 | // To learn more about WinUI, the WinUI project structure, 6 | // and more about our project templates, see: http://aka.ms/winui-project-info. 7 | 8 | namespace APKInstaller.Controls 9 | { 10 | /// 11 | /// The SettingExpander is a collapsable control to host multiple SettingsCards. 12 | /// 13 | public partial class SettingExpander : ItemsControl 14 | { 15 | /// 16 | /// Creates a new instance of the class. 17 | /// 18 | public SettingExpander() 19 | { 20 | DefaultStyleKey = typeof(SettingExpander); 21 | } 22 | 23 | /// 24 | protected override void OnApplyTemplate() 25 | { 26 | base.OnApplyTemplate(); 27 | RegisterAutomation(); 28 | } 29 | 30 | private void RegisterAutomation() 31 | { 32 | if (Header is string headerString && headerString != string.Empty) 33 | { 34 | if (!string.IsNullOrEmpty(headerString) && string.IsNullOrEmpty(AutomationProperties.GetName(this))) 35 | { 36 | AutomationProperties.SetName(this, headerString); 37 | } 38 | } 39 | } 40 | 41 | /// 42 | /// Creates AutomationPeer 43 | /// 44 | /// An automation peer for . 45 | protected override AutomationPeer OnCreateAutomationPeer() 46 | { 47 | return new SettingExpanderAutomationPeer(this); 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Controls/SettingExpander/SettingExpanderAutomationPeer.cs: -------------------------------------------------------------------------------- 1 | using Windows.UI.Xaml.Automation.Peers; 2 | 3 | namespace APKInstaller.Controls 4 | { 5 | /// 6 | /// AutomationPeer for SettingExpander 7 | /// 8 | public class SettingExpanderAutomationPeer : ItemsControlAutomationPeer 9 | { 10 | /// 11 | /// Initializes a new instance of the class. 12 | /// 13 | /// SettingExpander 14 | public SettingExpanderAutomationPeer(SettingExpander owner) : base(owner) 15 | { 16 | } 17 | 18 | /// 19 | /// Gets the control type for the element that is associated with the UI Automation peer. 20 | /// 21 | /// The control type. 22 | protected override AutomationControlType GetAutomationControlTypeCore() 23 | { 24 | return AutomationControlType.Button; 25 | } 26 | 27 | /// 28 | /// Called by GetClassName that gets a human readable name that, in addition to AutomationControlType, 29 | /// differentiates the control represented by this AutomationPeer. 30 | /// 31 | /// The string that contains the name. 32 | protected override string GetClassNameCore() 33 | { 34 | string classNameCore = Owner.GetType().Name; 35 | #if DEBUG_AUTOMATION 36 | System.Diagnostics.Debug.WriteLine("SettingsCardAutomationPeer.GetClassNameCore returns " + classNameCore); 37 | #endif 38 | return classNameCore; 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Controls/SettingsGroup/SettingsGroup.Properties.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | using Windows.UI.Xaml; 3 | 4 | namespace APKInstaller.Controls 5 | { 6 | public partial class SettingsGroup 7 | { 8 | #region Header 9 | 10 | /// 11 | /// Identifies the dependency property. 12 | /// 13 | public static readonly DependencyProperty HeaderProperty = 14 | DependencyProperty.Register( 15 | nameof(Header), 16 | typeof(object), 17 | typeof(SettingsGroup), 18 | new PropertyMetadata(null, OnHeaderPropertyChanged)); 19 | 20 | /// 21 | /// Gets or sets the Header. 22 | /// 23 | [Localizable(true)] 24 | public object Header 25 | { 26 | get => GetValue(HeaderProperty); 27 | set => SetValue(HeaderProperty, value); 28 | } 29 | 30 | private static void OnHeaderPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) 31 | { 32 | if (e.NewValue != e.OldValue) 33 | { 34 | ((SettingsGroup)d).OnHeaderChanged(); 35 | } 36 | } 37 | 38 | #endregion 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Controls/SettingsGroup/SettingsGroup.cs: -------------------------------------------------------------------------------- 1 | using Windows.UI.Xaml; 2 | using Windows.UI.Xaml.Automation.Peers; 3 | using Windows.UI.Xaml.Controls; 4 | 5 | // To learn more about WinUI, the WinUI project structure, 6 | // and more about our project templates, see: http://aka.ms/winui-project-info. 7 | 8 | namespace APKInstaller.Controls 9 | { 10 | /// 11 | /// Represents a control that can contain multiple settings (or other) controls 12 | /// 13 | [TemplateVisualState(Name = "Normal", GroupName = "CommonStates")] 14 | [TemplateVisualState(Name = "Disabled", GroupName = "CommonStates")] 15 | public partial class SettingsGroup : ItemsControl 16 | { 17 | public SettingsGroup() 18 | { 19 | DefaultStyleKey = typeof(SettingsGroup); 20 | } 21 | 22 | protected override void OnApplyTemplate() 23 | { 24 | base.OnApplyTemplate(); 25 | IsEnabledChanged -= SettingsGroup_IsEnabledChanged; 26 | OnHeaderChanged(); 27 | SetEnabledState(); 28 | IsEnabledChanged += SettingsGroup_IsEnabledChanged; 29 | } 30 | 31 | private void SettingsGroup_IsEnabledChanged(object sender, DependencyPropertyChangedEventArgs e) 32 | { 33 | SetEnabledState(); 34 | } 35 | 36 | private void SetEnabledState() 37 | { 38 | VisualStateManager.GoToState(this, IsEnabled ? "Normal" : "Disabled", true); 39 | } 40 | 41 | /// 42 | /// Creates AutomationPeer 43 | /// 44 | /// An automation peer for . 45 | protected override AutomationPeer OnCreateAutomationPeer() 46 | { 47 | return new SettingsGroupAutomationPeer(this); 48 | } 49 | 50 | public void OnHeaderChanged() 51 | { 52 | _ = VisualStateManager.GoToState(this, Header == null ? "HeaderCollapsed" : "HeaderVisible", false); 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Controls/SettingsGroup/SettingsGroupAutomationPeer.cs: -------------------------------------------------------------------------------- 1 | using Windows.UI.Xaml.Automation.Peers; 2 | 3 | namespace APKInstaller.Controls 4 | { 5 | public class SettingsGroupAutomationPeer : ItemsControlAutomationPeer 6 | { 7 | /// 8 | /// Initializes a new instance of the class. 9 | /// 10 | /// SettingsGroup 11 | public SettingsGroupAutomationPeer(SettingsGroup owner) : base(owner) 12 | { 13 | } 14 | 15 | /// 16 | /// Gets the control type for the element that is associated with the UI Automation peer. 17 | /// 18 | /// The control type. 19 | protected override AutomationControlType GetAutomationControlTypeCore() 20 | { 21 | return AutomationControlType.Group; 22 | } 23 | 24 | /// 25 | /// Called by GetClassName that gets a human readable name that, in addition to AutomationControlType, 26 | /// differentiates the control represented by this AutomationPeer. 27 | /// 28 | /// The string that contains the name. 29 | protected override string GetClassNameCore() 30 | { 31 | SettingsGroup selectedSettingsGroup = (SettingsGroup)Owner; 32 | return selectedSettingsGroup.Header is string header ? header : selectedSettingsGroup.Name; 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Controls/WebXAML.xaml: -------------------------------------------------------------------------------- 1 |  8 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Helpers/ADBHelper.cs: -------------------------------------------------------------------------------- 1 | using AdvancedSharpAdbClient; 2 | using APKInstaller.Metadata; 3 | using APKInstaller.Projection; 4 | using System; 5 | using System.Collections.Generic; 6 | using System.Net; 7 | using System.Threading.Tasks; 8 | using Windows.Storage; 9 | 10 | namespace APKInstaller.Helpers 11 | { 12 | public static class ADBHelper 13 | { 14 | private static DeviceMonitor _monitor; 15 | public static DeviceMonitor Monitor 16 | { 17 | get 18 | { 19 | if (_monitor == null && AdbServer.Instance.GetStatus().IsRunning) 20 | { 21 | _monitor = new(new AdbSocket(new IPEndPoint(IPAddress.Loopback, AdbClient.AdbServerPort))); 22 | _ = _monitor.StartAsync(); 23 | } 24 | return _monitor; 25 | } 26 | } 27 | 28 | public static Task DumpAsync(string filename, string command, Func callback, IList output, int encode) => 29 | APKInstallerProjectionFactory.ServerManager.DumpAsync(filename, command, callback == null ? null : new DumpDelegate(callback), output, encode).AsTask(); 30 | 31 | public static async Task CheckFileExistsAsync(string path) 32 | { 33 | try 34 | { 35 | return await StorageFile.GetFileFromPathAsync(path) is StorageFile file && file.IsOfType(StorageItemTypes.File); 36 | } 37 | catch 38 | { 39 | return false; 40 | } 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Helpers/AddressHelper.cs: -------------------------------------------------------------------------------- 1 | using AdvancedSharpAdbClient; 2 | using APKInstaller.Projection; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Text.RegularExpressions; 6 | using System.Threading.Tasks; 7 | 8 | namespace APKInstaller.Helpers 9 | { 10 | public class AddressHelper 11 | { 12 | public static async Task> GetAddressID(string mac) 13 | { 14 | List addresses = []; 15 | Regex Regex = new($@"\s*(\d+.\d+.\d+.\d+)\s*{mac}\S*\s*\w+"); 16 | List lines = []; 17 | _ = await APKInstallerProjectionFactory.ServerManager.RunProcessAsync("powershell.exe", $"arp -a|findstr {mac}", null, lines); 18 | foreach (string line in lines) 19 | { 20 | if (Regex.IsMatch(line)) 21 | { 22 | addresses.Add(Regex.Match(line).Groups[1].Value); 23 | } 24 | } 25 | return addresses; 26 | } 27 | 28 | public static async Task ConnectHyperV() 29 | { 30 | AdbClient AdbClient = new(); 31 | List addresses = await GetAddressID("00-15-5d"); 32 | foreach (string address in addresses) 33 | { 34 | _ = AdbClient.ConnectAsync(address); 35 | } 36 | } 37 | 38 | public static async Task> ConnectHyperVAsync() 39 | { 40 | AdbClient AdbClient = new(); 41 | List addresses = await GetAddressID("00-15-5d"); 42 | List results = []; 43 | foreach (string address in addresses) 44 | { 45 | results.Add(await AdbClient.ConnectAsync(address)); 46 | } 47 | return results; 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Helpers/CachesHelper.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using System.IO; 3 | using Windows.Storage; 4 | 5 | namespace APKInstaller.Helpers 6 | { 7 | public static class CachesHelper 8 | { 9 | public static readonly string TempPathBase = Path.Combine(ApplicationData.Current.TemporaryFolder.Path, "Caches"); 10 | public static readonly string TempPath = Path.Combine(TempPathBase, $"{Process.GetCurrentProcess().Id}"); 11 | public static readonly string OldTempPathBase = Path.Combine(Path.GetTempPath(), @"APKInstaller\Caches"); 12 | public static readonly string OldTempPath = Path.Combine(OldTempPathBase, $"{Process.GetCurrentProcess().Id}"); 13 | 14 | public static void CleanCaches(bool isAll) 15 | { 16 | if (isAll) 17 | { 18 | if (Directory.Exists(TempPathBase)) 19 | { 20 | try { Directory.Delete(TempPathBase, true); } catch { } 21 | } 22 | } 23 | else 24 | { 25 | if (Directory.Exists(TempPath)) 26 | { 27 | try { Directory.Delete(TempPath, true); } catch { } 28 | } 29 | } 30 | } 31 | 32 | public static void CleanOldCaches(bool isAll) 33 | { 34 | if (isAll) 35 | { 36 | if (Directory.Exists(OldTempPathBase)) 37 | { 38 | try { Directory.Delete(OldTempPathBase, true); } catch { } 39 | } 40 | } 41 | else 42 | { 43 | if (Directory.Exists(OldTempPath)) 44 | { 45 | try { Directory.Delete(OldTempPath, true); } catch { } 46 | } 47 | } 48 | } 49 | 50 | public static void CleanAllCaches(bool isAll) 51 | { 52 | CleanCaches(isAll); 53 | CleanOldCaches(isAll); 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Helpers/Converter/DoubleToBoolConverter.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Toolkit.Uwp.UI.Converters; 2 | 3 | namespace APKInstaller.Helpers.Converter 4 | { 5 | /// 6 | /// This class converts a double value into a Boolean value (if the value is null or empty returns a false value). 7 | /// 8 | public class DoubleToBoolConverter : DoubleToObjectConverter 9 | { 10 | /// 11 | /// Initializes a new instance of the class. 12 | /// 13 | public DoubleToBoolConverter() 14 | { 15 | TrueValue = true; 16 | FalseValue = false; 17 | NullValue = false; 18 | GreaterThan = 0; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Helpers/Converter/EmptyObjectToVisibilityConverter.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Toolkit.Uwp.UI.Converters; 2 | using Windows.UI.Xaml; 3 | 4 | namespace APKInstaller.Helpers.Converter 5 | { 6 | /// 7 | /// This class converts a object value into a Visibility value (if the value is null or empty returns a collapsed value). 8 | /// 9 | public class EmptyObjectToVisibilityConverter : EmptyObjectToObjectConverter 10 | { 11 | /// 12 | /// Initializes a new instance of the class. 13 | /// 14 | public EmptyObjectToVisibilityConverter() 15 | { 16 | NotEmptyValue = Visibility.Visible; 17 | EmptyValue = Visibility.Collapsed; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Helpers/Converter/FileSizeToFriendlyStringConverter.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Toolkit; 2 | using System; 3 | using Windows.UI.Xaml.Data; 4 | using Windows.UI.Xaml.Markup; 5 | 6 | namespace APKInstaller.Helpers.Converter 7 | { 8 | public class FileSizeToFriendlyStringConverter : IValueConverter 9 | { 10 | public object Convert(object value, Type targetType, object parameter, string language) 11 | { 12 | string result = Converters.ToFileSizeString(System.Convert.ToInt64(value)); 13 | return targetType.IsInstanceOfType(result) ? result : XamlBindingHelper.ConvertValue(targetType, result); 14 | } 15 | 16 | public object ConvertBack(object value, Type targetType, object parameter, string language) => 17 | targetType.IsInstanceOfType(value) ? value : XamlBindingHelper.ConvertValue(targetType, value); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Helpers/Converter/JoinEnumerableConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Linq; 4 | using Windows.UI.Xaml.Data; 5 | using Windows.UI.Xaml.Markup; 6 | 7 | namespace APKInstaller.Helpers.Converter 8 | { 9 | public class JoinEnumerableConverter : IValueConverter 10 | { 11 | public object Convert(object value, Type targetType, object parameter, string language) 12 | { 13 | object result = value is IEnumerable list ? string.Join(parameter.ToString(), list.OfType()) : value; 14 | return targetType.IsInstanceOfType(result) ? result : XamlBindingHelper.ConvertValue(targetType, result); 15 | } 16 | 17 | public object ConvertBack(object value, Type targetType, object parameter, string language) => 18 | targetType.IsInstanceOfType(value) ? value : XamlBindingHelper.ConvertValue(targetType, value); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Helpers/Converter/StringRegexToBoolConverter.cs: -------------------------------------------------------------------------------- 1 | namespace APKInstaller.Helpers.Converter 2 | { 3 | /// 4 | /// This class converts a string value into a Boolean value (if the value is matched returns a true value). 5 | /// 6 | public class StringRegexToBoolConverter : StringRegexToObjectConverter 7 | { 8 | /// 9 | /// Initializes a new instance of the class. 10 | /// 11 | public StringRegexToBoolConverter() 12 | { 13 | MatchValue = true; 14 | NotMatchValue = false; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Helpers/Converter/StringRegexToObjectConverter.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Toolkit.Uwp.UI.Converters; 2 | using System; 3 | using System.Text.RegularExpressions; 4 | using Windows.UI.Xaml; 5 | using Windows.UI.Xaml.Data; 6 | using Windows.UI.Xaml.Markup; 7 | 8 | namespace APKInstaller.Helpers.Converter 9 | { 10 | public class StringRegexToObjectConverter : DependencyObject, IValueConverter 11 | { 12 | /// 13 | /// Identifies the property. 14 | /// 15 | public static readonly DependencyProperty MatchValueProperty = 16 | DependencyProperty.Register(nameof(MatchValue), typeof(object), typeof(BoolToObjectConverter), new PropertyMetadata(null)); 17 | 18 | /// 19 | /// Identifies the property. 20 | /// 21 | public static readonly DependencyProperty NotMatchValueProperty = 22 | DependencyProperty.Register(nameof(NotMatchValue), typeof(object), typeof(BoolToObjectConverter), new PropertyMetadata(null)); 23 | 24 | /// 25 | /// Gets or sets the value to be returned when the string is matched 26 | /// 27 | public object MatchValue 28 | { 29 | get => GetValue(MatchValueProperty); 30 | set => SetValue(MatchValueProperty, value); 31 | } 32 | 33 | /// 34 | /// Gets or sets the value to be returned when the string is not matched 35 | /// 36 | public object NotMatchValue 37 | { 38 | get => GetValue(NotMatchValueProperty); 39 | set => SetValue(NotMatchValueProperty, value); 40 | } 41 | 42 | public object Convert(object value, Type targetType, object parameter, string language) 43 | { 44 | string text = parameter.ToString(); 45 | bool isMatch = !string.IsNullOrWhiteSpace(text) && Regex.IsMatch(value.ToString(), text); 46 | object result = isMatch ? MatchValue : NotMatchValue; 47 | return targetType.IsInstanceOfType(result) ? result : XamlBindingHelper.ConvertValue(targetType, result); 48 | } 49 | 50 | public object ConvertBack(object value, Type targetType, object parameter, string language) => 51 | targetType.IsInstanceOfType(value) ? value : XamlBindingHelper.ConvertValue(targetType, value); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Helpers/Converter/StringToBoolConverter.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Toolkit.Uwp.UI.Converters; 2 | 3 | namespace APKInstaller.Helpers.Converter 4 | { 5 | /// 6 | /// This class converts a string value into a Boolean value (if the value is null or empty returns a false value). 7 | /// 8 | public class StringToBoolConverter : EmptyStringToObjectConverter 9 | { 10 | /// 11 | /// Initializes a new instance of the class. 12 | /// 13 | public StringToBoolConverter() 14 | { 15 | NotEmptyValue = true; 16 | EmptyValue = false; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Helpers/DownloadHelper.cs: -------------------------------------------------------------------------------- 1 | using Downloader; 2 | 3 | namespace APKInstaller.Helpers 4 | { 5 | public static class DownloadHelper 6 | { 7 | public static DownloadConfiguration Configuration { get; } 8 | 9 | static DownloadHelper() 10 | { 11 | Configuration = new DownloadConfiguration 12 | { 13 | ChunkCount = 8, 14 | ParallelDownload = true 15 | }; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Helpers/WindowHelper.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Toolkit.Uwp.Helpers; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Threading.Tasks; 5 | using Windows.ApplicationModel.Core; 6 | using Windows.Foundation.Metadata; 7 | using Windows.UI.Core; 8 | using Windows.UI.ViewManagement; 9 | using Windows.UI.Xaml; 10 | 11 | namespace APKInstaller.Helpers 12 | { 13 | /// 14 | /// Helpers class to allow the app to find the Window that contains an 15 | /// arbitrary (GetWindowForElement(UIElement)). 16 | /// To do this, we keep track of all active Windows. The app code must call 17 | /// rather than "new ()" 18 | /// so we can keep track of all the relevant windows. 19 | /// 20 | public static class WindowHelper 21 | { 22 | public static bool IsXamlRootSupported { get; } = ApiInformation.IsPropertyPresent("Windows.UI.Xaml.UIElement", "XamlRoot"); 23 | 24 | public static async Task CreateWindowAsync(Action launched) 25 | { 26 | CoreApplicationView newView = CoreApplication.CreateNewView(); 27 | int newViewId = await newView.Dispatcher.AwaitableRunAsync(() => 28 | { 29 | Window window = Window.Current; 30 | TrackWindow(window); 31 | launched(window); 32 | window.Activate(); 33 | return ApplicationView.GetForCurrentView().Id; 34 | }); 35 | return await ApplicationViewSwitcher.TryShowAsStandaloneAsync(newViewId); 36 | } 37 | 38 | public static void TrackWindow(this Window window) 39 | { 40 | if (!ActiveWindows.ContainsKey(window.Dispatcher)) 41 | { 42 | window.Closed += (sender, args) => 43 | { 44 | ActiveWindows.Remove(window.Dispatcher); 45 | window = null; 46 | }; 47 | ActiveWindows[window.Dispatcher] = window; 48 | } 49 | } 50 | 51 | public static T SetXAMLRoot(this T element, UIElement target) where T : UIElement 52 | { 53 | if (IsXamlRootSupported) 54 | { 55 | element.XamlRoot = target?.XamlRoot; 56 | } 57 | return element; 58 | } 59 | 60 | public static Dictionary ActiveWindows { get; } = []; 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Models/GitInfo.cs: -------------------------------------------------------------------------------- 1 | using APKInstaller.Helpers; 2 | using System.Text.RegularExpressions; 3 | 4 | namespace APKInstaller.Models 5 | { 6 | public readonly record struct GitInfo(string UserName, string Repository, string Branch, string Path, string FileName) 7 | { 8 | public const string NUAA_API = "https://raw.nuaa.cf/{0}/{1}/{2}/{3}/{4}"; 9 | public const string YZUU_API = "https://raw.yzuu.cf/{0}/{1}/{2}/{3}/{4}"; 10 | public const string FASTGIT_API = "https://raw.fastgit.org/{0}/{1}/{2}/{3}/{4}"; 11 | public const string JSDELIVR_API = "https://cdn.jsdelivr.net/gh/{0}/{1}@{2}/{3}/{4}"; 12 | public const string GITHUB_API = "https://raw.githubusercontent.com/{0}/{1}/{2}/{3}/{4}"; 13 | 14 | public string FormatURL(string api, bool local = true) 15 | { 16 | if (local) 17 | { 18 | string Culture = LanguageHelper.GetCurrentLanguage(); 19 | return string.Format(api, UserName, Repository, Branch, Path, AddLanguage(FileName, Culture)); 20 | } 21 | return string.Format(api, UserName, Repository, Branch, Path, FileName); 22 | } 23 | 24 | private string AddLanguage(string filename, string langCode) 25 | { 26 | Regex file = new(@"^.*(\.\w+)$"); 27 | Regex lang = new(@"^.*\.[a-z]{2}(-[A-Z]{2})?\.\w+$"); 28 | return file.IsMatch(filename) && !lang.IsMatch(filename) 29 | ? Regex.Replace(filename, @"(?.*)(?\.\w+$)", $"${{name}}.{langCode}${{extension}}") 30 | : filename; 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Models/MDNSDeviceData.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Toolkit.Uwp.Helpers; 2 | using System.ComponentModel; 3 | using System.Linq; 4 | using System.Runtime.CompilerServices; 5 | using System.Threading.Tasks; 6 | using Windows.UI.Core; 7 | using Zeroconf.Interfaces; 8 | 9 | namespace APKInstaller.Models 10 | { 11 | public class MDNSDeviceData(string name, string address, int port) : INotifyPropertyChanged 12 | { 13 | public string Name { get; init; } = name; 14 | public string Address { get; init; } = address; 15 | public int Port { get; init; } = port; 16 | 17 | public string Host => $"{Address}:{Host}"; 18 | 19 | private bool _connectingDevice; 20 | public bool ConnectingDevice 21 | { 22 | get => _connectingDevice; 23 | set => SetProperty(ref _connectingDevice, value); 24 | } 25 | 26 | public event PropertyChangedEventHandler PropertyChanged; 27 | 28 | protected void RaisePropertyChangedEvent([CallerMemberName] string name = null) 29 | { 30 | if (name != null) 31 | { 32 | PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); 33 | } 34 | } 35 | 36 | protected void SetProperty(ref TProperty property, TProperty value, [CallerMemberName] string name = null) 37 | { 38 | if (property == null ? value != null : !property.Equals(value)) 39 | { 40 | property = value; 41 | RaisePropertyChangedEvent(name); 42 | } 43 | } 44 | 45 | public MDNSDeviceData(IZeroconfHost host) : this(host.DisplayName, host.IPAddress, host.Services.FirstOrDefault().Value.Port) { } 46 | 47 | public Task SetConnectingDevice(bool value, CoreDispatcher dispatcher) => dispatcher.AwaitableRunAsync(() => ConnectingDevice = value); 48 | 49 | public override string ToString() => $"{Name} - {Host}"; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Models/UpdateInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text.Json.Serialization; 3 | 4 | namespace APKInstaller.Models 5 | { 6 | public class UpdateInfo 7 | { 8 | [JsonPropertyName("url")] 9 | public string ApiUrl { get; set; } 10 | [JsonPropertyName("html_url")] 11 | public string ReleaseUrl { get; set; } 12 | [JsonPropertyName("tag_name")] 13 | public string TagName { get; set; } 14 | [JsonPropertyName("prerelease")] 15 | public bool IsPreRelease { get; set; } 16 | [JsonPropertyName("created_at")] 17 | public DateTimeOffset CreatedAt { get; set; } 18 | [JsonPropertyName("published_at")] 19 | public DateTimeOffset PublishedAt { get; set; } 20 | [JsonPropertyName("assets")] 21 | public Asset[] Assets { get; set; } 22 | [JsonPropertyName("body")] 23 | public string Changelog { get; set; } 24 | [JsonIgnore] 25 | public bool IsExistNewVersion { get; set; } 26 | [JsonIgnore] 27 | public SystemVersionInfo Version { get; set; } 28 | } 29 | 30 | public class Asset 31 | { 32 | [JsonPropertyName("url")] 33 | public string Url { get; set; } 34 | [JsonPropertyName("name")] 35 | public string Name { get; set; } 36 | [JsonPropertyName("size")] 37 | public long Size { get; set; } 38 | [JsonPropertyName("download_count")] 39 | public long DownloadCount { get; set; } 40 | [JsonPropertyName("created_at")] 41 | public DateTimeOffset CreatedAt { get; set; } 42 | [JsonPropertyName("updated_at")] 43 | public DateTimeOffset UpdatedAt { get; set; } 44 | [JsonPropertyName("browser_download_url")] 45 | public string DownloadUrl { get; set; } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | // 有关程序集的一般信息由以下 5 | // 控制。更改这些特性值可修改 6 | // 与程序集关联的信息。 7 | [assembly: AssemblyTitle("APKInstaller")] 8 | [assembly: AssemblyDescription("An Android Application Installer for Windows")] 9 | [assembly: AssemblyConfiguration("")] 10 | [assembly: AssemblyCompany("")] 11 | [assembly: AssemblyProduct("APKInstaller")] 12 | [assembly: AssemblyCopyright("Copyright © 2017 - 2025 PavingBase. All rights reserved.")] 13 | [assembly: AssemblyTrademark("")] 14 | [assembly: AssemblyCulture("")] 15 | 16 | // 程序集的版本信息由下列四个值组成: 17 | // 18 | // 主版本 19 | // 次版本 20 | // 生成号 21 | // 修订号 22 | // 23 | //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 24 | //通过使用 "*",如下所示: 25 | // [assembly: AssemblyVersion("1.0.*")] 26 | [assembly: AssemblyVersion("0.0.4.0")] 27 | [assembly: AssemblyFileVersion("0.0.4.0")] 28 | [assembly: ComVisible(false)] -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Properties/Default.rd.xml: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | 20 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Styles/TextBlock.xaml: -------------------------------------------------------------------------------- 1 |  2 | 14 | 12 15 | 19 | 20 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Themes/Color.xaml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 1 5 | 6 | 7 | 8 | 9 | 10 | 1 11 | 12 | 13 | 14 | 15 | 16 | 2 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Themes/CustomStyles.xaml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 240 12 | ^(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])(\.(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])){3}(:([0-9]|[1-9]\d|[1-9]\d{2}|[1-9]\d{3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5]))?$ 13 | 14 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/Themes/Generic.xaml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /APKInstaller/APKInstaller/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/APKInstaller/APKInstaller/favicon.ico -------------------------------------------------------------------------------- /APKInstaller/Zeroconf/Common/AsyncLock.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.Runtime.CompilerServices; 4 | using System.Threading; 5 | using System.Threading.Tasks; 6 | 7 | namespace Zeroconf.Common 8 | { 9 | internal class AsyncLock 10 | { 11 | private readonly SemaphoreSlim m_semaphore; 12 | private readonly Task m_releaser; 13 | 14 | public AsyncLock() 15 | { 16 | m_semaphore = new SemaphoreSlim(1); 17 | m_releaser = Task.FromResult(new Releaser(this)); 18 | } 19 | 20 | public Task LockAsync([CallerMemberName] string callingMethod = null, [CallerFilePath] string path = null, [CallerLineNumber] int line = 0) 21 | { 22 | Debug.WriteLine("AsyncLock.LockAsync called by: {0} in file: {1} : {2}", callingMethod, path, line); 23 | 24 | Task wait = m_semaphore.WaitAsync(); 25 | 26 | return wait.IsCompleted ? 27 | m_releaser : 28 | wait.ContinueWith((_, state) => new Releaser((AsyncLock)state), 29 | this, CancellationToken.None, 30 | TaskContinuationOptions.ExecuteSynchronously, TaskScheduler.Default); 31 | } 32 | 33 | public readonly struct Releaser : IDisposable 34 | { 35 | private readonly AsyncLock m_toRelease; 36 | 37 | internal Releaser(AsyncLock toRelease) => m_toRelease = toRelease; 38 | 39 | public void Dispose() => m_toRelease?.m_semaphore.Release(); 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /APKInstaller/Zeroconf/Common/NullDisposable.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Zeroconf.Common 4 | { 5 | internal readonly struct NullDisposable : IDisposable 6 | { 7 | public void Dispose() { } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /APKInstaller/Zeroconf/Common/Stringable.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Windows.Foundation; 3 | 4 | namespace Zeroconf.Common 5 | { 6 | internal readonly struct Stringable(Func toString) : IStringable 7 | { 8 | public override string ToString() => toString(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /APKInstaller/Zeroconf/DNS/Record.cs: -------------------------------------------------------------------------------- 1 | // Stuff records are made of 2 | 3 | namespace Zeroconf.DNS 4 | { 5 | internal abstract class Record 6 | { 7 | /// 8 | /// The Resource Record this RDATA record belongs to 9 | /// 10 | public RR RR; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /APKInstaller/Zeroconf/DNS/RecordA.cs: -------------------------------------------------------------------------------- 1 | #region A RDATA format 2 | /* 3 | 3.4.1. A RDATA format 4 | 5 | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 6 | | ADDRESS | 7 | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 8 | 9 | where: 10 | 11 | ADDRESS A 32 bit Internet address. 12 | 13 | Hosts that have multiple Internet addresses will have multiple A 14 | records. 15 | * 16 | */ 17 | #endregion 18 | 19 | namespace Zeroconf.DNS 20 | { 21 | internal class RecordA(RecordReader rr) : Record 22 | { 23 | public string Address = 24 | string.Format("{0}.{1}.{2}.{3}", 25 | rr.ReadByte(), 26 | rr.ReadByte(), 27 | rr.ReadByte(), 28 | rr.ReadByte()); 29 | 30 | public override string ToString() => Address; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /APKInstaller/Zeroconf/DNS/RecordAAAA.cs: -------------------------------------------------------------------------------- 1 | #region AAAA data format 2 | /* 3 | 2.2 AAAA data format 4 | 5 | A 128 bit IPv6 address is encoded in the data portion of an AAAA 6 | resource record in network byte order (high-order byte first). 7 | */ 8 | #endregion 9 | 10 | namespace Zeroconf.DNS 11 | { 12 | internal class RecordAAAA(RecordReader rr) : Record 13 | { 14 | public string Address = 15 | string.Format("{0:x}:{1:x}:{2:x}:{3:x}:{4:x}:{5:x}:{6:x}:{7:x}", 16 | rr.ReadUInt16(), 17 | rr.ReadUInt16(), 18 | rr.ReadUInt16(), 19 | rr.ReadUInt16(), 20 | rr.ReadUInt16(), 21 | rr.ReadUInt16(), 22 | rr.ReadUInt16(), 23 | rr.ReadUInt16()); 24 | 25 | public override string ToString() => Address.ToString(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /APKInstaller/Zeroconf/DNS/RecordNSEC.cs: -------------------------------------------------------------------------------- 1 | namespace Zeroconf.DNS 2 | { 3 | internal class RecordNSEC : Record 4 | { 5 | public byte[] RDATA; 6 | 7 | public RecordNSEC(RecordReader rr) 8 | { 9 | // re-read length 10 | ushort RDLENGTH = rr.ReadUInt16(-2); 11 | 12 | RDATA = rr.ReadBytes(RDLENGTH); 13 | } 14 | 15 | public override string ToString() => string.Format("not-used"); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /APKInstaller/Zeroconf/DNS/RecordPTR.cs: -------------------------------------------------------------------------------- 1 | #region PTR RDATA format 2 | /* 3 | 3.3.12. PTR RDATA format 4 | 5 | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 6 | / PTRDNAME / 7 | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 8 | 9 | where: 10 | 11 | PTRDNAME A which points to some location in the 12 | domain name space. 13 | 14 | PTR records cause no additional section processing. These RRs are used 15 | in special domains to point to some other location in the domain space. 16 | These records are simple data, and don't imply any special processing 17 | similar to that performed by CNAME, which identifies aliases. See the 18 | description of the IN-ADDR.ARPA domain for an example. 19 | */ 20 | #endregion 21 | 22 | namespace Zeroconf.DNS 23 | { 24 | internal class RecordPTR(RecordReader rr) : Record 25 | { 26 | public string PTRDNAME = rr.ReadDomainName(); 27 | 28 | public override string ToString() => PTRDNAME; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /APKInstaller/Zeroconf/DNS/RecordTXT.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Text; 3 | 4 | #region TXT RDATA format 5 | /* 6 | 3.3.14. TXT RDATA format 7 | 8 | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 9 | / TXT-DATA / 10 | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 11 | 12 | where: 13 | 14 | TXT-DATA One or more s. 15 | 16 | TXT RRs are used to hold descriptive text. The semantics of the text 17 | depends on the domain where it is found. 18 | * 19 | */ 20 | #endregion 21 | 22 | namespace Zeroconf.DNS 23 | { 24 | internal class RecordTXT : Record 25 | { 26 | public List TXT; 27 | 28 | public RecordTXT(RecordReader rr, int Length) 29 | { 30 | int pos = rr.Position; 31 | TXT = []; 32 | while ( 33 | ((rr.Position - pos) < Length) && 34 | (rr.Position < rr.Length) 35 | ) 36 | { 37 | TXT.Add(rr.ReadString()); 38 | } 39 | } 40 | 41 | public override string ToString() 42 | { 43 | StringBuilder sb = new(); 44 | foreach (string txt in TXT) 45 | { 46 | sb.AppendFormat("\"{0}\" ", txt); 47 | } 48 | 49 | return sb.ToString().TrimEnd(); 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /APKInstaller/Zeroconf/DNS/RecordUnknown.cs: -------------------------------------------------------------------------------- 1 | namespace Zeroconf.DNS 2 | { 3 | internal class RecordUnknown : Record 4 | { 5 | public byte[] RDATA; 6 | public RecordUnknown(RecordReader rr) 7 | { 8 | // re-read length 9 | ushort RDLENGTH = rr.ReadUInt16(-2); 10 | RDATA = rr.ReadBytes(RDLENGTH); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /APKInstaller/Zeroconf/DNS/Request.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Zeroconf.DNS 4 | { 5 | internal class Request 6 | { 7 | public Header header; 8 | private readonly List questions; 9 | 10 | public Request() 11 | { 12 | header = new Header 13 | { 14 | OPCODE = OPCode.Query, 15 | QDCOUNT = 0 16 | }; 17 | 18 | questions = []; 19 | } 20 | 21 | public void AddQuestion(Question question) => 22 | questions.Add(question); 23 | 24 | public void AddQuestions(IEnumerable question) => 25 | questions.AddRange(question); 26 | 27 | public byte[] Data 28 | { 29 | get 30 | { 31 | List data = []; 32 | header.QDCOUNT = (ushort)questions.Count; 33 | data.AddRange(header.Data); 34 | foreach (Question q in questions) 35 | { 36 | data.AddRange(q.Data); 37 | } 38 | 39 | return [.. data]; 40 | } 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /APKInstaller/Zeroconf/Interfaces/INetworkInterface.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Net; 4 | using System.Threading; 5 | using System.Threading.Tasks; 6 | using Zeroconf.Models; 7 | 8 | namespace Zeroconf.Interfaces 9 | { 10 | internal interface INetworkInterface 11 | { 12 | Task NetworkRequestAsync( 13 | byte[] requestBytes, 14 | TimeSpan scanTime, 15 | int retries, 16 | int retryDelayMilliseconds, 17 | Action onResponse, 18 | CancellationToken cancellationToken, 19 | IEnumerable netInterfacesToSendRequestOn); 20 | 21 | Task ListenForAnnouncementsAsync(Action callback, CancellationToken cancellationToken); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /APKInstaller/Zeroconf/Interfaces/IService.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Zeroconf.Interfaces 4 | { 5 | /// 6 | /// Represents a service provided by a host 7 | /// 8 | public interface IService 9 | { 10 | /// 11 | /// This is the name retrieved from the PTR record e.g. _http._tcp.local. 12 | /// 13 | string Name { get; } 14 | 15 | /// 16 | /// This is the name retrieved from the SRV record e.g. myserver._http._tcp.local. 17 | /// 18 | string ServiceName { get; } 19 | 20 | /// 21 | /// Port 22 | /// 23 | int Port { get; } 24 | 25 | /// 26 | /// Time-to-live 27 | /// 28 | int Ttl { get; } 29 | 30 | /// 31 | /// Properties of the object. Most services have a single set of properties, but some service may return multiple sets of properties 32 | /// 33 | IReadOnlyList> Properties { get; } 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /APKInstaller/Zeroconf/Interfaces/IZeroconfHost.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Zeroconf.Interfaces 4 | { 5 | /// 6 | /// A ZeroConf record response 7 | /// 8 | public interface IZeroconfHost 9 | { 10 | /// 11 | /// Name 12 | /// 13 | string DisplayName { get; } 14 | 15 | /// 16 | /// Id, possibly different than the Name 17 | /// 18 | string Id { get; } 19 | 20 | /// 21 | /// IP Address (alias for IPAddresses.First()) 22 | /// 23 | string IPAddress { get; } 24 | 25 | /// 26 | /// IP Addresses 27 | /// 28 | IReadOnlyList IPAddresses { get; } 29 | 30 | 31 | /// 32 | /// Services offered by this host (based on services queried for) 33 | /// 34 | IReadOnlyDictionary Services { get; } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /APKInstaller/Zeroconf/Models/AdapterInformation.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Zeroconf.Models 4 | { 5 | public readonly struct AdapterInformation(string address, string name) : IEquatable 6 | { 7 | public string Address { get; } = address; 8 | public string Name { get; } = name; 9 | 10 | public void Deconstruct(out string address, out string name) 11 | { 12 | address = Address; 13 | name = Name; 14 | } 15 | 16 | public bool Equals(AdapterInformation other) => 17 | string.Equals(Address, other.Address) && string.Equals(Name, other.Name); 18 | 19 | public override bool Equals(object obj) => 20 | obj is not null && obj is AdapterInformation information && Equals(information); 21 | 22 | public override int GetHashCode() 23 | { 24 | unchecked 25 | { 26 | return ((Address != null ? Address.GetHashCode() : 0) * 397) ^ (Name != null ? Name.GetHashCode() : 0); 27 | } 28 | } 29 | 30 | public static bool operator ==(AdapterInformation left, AdapterInformation right) => left.Equals(right); 31 | 32 | public static bool operator !=(AdapterInformation left, AdapterInformation right) => !left.Equals(right); 33 | 34 | public override string ToString() => $"{Name}: {Address}"; 35 | } 36 | } -------------------------------------------------------------------------------- /APKInstaller/Zeroconf/Models/DomainService.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Zeroconf.Models 4 | { 5 | public readonly struct DomainService(string domain, string service) : IEquatable 6 | { 7 | public string Domain { get; } = domain; 8 | public string Service { get; } = service; 9 | 10 | public void Deconstruct(out string domain, out string service) 11 | { 12 | domain = Domain; 13 | service = Service; 14 | } 15 | 16 | public bool Equals(DomainService other) => 17 | string.Equals(Domain, other.Domain) && string.Equals(Service, other.Service); 18 | 19 | public override bool Equals(object obj) => 20 | obj is not null && obj is DomainService service && Equals(service); 21 | 22 | public override int GetHashCode() 23 | { 24 | unchecked 25 | { 26 | return ((Domain != null ? Domain.GetHashCode() : 0) * 397) ^ (Service != null ? Service.GetHashCode() : 0); 27 | } 28 | } 29 | 30 | public static bool operator ==(DomainService left, DomainService right) => left.Equals(right); 31 | 32 | public static bool operator !=(DomainService left, DomainService right) => !left.Equals(right); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /APKInstaller/Zeroconf/Models/Service.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using Zeroconf.Interfaces; 5 | 6 | namespace Zeroconf.Models 7 | { 8 | internal class Service : IService 9 | { 10 | private readonly List> properties = []; 11 | 12 | public string Name { get; set; } 13 | public string ServiceName { get; set; } 14 | public int Port { get; set; } 15 | public int Ttl { get; set; } 16 | 17 | public IReadOnlyList> Properties => properties; 18 | 19 | public override string ToString() 20 | { 21 | StringBuilder sb = new(); 22 | 23 | sb.Append($"\t| Service: {Name}\n\t| ServiceName: {ServiceName}\n\t| Port: {Port}\n\t| TTL: {Ttl}\n\t| PropertySets: {properties.Count}"); 24 | 25 | if (properties.Count > 0) 26 | { 27 | sb.AppendLine(); 28 | for (int i = 0; i < properties.Count; i++) 29 | { 30 | sb.AppendLine("\t\t| -------------------"); 31 | sb.Append($"\t\t| Property Set #{i}"); 32 | sb.AppendLine(); 33 | sb.AppendLine("\t\t| -------------------"); 34 | 35 | foreach (KeyValuePair kvp in properties[i]) 36 | { 37 | sb.AppendLine($"\t\t| {kvp.Key} = {kvp.Value}"); 38 | } 39 | sb.Append("\t\t| -------------------"); 40 | } 41 | } 42 | 43 | return sb.ToString(); 44 | } 45 | 46 | internal void AddPropertySet(IReadOnlyDictionary set) 47 | { 48 | if (set == null) 49 | { 50 | throw new ArgumentNullException(nameof(set)); 51 | } 52 | 53 | properties.Add(set); 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /APKInstaller/Zeroconf/Models/ServiceAnnouncement.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Zeroconf.Interfaces; 3 | 4 | namespace Zeroconf.Models 5 | { 6 | public readonly struct ServiceAnnouncement(AdapterInformation adapterInformation, IZeroconfHost host) : IEquatable 7 | { 8 | public AdapterInformation AdapterInformation { get; } = adapterInformation; 9 | public IZeroconfHost Host { get; } = host ?? throw new ArgumentNullException(nameof(host)); 10 | 11 | public void Deconstruct(out AdapterInformation adapterInformation, out IZeroconfHost host) 12 | { 13 | adapterInformation = AdapterInformation; 14 | host = Host; 15 | } 16 | 17 | public bool Equals(ServiceAnnouncement other) => 18 | AdapterInformation.Equals(other.AdapterInformation) && Equals(Host, other.Host); 19 | 20 | public override bool Equals(object obj) => 21 | obj is not null && obj is ServiceAnnouncement announcement && Equals(announcement); 22 | 23 | public override int GetHashCode() 24 | { 25 | unchecked 26 | { 27 | return (AdapterInformation.GetHashCode() * 397) ^ (Host != null ? Host.GetHashCode() : 0); 28 | } 29 | } 30 | 31 | public static bool operator ==(ServiceAnnouncement left, ServiceAnnouncement right) => left.Equals(right); 32 | 33 | public static bool operator !=(ServiceAnnouncement left, ServiceAnnouncement right) => !left.Equals(right); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /APKInstaller/Zeroconf/Models/ZeroconfOptions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace Zeroconf.Models 5 | { 6 | public enum ScanQueryType 7 | { 8 | Ptr, 9 | Any 10 | } 11 | 12 | public abstract class ZeroconfOptions 13 | { 14 | private int retries; 15 | 16 | public TimeSpan ScanTime { get; set; } 17 | public TimeSpan RetryDelay { get; set; } 18 | 19 | public IEnumerable Protocols { get; } 20 | 21 | public bool AllowOverlappedQueries { get; set; } 22 | 23 | public ScanQueryType ScanQueryType { get; set; } 24 | 25 | public int Retries 26 | { 27 | get => retries; 28 | set => retries = value < 0 ? throw new ArgumentOutOfRangeException(nameof(value)) : value; 29 | } 30 | 31 | protected ZeroconfOptions(string protocol) : this(new[] { protocol }) 32 | { 33 | } 34 | 35 | protected ZeroconfOptions(IEnumerable protocols) 36 | { 37 | Protocols = new HashSet(protocols 38 | ?? throw new ArgumentNullException(nameof(protocols)), StringComparer.OrdinalIgnoreCase); 39 | Retries = 2; 40 | RetryDelay = TimeSpan.FromSeconds(2); 41 | ScanTime = TimeSpan.FromSeconds(2); 42 | ScanQueryType = ScanQueryType.Ptr; 43 | } 44 | 45 | } 46 | 47 | public class BrowseDomainsOptions() : ZeroconfOptions("_services._dns-sd._udp.local."); 48 | 49 | public class ResolveOptions : ZeroconfOptions 50 | { 51 | public ResolveOptions(string protocol) : base(protocol) 52 | { 53 | } 54 | 55 | public ResolveOptions(IEnumerable protocols) : base(protocols) 56 | { 57 | } 58 | } 59 | } -------------------------------------------------------------------------------- /APKInstaller/Zeroconf/Zeroconf.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 6.2.14 5 | latest 6 | uap10.0 7 | 10.0.17763.0 8 | 10.0.22621.0 9 | 10 | 11 | 12 | 13 | runtime; build; native; contentfiles; analyzers; buildtransitive 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /APKInstaller/Zeroconf/ZeroconfResolver.Listener.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace Zeroconf 5 | { 6 | public static partial class ZeroconfResolver 7 | { 8 | public static ResolverListener CreateListener( 9 | IEnumerable protocols, 10 | int queryInterval = 4000, 11 | int pingsUntilRemove = 2, 12 | TimeSpan scanTime = default, 13 | int retries = 2, 14 | int retryDelayMilliseconds = 2000) => 15 | new(protocols, queryInterval, pingsUntilRemove, scanTime, retries, retryDelayMilliseconds); 16 | 17 | public static ResolverListener CreateListener( 18 | string protocol, 19 | int queryInterval = 4000, 20 | int pingsUntilRemove = 2, 21 | TimeSpan scanTime = default, 22 | int retries = 2, 23 | int retryDelayMilliseconds = 2000) => 24 | CreateListener([protocol], queryInterval, pingsUntilRemove, scanTime, retries, retryDelayMilliseconds); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /About.md: -------------------------------------------------------------------------------- 1 | #### 欢迎使用 APK 安装程序! 2 | 3 | ##### 声明 4 | 1. 请遵守 [APK Installer 最终用户许可协议与隐私条款](https://github.com/Paving-Base/APK-Installer-UWP/blob/main/Privacy.md)。 5 | 2. 本程序是开源软件,因此,在使用时请确保程序是来自[本 Github 仓库](https://github.com/Paving-Base/APK-Installer-UWP)或应用商店中的[本应用](https://www.microsoft.com/store/apps/9NSHFKJ1D4BF),以确保您的数据安全。 6 | 3. 若程序来源无异常,程序运行过程中您的所有数据都仅用于与程序运行或储存于本地,开发者不会窃取您的任何数据。但即便如此,也请注意使用环境的安全性。 7 | 4. 本应用文本翻译来自 [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") 社区,所有文本均不代表作者观点。 8 | 9 | ##### 翻译 10 | 感谢 [Crowdin](https://crowdin.com/project/APKInstaller "Crowdin") 翻译者的支持,如果翻译出现了什么问题,欢迎前来纠正。 11 | 12 | 已翻译:[![Crowdin](https://badges.crowdin.net/APKInstaller/localized.svg)](https://crowdin.com/project/APKInstaller "Crowdin") 13 | 14 | ##### 参与人员 15 | [![Contributors](https://contrib.rocks/image?repo=Paving-Base/APK-Installer-UWP)](https://github.com/Paving-Base/APK-Installer-UWP/graphs/contributors) 16 | 17 | ##### 引用及参考 18 | - [MetroLog](https://github.com/novotnyllc/MetroLog "MetroLog") 19 | - [Windows UI](https://github.com/microsoft/microsoft-ui-xaml "Windows UI") 20 | - [Downloader](https://github.com/bezzad/Downloader "Downloader") 21 | - [AAPTForNet](https://github.com/canheo136/QuickLook.Plugin.ApkViewer "AAPTForNet") 22 | - [Sharp Compress](https://github.com/adamhathcock/sharpcompress "Sharp Compress") 23 | - [Advanced Sharp Adb Client](https://github.com/yungd1plomat/AdvancedSharpAdbClient "Advanced Sharp Adb Client") 24 | - [Windows Community Toolkit](https://github.com/CommunityToolkit/WindowsCommunityToolkit "Windows Community Toolkit") -------------------------------------------------------------------------------- /Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | True 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Images/Guides/Snipaste_2019-10-12_22-46-37.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/Images/Guides/Snipaste_2019-10-12_22-46-37.png -------------------------------------------------------------------------------- /Images/Guides/Snipaste_2019-10-12_22-49-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/Images/Guides/Snipaste_2019-10-12_22-49-11.png -------------------------------------------------------------------------------- /Images/Guides/Snipaste_2019-10-13_12-42-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/Images/Guides/Snipaste_2019-10-13_12-42-40.png -------------------------------------------------------------------------------- /Images/Guides/Snipaste_2019-10-13_15-51-33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/Images/Guides/Snipaste_2019-10-13_15-51-33.png -------------------------------------------------------------------------------- /Images/Guides/Snipaste_2019-10-13_16-01-09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/Images/Guides/Snipaste_2019-10-13_16-01-09.png -------------------------------------------------------------------------------- /Images/Guides/Snipaste_2019-10-19_15-28-58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/Images/Guides/Snipaste_2019-10-19_15-28-58.png -------------------------------------------------------------------------------- /Images/Guides/Snipaste_2019-10-20_23-36-44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/Images/Guides/Snipaste_2019-10-20_23-36-44.png -------------------------------------------------------------------------------- /Images/Guides/Snipaste_2021-03-05_22-26-31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/Images/Guides/Snipaste_2021-03-05_22-26-31.png -------------------------------------------------------------------------------- /Images/Screenshots/Snipaste_2022-03-08_19-06-34.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/Images/Screenshots/Snipaste_2022-03-08_19-06-34.png -------------------------------------------------------------------------------- /Privacy.md: -------------------------------------------------------------------------------- 1 | # APK Installer 最终用户许可协议与隐私条款 2 | 3 | *版本 1.0 (2022.2.6)* 4 | 5 | 请您务必仔细阅读和理解 APK Installer 最终用户许可协议(以下简称「本协议」或「此协议」)与隐私条款。在开始之前,您需要决定是否同意本协议与隐私条款。除非您理解并接受此协议与隐私条款,否则此软件不得在您的任何终端上安装或使用。 6 | 7 | 您一旦同意此协议与隐私条款,就表明您同意接受本协议与隐私条款的所有约束。如您不同意此协议与隐私条款,您应当立即停止使用并卸载此软件。 8 | 9 | ## 您可以 10 | 11 | - 在一台个人所有的终端上安装、使用、运行本软件的一份副本。本软件仅供个人所有终端使用,不得用于法人或其他组织(包括但不限于政府机关、公司、企事业单位和其他组织,无论该组织是否为经济性组织,无论该组织的使用是否构成商业目的)所有终端。如若个人所有终端长期固定为法人或其他组织服务,则将被视为「法人或其他组织所有终端」。任何超出上述授权范围的使用均被视为非法复制的盗版行为,本软件作者保留权利要求相关责任人承担相应的法律责任,包括但不限于民事责任、行政责任、刑事责任。 12 | - 为了防止副本损坏而制作备份复制品。这些备份复制品不得通过任何方式提供给他人使用,且在您丧失该合法副本的所有权时,有义务将备份复制品销毁。 13 | - 为了把本软件用于实际的终端环境或者改进其功能、性能而进行必要的修改。但是,除本协议另有约定外,未经本软件作者书面同意,不得向第三方以任何形式提供修改后的软件。 14 | - 对本软件进行以学习目的的反向工程、反向编译、反汇编或其他获得本软件源代码、运行逻辑的行为。(显然,在 Github 获取本软件的全部源代码是一种更为明智的行为) 15 | 16 | ## 您保证 17 | 18 | - 不得出售、贩发出租或以其他方式传播本软件以获利。 19 | - 不得以任何方式商用本软件,包括但不限于使用本软件发送广告或出售、二次贩卖、发行、出租本软件。 20 | - 在本软件的所有副本上包含所有的版权标识与许可证。 21 | 22 | ## 权利的保留 23 | 24 | - 未明示授予的一切权利均为本软件作者所有。 25 | - 最终解释权归本软件作者所有。 26 | 27 | ## 本软件的著作权 28 | 29 | - 您不得去掉本软件上的任何版权标识,并应在其所有复制品上依照现有的表述方式标注其版权归属本软件作者。 30 | - 本软件(包括但不限于本软件中所含的任何代码、图像、动画、视频、音乐、文字和附加程序)、随附的印刷材料、宣传材料及任何副本的著作权,均由本软件作者拥有。 31 | - 您不可以从本软件中去掉版权声明,并保证为本软件的复制品(全部或部分)复制版权声明。 32 | 33 | ## 免责声明 34 | 35 | - 用户在下载或使用本软件时均被视为已经仔细阅读本协议并完全同意。凡以任何方式激活本软件,或以任何方式(包括但不限于直接、间接)使用本软件,均被视为自愿接受相关声明和用户许可的约束。 36 | - 本软件仅供用户做测试或娱乐使用,不得用于非法用途;一切自行用于其它用途的用户,不软件概不承担任何责任。 37 | - 用户使用本软件的过程中,如果侵犯了第三方知识产权或其他权利,责任由使用人本人承担,本软件对此不承担任何责任。 38 | - 用户明确并同意其使用本软件所存在的风险将完全由其本人承担,因其实用软件而产生的一切后果也由其本人承担,本软件对此不承担任何责任。 39 | - 除本软件注明的条款外,其它因不当使用本软件而导致的任何意外、疏忽、合约损坏、诽谤、版权或其他知识产权侵犯及其所造成的任何损失,本软件概不负责,亦不承担任何责任。 40 | - 对于因不可抗力、黑客攻击、通讯线路中断等本软件不能控制的原因或其他缺陷,导致用户不能正常使用本软件的,本软件不承担任何责任。 41 | - 本软件未涉及的问题请参见国家有关法律法规,当本声明与国家有关法律法规冲突时,以国家法律为准。 42 | 43 | ## 隐私保护政策与条款 44 | 45 | 首先感谢您使用本应用!本应用非常重视用户的隐私,将保护用户隐私视为基本原则并将其贯彻到底。 46 | 47 | ### 本应用会收集哪些信息? 48 | 49 | #### 我们的合作伙伴可能会收集你的一些数据 50 | 51 | 本应用使用了 Microsoft AppCenter 来统计或收集月活量、崩溃数据和用户信息等指标。具体会收集哪些信息请参阅:[《Microsoft Privacy Statement》](https://privacy.microsoft.com/en-us/privacystatement)。 52 | 53 | ### 本应用如何使用您的信息? 54 | 55 | - 向您提供服务。在我们提供服务时,用于身份验证、客户服务、安全防范、诈骗监测、存档和备份用途,确保我们向您提供的产品和服务的安全性。 56 | - 帮我们设计新服务,改善我们的现有服务。 57 | - 使我们更加了解您如何使用我们的服务,从而针对性地回应您的个性化需求。例如个性化的帮助服务和提示,或对您和其他用户做出其他方面的回应。 58 | - 软件认证和管理软件升级。 59 | - 让您参与有关我们产品和服务的调查。 60 | 61 | ### 本应用如何分享您的信息? 62 | 63 | 除以下情形外,未经您同意,我们不会与任何第三方分享您的个人信息: 64 | 65 | - 您授权或同意本应用披露的。 66 | - 遵守适用的法律法规。 67 | - 遵守法院命令或其他法律程序的规定。 68 | - 遵守适用的法律法规以维护社会公共利益。 69 | - 本软件各服务条款条款、许可协议及声明中的相关规定。 70 | 71 | ### 本应用任何保护您的隐私? 72 | 73 | 这款应用采用 TLS (传输层安全性协议) 技术来尽可能保证您的数据在与服务器通信的过程中不被第三方窃听或攻击。 74 | 75 | # **特别提醒** 76 | # **本软件始终是免费软件且授权非商业使用,如果你发现有人商用本软件或以此牟取利润,请拒绝并不遗余力地在一切平台举报投诉他!** 77 | -------------------------------------------------------------------------------- /azure-pipelines.yml: -------------------------------------------------------------------------------- 1 | # Universal Windows Platform 2 | # Build a Universal Windows Platform project using Visual Studio. 3 | # Add steps that test and distribute an app, save build artifacts, and more: 4 | # https://aka.ms/yaml 5 | 6 | trigger: 7 | branches: 8 | include: 9 | - main 10 | - perview 11 | paths: 12 | include: 13 | - APKInstaller/** 14 | 15 | pr: 16 | branches: 17 | include: 18 | - main 19 | - perview 20 | paths: 21 | include: 22 | - APKInstaller/** 23 | 24 | pool: 25 | vmImage: 'windows-latest' 26 | 27 | variables: 28 | solution: '*.sln' 29 | buildProject: '**/APKInstaller.Package/*.wapproj' 30 | buildPlatform: 'x86|x64|ARM|ARM64' 31 | buildConfiguration: 'Release' 32 | appxPackageDir: '$(build.artifactStagingDirectory)\AppxPackages\\' 33 | 34 | steps: 35 | - task: DownloadSecureFile@1 36 | name: signingCert 37 | displayName: 'Download CA certificate' 38 | inputs: 39 | secureFile: 'where.pfx' 40 | 41 | - task: VSBuild@1 42 | displayName: 'Restore Solution' 43 | inputs: 44 | platform: 'x64' 45 | solution: '$(solution)' 46 | configuration: '$(buildConfiguration)' 47 | msbuildArgs: '/t:restore' 48 | msbuildArchitecture: 'x64' 49 | maximumCpuCount: true 50 | 51 | - task: NuGetCommand@2 52 | displayName: 'NuGet Restore' 53 | inputs: 54 | restoreSolution: '$(solution)' 55 | 56 | - task: VSBuild@1 57 | displayName: 'Build Solution' 58 | inputs: 59 | platform: 'x64' 60 | solution: '$(buildProject)' 61 | configuration: '$(buildConfiguration)' 62 | msbuildArgs: '/p:AppxBundlePlatforms="$(buildPlatform)" 63 | /p:AppxPackageDir="$(appxPackageDir)" 64 | /p:AppxBundle=Always 65 | /p:UapAppxPackageBuildMode=SideloadOnly 66 | /p:AppxPackageSigningEnabled=true 67 | /p:PackageCertificateThumbprint="0CDF4A03E9BE9DD789894BB3C7AD3DEDECD9AB25" 68 | /p:PackageCertificateKeyFile="$(signingCert.secureFilePath)" 69 | /p:PackageCertificatePassword="$(Password)"' 70 | msbuildArchitecture: 'x64' 71 | maximumCpuCount: true 72 | 73 | - task: PublishBuildArtifacts@1 74 | displayName: 'Publish Artifact' 75 | inputs: 76 | ArtifactName: 'MSIX Package' 77 | PathtoPublish: '$(build.artifactstagingdirectory)' -------------------------------------------------------------------------------- /global.json: -------------------------------------------------------------------------------- 1 | { 2 | "msbuild-sdks": { 3 | "MSBuild.Sdk.Extras": "3.0.44" 4 | } 5 | } -------------------------------------------------------------------------------- /logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Paving-Base/APK-Installer-UWP/dbd5e8d0377b277cb0e63d927151614ffafe8997/logo.png --------------------------------------------------------------------------------