Ejemplo n.º 1
0
        private void InvokeLaunch(Version v)
        {
            if (_hasLaunchTask)
            {
                return;
            }
            _hasLaunchTask = true;
            Task.Run(async() => {
                string gameDir = Path.GetFullPath(v.GameDirectory);
                try {
                    await ReRegisterPackage(gameDir);
                } catch (Exception e) {
                    Debug.WriteLine("App re-register failed:\n" + e.ToString());
                    MessageBox.Show("App re-register failed:\n" + e.ToString());
                    _hasLaunchTask = false;
                    return;
                }

                try {
                    var pkg = await AppDiagnosticInfo.RequestInfoForPackageAsync(MINECRAFT_PACKAGE_FAMILY);
                    if (pkg.Count > 0)
                    {
                        await pkg[0].LaunchAsync();
                    }
                    Debug.WriteLine("App launch finished!");
                    _hasLaunchTask = false;
                } catch (Exception e) {
                    Debug.WriteLine("App launch failed:\n" + e.ToString());
                    MessageBox.Show("App launch failed:\n" + e.ToString());
                    _hasLaunchTask = false;
                    return;
                }
            });
        }
Ejemplo n.º 2
0
 private async Task<bool> LaunchGame(MCVersion v, bool KeepLauncherOpen)
 {
     try
     {
         ViewModels.LauncherModel.Default.CurrentState = ViewModels.LauncherModel.StateChange.isLaunching;
         var pkg = await AppDiagnosticInfo.RequestInfoForPackageAsync(MINECRAFT_PACKAGE_FAMILY);
         AppActivationResult activationResult = null;
         if (pkg.Count > 0) activationResult = await pkg[0].LaunchAsync();
         System.Diagnostics.Debug.WriteLine("App launch finished!");
         if (KeepLauncherOpen && activationResult != null) GetGameProcess(activationResult);
         if (KeepLauncherOpen == false)
         {
             await Application.Current.Dispatcher.InvokeAsync(() =>
             {
                 Application.Current.MainWindow.Close();
             });
             return true;
         }
         else
         {
             ViewModels.LauncherModel.Default.CurrentState = ViewModels.LauncherModel.StateChange.None;
             return false;
         }
     }
     catch (Exception e)
     {
         ViewModels.LauncherModel.Default.CurrentState = ViewModels.LauncherModel.StateChange.None;
         System.Diagnostics.Debug.WriteLine("App launch failed:\n" + e.ToString());
         ErrorScreenShow.errormsg("Error_AppLaunchFailed_Title", "Error_AppLaunchFailed", e);
         throw e;
     }
 }
        public object Convert(object value, Type targetType, object parameter, string language)
        {
            if (value is PhoneCallHistoryEntry entry)
            {
                try
                {
                    IRandomAccessStream stream;
                    switch (entry.RemoteId)
                    {
                    case string celluarID when celluarID.StartsWith(PhoneLineTransport.Cellular.ToString()):
                        celluarID = celluarID.Split('|')[1];

                        IAsyncOperation <PhoneLine> task0 = PhoneLine.FromIdAsync(Guid.Parse(celluarID));
                        task0.AsTask().Wait();
                        IAsyncOperation <IReadOnlyList <AppListEntry> > task3 = Package.Current.GetAppListEntriesAsync();
                        task3.AsTask().Wait();
                        IAsyncOperation <IRandomAccessStreamWithContentType> task2 = task3.GetResults().First().DisplayInfo.GetLogo(new Size(512, 512)).OpenReadAsync();
                        task2.AsTask().Wait();
                        stream = task2.GetResults();
                        break;

                    case string appID when appID.StartsWith(PhoneLineTransport.VoipApp.ToString()):
                        appID = appID.Split('|')[1];

                        IAsyncOperation <IList <AppDiagnosticInfo> > task1 = AppDiagnosticInfo.RequestInfoForPackageAsync(appID);
                        task1.AsTask().Wait();
                        task2 = task1.GetResults().First().AppInfo.DisplayInfo.GetLogo(new Size(512, 512)).OpenReadAsync();
                        task2.AsTask().Wait();
                        stream = task2.GetResults();
                        break;

                    case string deviceID when deviceID.StartsWith(PhoneLineTransport.Bluetooth.ToString()):
                    //deviceID = deviceID.Split('|')[1];
                    //task0 = PhoneLine.FromIdAsync(Guid.Parse(deviceID));
                    //task0.AsTask().Wait();
                    //IAsyncOperation<DeviceInformation> task3 = DeviceInformation.CreateFromIdAsync(task0.GetResults().TransportDeviceId);
                    //task3.AsTask().Wait();
                    //IAsyncOperation<DeviceThumbnail> task4 = task3.GetResults().GetThumbnailAsync();
                    //task4.AsTask().Wait();
                    //stream = task4.GetResults();
                    //break;
                    default:
                        return(null);
                    }
                    BitmapImage a = new BitmapImage();
                    a.SetSource(stream);
                    return(a);
                }
                catch
                {
                    return(null);
                }
            }
            else
            {
                return(null);
            }
        }
        public object Convert(object value, Type targetType, object parameter, string language)
        {
            if (value is PhoneCallHistoryEntry entry)
            {
                try
                {
                    switch (entry.RemoteId)
                    {
                    case string celluarID when celluarID.StartsWith(PhoneLineTransport.Cellular.ToString()):
                        celluarID = celluarID.Split('|')[1];

                        IAsyncOperation <PhoneLine> task0 = PhoneLine.FromIdAsync(Guid.Parse(celluarID));
                        task0.AsTask().Wait();
                        return(task0.GetResults().NetworkName);

                    case string appID when appID.StartsWith(PhoneLineTransport.VoipApp.ToString()):
                        appID = appID.Split('|')[1];

                        IAsyncOperation <IList <AppDiagnosticInfo> > task1 = AppDiagnosticInfo.RequestInfoForPackageAsync(appID);
                        task1.AsTask().Wait();
                        return(task1.GetResults().First().AppInfo.DisplayInfo.DisplayName);

                    case string deviceID when deviceID.StartsWith(PhoneLineTransport.Bluetooth.ToString()):
                        deviceID = deviceID.Split('|')[1];

                        IAsyncOperation <DeviceInformation> task2 = DeviceInformation.CreateFromIdAsync(deviceID);
                        task2.AsTask().Wait();
                        return(task2.GetResults().Name);

                    default:
                        return(string.Empty);
                    }
                }
                catch
                {
                    return(string.Empty);
                }
            }
            else
            {
                return(string.Empty);
            }
        }
Ejemplo n.º 5
0
        private async Task <bool> LaunchGame(MCVersion v)
        {
            try
            {
                ViewModels.LauncherModel.Default.CurrentState = ViewModels.LauncherModel.StateChange.isLaunching;
                var pkg = await AppDiagnosticInfo.RequestInfoForPackageAsync(MINECRAFT_PACKAGE_FAMILY);

                if (pkg.Count > 0)
                {
                    await pkg[0].LaunchAsync();
                }
                System.Diagnostics.Debug.WriteLine("App launch finished!");
                if (Properties.LauncherSettings.Default.KeepLauncherOpen)
                {
                    GetGameProcess(v);
                }
                if (Properties.LauncherSettings.Default.KeepLauncherOpen == false)
                {
                    await Application.Current.Dispatcher.InvokeAsync(() =>
                    {
                        Application.Current.MainWindow.Close();
                    });

                    return(true);
                }
                else
                {
                    ViewModels.LauncherModel.Default.CurrentState = ViewModels.LauncherModel.StateChange.None;
                    return(false);
                }
            }
            catch (Exception e)
            {
                ViewModels.LauncherModel.Default.CurrentState = ViewModels.LauncherModel.StateChange.None;
                System.Diagnostics.Debug.WriteLine("App launch failed:\n" + e.ToString());
                Application.Current.Dispatcher.Invoke(() =>
                {
                    ErrorScreenShow.errormsg("applauncherror");
                });
                throw e;
            }
        }
 private void InvokeLaunch(Version v)
 {
     if (_hasLaunchTask)
     {
         return;
     }
     _hasLaunchTask = true;
     Task.Run(async() => {
         v.StateChangeInfo = new VersionStateChangeInfo(VersionState.Registering);
         string gameDir    = Path.GetFullPath(v.GameDirectory);
         try {
             await ReRegisterPackage(v.GamePackageFamily, gameDir);
         } catch (Exception e) {
             Debug.WriteLine("App re-register failed:\n" + e.ToString());
             MessageBox.Show("App re-register failed:\n" + e.ToString());
             _hasLaunchTask    = false;
             v.StateChangeInfo = null;
             return;
         }
         v.StateChangeInfo = new VersionStateChangeInfo(VersionState.Launching);
         try {
             var pkg = await AppDiagnosticInfo.RequestInfoForPackageAsync(v.GamePackageFamily);
             if (pkg.Count > 0)
             {
                 await pkg[0].LaunchAsync();
             }
             Debug.WriteLine("App launch finished!");
             _hasLaunchTask    = false;
             v.StateChangeInfo = null;
         } catch (Exception e) {
             Debug.WriteLine("App launch failed:\n" + e.ToString());
             MessageBox.Show("App launch failed:\n" + e.ToString());
             _hasLaunchTask    = false;
             v.StateChangeInfo = null;
             return;
         }
     });
 }
Ejemplo n.º 7
0
        private void InvokeLaunch(Version v)
        {
            if (HasLaunchTask)
            {
                OnGameStateChanged(GameStateArgs.Empty);
                return;
            }
            else
            {
                HasLaunchTask = true;
                OnGameStateChanged(GameStateArgs.Empty);
            }

            Task.Run(async() =>
            {
                SetInstallationDataPath();
                v.StateChangeInfo             = new VersionStateChangeInfo();
                v.StateChangeInfo.IsLaunching = true;
                string gameDir = Path.GetFullPath(v.GameDirectory);
                try
                {
                    await ReRegisterPackage(gameDir);
                }
                catch (Exception e)
                {
                    Debug.WriteLine("App re-register failed:\n" + e.ToString());
                    Application.Current.Dispatcher.Invoke(() =>
                    {
                        ErrorScreenShow.errormsg("appregistererror");
                    });
                    HasLaunchTask = false;
                    OnGameStateChanged(GameStateArgs.Empty);
                    v.StateChangeInfo = null;
                    return;
                }
                try
                {
                    var pkg = await AppDiagnosticInfo.RequestInfoForPackageAsync(MINECRAFT_PACKAGE_FAMILY);
                    if (pkg.Count > 0)
                    {
                        await pkg[0].LaunchAsync();
                    }
                    Debug.WriteLine("App launch finished!");
                    HasLaunchTask = false;
                    OnGameStateChanged(GameStateArgs.Empty);
                    v.StateChangeInfo = null;
                    // close launcher if needed and hide progressbar
                    Application.Current.Dispatcher.Invoke(() => { ConfigManager.MainThread.ProgressBarGrid.Visibility = Visibility.Collapsed; });
                    if (Properties.Settings.Default.KeepLauncherOpen == false)
                    {
                        await Application.Current.Dispatcher.InvokeAsync(() =>
                        {
                            Application.Current.MainWindow.Close();
                        });
                    }
                }
                catch (Exception e)
                {
                    Debug.WriteLine("App launch failed:\n" + e.ToString());
                    Application.Current.Dispatcher.Invoke(() =>
                    {
                        ConfigManager.MainThread.ProgressBarGrid.Visibility = Visibility.Collapsed;
                        ErrorScreenShow.errormsg("applauncherror");
                    });
                    HasLaunchTask = false;
                    OnGameStateChanged(GameStateArgs.Empty);
                    v.StateChangeInfo = null;
                    return;
                }
            });
        }
Ejemplo n.º 8
0
        private void InvokeLaunch(MCVersion v)
        {
            if (HasLaunchTask)
            {
                Application.Current.Dispatcher.Invoke(() => { OnGameStateChanged(GameStateArgs.Empty); });
                return;
            }
            else
            {
                HasLaunchTask = true;
                Application.Current.Dispatcher.Invoke(() => { OnGameStateChanged(GameStateArgs.Empty); });
            }

            Task.Run(async() =>
            {
                SetInstallationDataPath();
                Model.StateChangeInfo = new VersionStateChangeInfo();
                string gameDir        = Path.GetFullPath(v.GameDirectory);
                try
                {
                    await ReRegisterPackage(v, gameDir);
                }
                catch (Exception e)
                {
                    Program.Log("App re-register failed:\n" + e.ToString());
                    Application.Current.Dispatcher.Invoke(() =>
                    {
                        ErrorScreenShow.errormsg("appregistererror");
                    });
                    HasLaunchTask = false;
                    Application.Current.Dispatcher.Invoke(() => { OnGameStateChanged(GameStateArgs.Empty); });
                    Model.StateChangeInfo = null;
                    return;
                }
                try
                {
                    Model.StateChangeInfo.IsLaunching = true;
                    var pkg = await AppDiagnosticInfo.RequestInfoForPackageAsync(MINECRAFT_PACKAGE_FAMILY);
                    if (pkg.Count > 0)
                    {
                        await pkg[0].LaunchAsync();
                    }
                    Program.Log("App launch finished!");
                    if (Properties.LauncherSettings.Default.KeepLauncherOpen)
                    {
                        GetActiveProcess(v);
                    }
                    HasLaunchTask = false;
                    Model.StateChangeInfo.IsLaunching = false;
                    Application.Current.Dispatcher.Invoke(() => { OnGameStateChanged(GameStateArgs.Empty); });
                    Model.StateChangeInfo = null;
                    if (Properties.LauncherSettings.Default.KeepLauncherOpen == false)
                    {
                        await Application.Current.Dispatcher.InvokeAsync(() =>
                        {
                            Application.Current.MainWindow.Close();
                        });
                    }
                }
                catch (Exception e)
                {
                    Program.Log("App launch failed:\n" + e.ToString());
                    Application.Current.Dispatcher.Invoke(() =>
                    {
                        ErrorScreenShow.errormsg("applauncherror");
                    });
                    HasLaunchTask = false;
                    Application.Current.Dispatcher.Invoke(() => { OnGameStateChanged(GameStateArgs.Empty); });
                    Model.StateChangeInfo = null;
                    return;
                }
            });
        }
Ejemplo n.º 9
0
        private async Task <bool> Launch(Profile p)
        {
            try
            {
                await ReRegisterPackage(Path.GetFullPath(p.Version.GameDirectory));
            }
            catch (Exception e)
            {
                Trace.WriteLine("App re-register failed:\n" + e.ToString());
                Utils.ShowErrorDialog("Launch failed", "An error occured which prevented Zenova from re-registering Minecraft. Ensure that Developer Mode is enabled in Windows Settings.");
                return(false);
            }

            try
            {
                LaunchInfo.Status = LaunchStatus.Launching;
                App.WriteFiles();
                var pkgs = await AppDiagnosticInfo.RequestInfoForPackageAsync(MINECRAFT_PACKAGE_FAMILY);

                var pkg = pkgs.Count > 0 ? pkgs[0] : null;
                if (pkg == null)
                {
                    Utils.ShowErrorDialog("Launch failed", "An error occured which prevented Zenova from launching Minecraft. Ensure that Minecraft is installed.");
                    return(false);
                }
                if (p.Modded)
                {
                    AppDebugger app = new AppDebugger(Utils.FindPackages(MINECRAFT_PACKAGE_FAMILY).ToList()[0].Id.FullName);
                    if (app.GetPackageExecutionState() != PACKAGE_EXECUTION_STATE.PES_UNKNOWN)
                    {
                        app.TerminateAllProcesses();
                        if (app.StatusCode != 0)
                        {
                            return(false);
                        }
                    }
                    app.EnableDebugging(AppDomain.CurrentDomain.BaseDirectory + "ZenovaLoader -d " + (Preferences.instance.DebugMode ? "1" : "0"));
                    if (app.StatusCode != 0)
                    {
                        return(false);
                    }
                    app.LaunchApp(pkg.AppInfo.AppUserModelId);
                    if (app.StatusCode != 0)
                    {
                        return(false);
                    }
                    app.DisableDebugging();
                    if (app.StatusCode != 0)
                    {
                        return(false);
                    }
                }
                else
                {
                    await pkg.LaunchAsync();
                }
                Trace.WriteLine("App launch finished!");
                return(true);
            }
            catch (Exception e)
            {
                Trace.WriteLine("App launch failed:\n" + e.ToString());
                Utils.ShowErrorDialog("Launch failed", "An error occured which prevented Zenova from launching Minecraft.");
                return(false);
            }
        }