コード例 #1
0
        public RemoteViews Setup(Context context, int widgetId)
        {
            var view = new RemoteViews(context.PackageName, Resource.Layout.SuggestionsWidget);

            var intent = new Intent(context, JavaUtils.ToClass <SuggestionsWidgetService>());

            intent.PutExtra(AppWidgetManager.ExtraAppwidgetId, widgetId);

            view.SetRemoteAdapter(Resource.Id.SuggestionsList, intent);
            view.SetEmptyView(Resource.Id.SuggestionsList, Resource.Id.NoData);

            var tapIntent = new Intent(context, JavaUtils.ToClass <WidgetsForegroundService>());

            tapIntent.SetAction(SuggestionTapped);
            tapIntent.PutExtra(AppWidgetManager.ExtraAppwidgetId, widgetId);
            var tapPendingIntent = context.SafeGetForegroundService(0, tapIntent, UpdateCurrent);

            view.SetPendingIntentTemplate(Resource.Id.SuggestionsList, tapPendingIntent);

            view.SetTextViewText(Resource.Id.Title, Resources.WorkingOnThese);
            view.SetTextViewText(Resource.Id.NoData, Resources.NoSuggestionsAvailable);
            view.SetTextViewText(Resource.Id.ShowAllTimeEntriesLabel, Resources.ShowAllTimEntries);

            var openAppIntent        = new Intent(context, typeof(SplashScreen)).SetFlags(TaskOnHome);
            var openAppPendingIntent = PendingIntent.GetActivity(context, 0, openAppIntent, UpdateCurrent);

            view.SetOnClickPendingIntent(Resource.Id.ShowAllTimeEntriesLabel, openAppPendingIntent);

            return(view);
        }
コード例 #2
0
        public override void OnMessageReceived(RemoteMessage message)
        {
            var dependencyContainer = AndroidDependencyContainer.Instance;
            var userIsLoggedIn      = dependencyContainer.UserAccessManager.CheckIfLoggedIn();

            if (!userIsLoggedIn)
            {
                return;
            }

            var keyValueStorage = dependencyContainer.KeyValueStorage;

            if (!shouldScheduleSyncJob(keyValueStorage))
            {
                return;
            }

            var jobClass       = JavaUtils.ToClass <SyncJobService>();
            var jobScheduler   = (JobScheduler)GetSystemService(JobSchedulerService);
            var serviceName    = new ComponentName(this, jobClass);
            var jobInfoBuilder = new JobInfo.Builder(SyncJobServiceJobId, serviceName)
                                 .SetRequiredNetworkType(NetworkType.Any);

            if (PieApis.AreAvailable)
            {
                jobInfoBuilder = jobInfoBuilder.SetImportantWhileForeground(true);
            }

            jobScheduler.Schedule(jobInfoBuilder.Build());
            keyValueStorage.SetBool(HasPendingSyncJobServiceScheduledKey, true);
            keyValueStorage.SetDateTimeOffset(LastSyncJobScheduledAtKey, DateTimeOffset.Now);
        }
コード例 #3
0
        private BlockSyntax WrapByUsingStatements(
            IEnumerable <ParameterDescription> parametersDescription,
            BlockSyntax body)
        {
            StatementSyntax currentStatement = null;

            foreach (var parameter in parametersDescription)
            {
                if (JavaUtils.IsPrimitive(parameter.Type))
                {
                    continue;
                }

                var childBody = currentStatement ?? body;

                currentStatement = RoslynUtils.UsingStatement(
                    "var",
                    $"{parameter.Name}_using",
                    GetExpressionFor(parameter),
                    childBody);
            }

            return(currentStatement == null
                ? body
                : SyntaxFactory.Block(currentStatement));
        }
コード例 #4
0
ファイル: BuildAndRunner.cs プロジェクト: tionyufa/Running
        /// <summary>
        /// Emulates Unity's File -> Build And Run menu option.
        /// </summary>
        private static void EmulateUnityBuildAndRun()
        {
            var androidSdk         = new AndroidSdk();
            var androidSdkPlatform = new AndroidSdkPlatform(androidSdk);
            var androidBuildTools  = new AndroidBuildTools(androidSdk);
            var javaUtils          = new JavaUtils();
            var apkSigner          = new ApkSigner(androidBuildTools, javaUtils);
            var androidBuilder     = new AndroidBuilder(androidSdkPlatform, apkSigner);
            var buildToolLogger    = new BuildToolLogger();

            if (!androidBuilder.Initialize(buildToolLogger))
            {
                return;
            }

            if (EditorUserBuildSettings.androidBuildSystem == AndroidBuildSystem.Gradle)
            {
                EditorUserBuildSettings.exportAsGoogleAndroidProject = false;
            }

            var artifactName       = AndroidAppBundle.IsNativeBuildEnabled() ? "temp.aab" : "temp.apk";
            var artifactPath       = Path.Combine(Path.GetTempPath(), artifactName);
            var buildPlayerOptions = AndroidBuildHelper.CreateBuildPlayerOptions(artifactPath);

            buildPlayerOptions.options |= BuildOptions.AutoRunPlayer;
            androidBuilder.Build(buildPlayerOptions);
        }
コード例 #5
0
        public override int GetHashCode()
        {
            int result = base.GetHashCode();

            result = 977 * result + JavaUtils.floatToRawIntBits(value);
            return(result);
        }
コード例 #6
0
        public float toFloatBits()
        {
            int color = ((int)(255 * a) << 24) | ((int)(255 * b) << 16) | ((int)(255 * g) << 8) | ((int)(255 * r));


            return(JavaUtils.intToFloatColor(color));
        }
コード例 #7
0
ファイル: TestController.cs プロジェクト: DoggySazHi/Modulr
 public TestReceivedController(JavaUtils java, SqlQuery query, PasswordManager manager, ModulrConfig config, Captcha captcha)
 {
     _java    = java;
     _query   = query;
     _manager = manager;
     _config  = config;
     _captcha = captcha;
 }
コード例 #8
0
        private static AppBundleRunner CreateAppBundleRunner()
        {
            var androidSdk = new AndroidSdk();
            var javaUtils  = new JavaUtils();
            var adb        = new AndroidDebugBridge(androidSdk);
            var bundletool = new BundletoolHelper(javaUtils);

            return(new AppBundleRunner(adb, bundletool));
        }
コード例 #9
0
        public override int GetHashCode()
        {
            int result = base.GetHashCode();

            result = 971 * result + (int)depthFunc;
            result = 971 * result + JavaUtils.floatToRawIntBits(depthRangeNear);
            result = 971 * result + JavaUtils.floatToRawIntBits(depthRangeFar);
            result = 971 * result + (depthMask ? 1 : 0);
            return(result);
        }
コード例 #10
0
        public override int GetHashCode()
        {
            int result = base.GetHashCode();

            result = 947 * result + (blended ? 1 : 0);
            result = 947 * result + (int)sourceFunction;
            result = 947 * result + (int)destFunction;
            result = 947 * result + JavaUtils.floatToRawIntBits(opacity);
            return(result);
        }
コード例 #11
0
 public VertexAttribute(int usage, int numComponents, VertexAttribPointerType type, bool normalized, string alias, int unit)
 {
     this.usage         = usage;
     this.numComponents = numComponents;
     this.type          = type;
     this.normalized    = normalized;
     this.alias         = alias;
     this.unit          = unit;
     this.usageIndex    = JavaUtils.numberOfTrailingZeros(usage);
 }
コード例 #12
0
ファイル: SDKDemo.cs プロジェクト: qb-lxl/SDKDemo
    /// <summary>
    /// 判断是否是模拟器
    /// </summary>
    private bool CheckSimulator()
    {
        //判断是否要检测模拟器
        var checkSimulatorEnable = N3DClient.GameConfig.GetClientConfigBool("CheckSimulatorEnable", false);

        if (checkSimulatorEnable)
        {
            return(JavaUtils.CheckSimulator());
        }
        return(false);
    }
コード例 #13
0
        public override int GetHashCode()
        {
            int result = base.GetHashCode();

            result = 991 * result + textureDescription.GetHashCode();
            result = 991 * result + JavaUtils.floatToRawIntBits(offsetU);
            result = 991 * result + JavaUtils.floatToRawIntBits(offsetV);
            result = 991 * result + JavaUtils.floatToRawIntBits(scaleU);
            result = 991 * result + JavaUtils.floatToRawIntBits(scaleV);
            result = 991 * result + uvIndex;
            return(result);
        }
コード例 #14
0
ファイル: MainForm.cs プロジェクト: minhld/CodeAdvisory
        private void MainForm_Load(object sender, EventArgs e)
        {
            // temporarily set for testing only
            JavaUtils.ProcessDataAvailable  += JavaUtils_ProcessDataAvailable;
            JavaUtils.ProcessErrorAvailable += JavaUtils_ProcessErrorAvailable;

            bool javaPathAvail = JavaUtils.initJavaUtils(Properties.Resources.JDK_PATH);

            if (!javaPathAvail)
            {
                MessageBox.Show(this, "JDK path is missing", Properties.Resources.APP_NAME, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }
コード例 #15
0
        private static AppBundleBuilder CreateAppBundleBuilder(string workingDirectoryPath)
        {
            var androidSdk         = new AndroidSdk();
            var javaUtils          = new JavaUtils();
            var androidSdkPlatform = new AndroidSdkPlatform(androidSdk);
            var androidBuildTools  = new AndroidBuildTools(androidSdk);
            var jarSigner          = new JarSigner(javaUtils);

            return(new AppBundleBuilder(
                       new AndroidAssetPackagingTool(androidBuildTools, androidSdkPlatform),
                       new AndroidBuilder(androidSdkPlatform),
                       new BundletoolHelper(javaUtils),
                       jarSigner,
                       workingDirectoryPath,
                       new ZipUtils(javaUtils)));
        }
コード例 #16
0
        public static void UpdateAllInstances <TWidgetProvider>()
            where TWidgetProvider : AppWidgetProvider
        {
            var context     = Application.Context;
            var widgetClass = JavaUtils.ToClass <TWidgetProvider>();

            var widgetIds = AppWidgetManager
                            .GetInstance(context)
                            .GetAppWidgetIds(new ComponentName(context, widgetClass));

            var intent = new Intent(Application.Context, widgetClass);

            intent.SetAction(AppWidgetManager.ActionAppwidgetUpdate);
            intent.PutExtra(AppWidgetManager.ExtraAppwidgetIds, widgetIds);

            context.SendBroadcast(intent);
        }
コード例 #17
0
ファイル: MainForm.cs プロジェクト: minhld/CodeAdvisory
        private void comNRunTSBtn_Click(object sender, EventArgs e)
        {
            if (editorTab.SelectedTab == null)
            {
                MessageBox.Show(this, "please open a Java file to continue", Properties.Resources.APP_NAME, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }
            string javaFilePath  = (string)editorTab.SelectedTab.Tag;
            string javaClassPath = Utils.checkClassAvailable(javaFilePath);

            if (javaClassPath.Equals(""))
            {
                MessageBox.Show(this, "class file is not available. please recompile it", Properties.Resources.APP_NAME, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }
            consoleText.Text = string.Empty;
            errorText.Text   = string.Empty;

            JavaUtils.execute(javaClassPath);
        }
コード例 #18
0
        /// <summary>
        /// Builds an APK to a temporary location, then installs and runs it using ia.jar
        /// </summary>
        private static void BuildAndRunApk(BuildToolLogger buildToolLogger)
        {
            var androidSdk             = new AndroidSdk();
            var androidSdkPlatform     = new AndroidSdkPlatform(androidSdk);
            var androidBuildTools      = new AndroidBuildTools(androidSdk);
            var javaUtils              = new JavaUtils();
            var apkSigner              = new ApkSigner(androidBuildTools, javaUtils);
            var androidBuilder         = new AndroidBuilder(androidSdkPlatform, apkSigner);
            var playInstantBuildHelper = new PlayInstantBuildHelper(isInstantRequired: true);

            if (!androidBuilder.Initialize(buildToolLogger) ||
                !playInstantBuildHelper.Initialize(buildToolLogger) ||
                !javaUtils.Initialize(buildToolLogger))
            {
                return;
            }

            var jarPath = IaJarPath;

            if (jarPath == null)
            {
                buildToolLogger.DisplayErrorDialog("Build and Run failed to locate ia.jar file");
                return;
            }

            AndroidAppBundle.DisableNativeBuild();

            var apkPath = Path.Combine(Path.GetTempPath(), "temp.apk");

            Debug.LogFormat("Build and Run package location: {0}", apkPath);

            var buildPlayerOptions = AndroidBuildHelper.CreateBuildPlayerOptions(apkPath);

            if (!androidBuilder.BuildAndSign(buildPlayerOptions))
            {
                // Do not log here. The method we called was responsible for logging.
                return;
            }

            InstallInstantApp(jarPath, apkPath, androidSdk, javaUtils);
        }
コード例 #19
0
        private ExpressionSyntax GenerateJValueExpressionFor(ParameterDescription parameter)
        {
            var isPrimitive = JavaUtils.IsPrimitive(parameter.Type);
            ExpressionSyntax jValueParameter = SyntaxFactory.IdentifierName(isPrimitive
                ? parameter.Name
                : $"{SyntaxFactory.IdentifierName(parameter.Name)}_using");

            if (!isPrimitive)
            {
                jValueParameter = jValueParameter.MemberAccessExpression("Ptr");
            }

            return(RoslynUtils.NewExpression(
                       "JValue",
                       RoslynUtils.CollectionInitExpression(new[]
            {
                RoslynUtils.AssignmentExpression(
                    JavaUtils.GetTypeName(parameter.Type),
                    jValueParameter)
            })));
        }
コード例 #20
0
        private static void InstallInstantApp(string jarPath, string artifactPath, AndroidSdk androidSdk,
                                              JavaUtils javaUtils)
        {
            var window = PostBuildCommandLineDialog.CreateDialog("Install and run app");

            window.modal              = false;
            window.summaryText        = "Installing app on device";
            window.bodyText           = "Built successfully.\n\n";
            window.autoScrollToBottom = true;
            window.CommandLineParams  = new CommandLineParameters
            {
                FileName  = javaUtils.JavaBinaryPath,
                Arguments = string.Format(
                    "-jar {0} run {1}",
                    CommandLine.QuotePath(jarPath),
                    CommandLine.QuotePath(artifactPath))
            };
            window.CommandLineParams.AddEnvironmentVariable(
                AndroidSdk.AndroidHomeEnvironmentVariableKey, androidSdk.RootPath);
            window.Show();
        }
コード例 #21
0
        //private void FormMain_Shown(object sender, EventArgs e)
        //{
        //    this.Update();
        //    if (!JavaSearch.TrySearchJava(ref javaExe))
        //    {
        //        if (MessageBox.Show(Language.DoYouWantToSelectJavaLocation, Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
        //        {
        //            OpenFileDialog openJavaExe = new OpenFileDialog()
        //            {
        //                Multiselect = false,
        //                Filter = "java.exe|java.exe"
        //            };
        //            if (openJavaExe.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        //            {
        //                Properties.Settings.Default.JavaExe = openJavaExe.FileName;
        //                Properties.Settings.Default.Save();
        //                Application.Restart();
        //            }
        //            else
        //                Application.Exit();
        //        }
        //        else
        //            Application.Exit();
        //    }
        //    ToLog(ApktoolEventType.Information, "Java location: " + javaExe);

        //    InitializeUpdateChecker();
        //    InitializeAPKTool();
        //    InitializeSignApk();
        //    InitializeZipalign();

        //    String javaVersion = apktoolSync.GetJavaVersionSync();
        //    if (javaVersion != null)
        //    {
        //        ToLog(ApktoolEventType.Information, "Java version: " + javaVersion);

        //        string apktoolVersion = apktoolSync.GetVersionSync();

        //        if (apktoolVersion != null)
        //            ToLog(ApktoolEventType.Information, "APKTool version: " + apktoolVersion);
        //    }
        //    else
        //    {
        //        MessageBox.Show(Language.ErrorJavaDetect, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
        //    }

        //    TimeSpan updateInterval = DateTime.Now - Properties.Settings.Default.LastUpdateCheck;
        //    if (updateInterval.Days > 0 && Properties.Settings.Default.CheckForUpdateAtStartup)
        //        updateCheker.CheckAsync(true);
        //    ToStatus(Language.Done, Properties.Resources.done);
        //}

        private void GetJavaPath()
        {
            if (!File.Exists(Properties.Settings.Default.JavaExe))
            {
                javaExe = JavaUtils.SearchPath();
                if (!File.Exists(javaExe))
                {
                    if (MessageBox.Show(Language.DoYouWantToSelectJavaLocation, Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
                    {
                        using (OpenFileDialog openJavaExe = new OpenFileDialog())
                        {
                            openJavaExe.Filter = "java.exe|java.exe";
                            if (openJavaExe.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                            {
                                javaExe = Program.GetPortablePath(openJavaExe.FileName);
                                Properties.Settings.Default.JavaExe = javaExe;
                                Properties.Settings.Default.Save();
                            }
                            else
                            {
                                Environment.Exit(0);
                            }
                        }
                    }
                    else
                    {
                        Environment.Exit(0);
                    }
                }
                else
                {
                    Properties.Settings.Default.JavaExe = javaExe;
                    Properties.Settings.Default.Save();
                }
            }

            ToLog(ApktoolEventType.Information, String.Format("Java path \"{0}\"", javaExe /*"Java path: " + javaExe*/));
        }
コード例 #22
0
ファイル: MainForm.cs プロジェクト: minhld/CodeAdvisory
        private void compileTSBtn_Click(object sender, EventArgs e)
        {
            if (editorTab.SelectedTab == null)
            {
                MessageBox.Show(this, "please open a Java file to continue", Properties.Resources.APP_NAME, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }
            string javaFilePath = (string)editorTab.SelectedTab.Tag;

            consoleText.Text = string.Empty;
            errorText.Text   = string.Empty;

            string javaClassPath = JavaUtils.compile(javaFilePath);

            if (File.Exists(javaClassPath))
            {
                printConsoleMessage("compiled successfully\n" + javaClassPath);
            }
            else
            {
                printErrorMessage("compiled failed\n");
            }
        }
コード例 #23
0
        public static void EnqueueWork(Context context, Intent intent)
        {
            var componentName = new ComponentName(context, JavaUtils.ToClass <ScheduleEventNotificationsService>());

            EnqueueWork(context, componentName, JobId, intent);
        }
コード例 #24
0
        public static void EnqueueWork(Context context, Intent intent)
        {
            var serviceClass = JavaUtils.ToClass <WidgetsAnalyticsService>();

            EnqueueWork(context, serviceClass, WidgetAnalyticsServiceJobId, intent);
        }
コード例 #25
0
 /// <summary>
 /// Constructor.
 /// </summary>
 public ApkSigner(AndroidBuildTools androidBuildTools, JavaUtils javaUtils)
 {
 }
コード例 #26
0
 protected Attribute(long type)
 {
     this.type    = type;
     this.typeBit = JavaUtils.numberOfTrailingZeros(type);
 }
コード例 #27
0
ファイル: MainWindowCommands.cs プロジェクト: Hexer10/SPCode
        private async void Command_Decompile(MainWindow win)
        {
            // First we check the java version of the user, and act accordingly

            ProgressDialogController checkingJavaDialog = null;

            if (win != null)
            {
                checkingJavaDialog = await this.ShowProgressAsync(Program.Translations.GetLanguage("JavaInstallCheck") + "...",
                                                                  "", false, MetroDialogOptions);

                ProcessUITasks();
            }
            JavaUtils ju = new JavaUtils();

            switch (ju.GetJavaStatus())
            {
            case JavaResults.Absent:
            {
                // If java is not installed, offer to download it
                await checkingJavaDialog.CloseAsync();

                if (await this.ShowMessageAsync(Program.Translations.GetLanguage("JavaNotFoundTitle"),
                                                Program.Translations.GetLanguage("JavaNotFoundMessage"),
                                                MessageDialogStyle.AffirmativeAndNegative, MetroDialogOptions) == MessageDialogResult.Affirmative)
                {
                    await InstallJava();
                }
                return;
            }

            case JavaResults.Outdated:
            {
                // If java is outdated, offer to upgrade it
                await checkingJavaDialog.CloseAsync();

                if (await this.ShowMessageAsync(Program.Translations.GetLanguage("JavaOutdatedTitle"),
                                                Program.Translations.GetLanguage("JavaOutdatedMessage"),
                                                MessageDialogStyle.AffirmativeAndNegative, MetroDialogOptions) == MessageDialogResult.Affirmative)
                {
                    await InstallJava();
                }
                return;
            }

            case JavaResults.Correct:
            {
                // Move on
                await checkingJavaDialog.CloseAsync();

                break;
            }
            }

            // Pick file for decompiling
            var ofd = new OpenFileDialog
            {
                Filter = "Sourcepawn Plugins (*.smx)|*.smx",
                Title  = Program.Translations.GetLanguage("ChDecomp")
            };
            var result = ofd.ShowDialog();

            if (result.Value && !string.IsNullOrWhiteSpace(ofd.FileName))
            {
                var fInfo = new FileInfo(ofd.FileName);
                if (fInfo.Exists)
                {
                    ProgressDialogController task = null;
                    if (win != null)
                    {
                        task = await this.ShowProgressAsync(Program.Translations.GetLanguage("Decompiling") + "...",
                                                            fInfo.FullName, false, MetroDialogOptions);

                        ProcessUITasks();
                    }

                    // Prepare Lysis execution
                    var destFile       = fInfo.FullName + ".sp";
                    var standardOutput = new StringBuilder();
                    using var process = new Process();
                    process.StartInfo.WorkingDirectory       = Paths.GetLysisDirectory();
                    process.StartInfo.UseShellExecute        = false;
                    process.StartInfo.RedirectStandardOutput = true;
                    process.StartInfo.CreateNoWindow         = true;
                    process.StartInfo.FileName = "java";

                    process.StartInfo.Arguments = $"-jar lysis-java.jar \"{fInfo.FullName}\"";

                    // Execute Lysis, read and store output
                    try
                    {
                        process.Start();
                        while (!process.HasExited)
                        {
                            standardOutput.Append(process.StandardOutput.ReadToEnd());
                        }
                        standardOutput.Append(process.StandardOutput.ReadToEnd());
                        File.WriteAllText(destFile, standardOutput.ToString(), Encoding.UTF8);
                    }
                    catch (Exception ex)
                    {
                        await this.ShowMessageAsync($"{fInfo.Name} {Program.Translations.GetLanguage("FailedToDecompile")}",
                                                    $"{ex.Message}", MessageDialogStyle.Affirmative,
                                                    MetroDialogOptions);
                    }

                    // Load the decompiled file to SPCode
                    TryLoadSourceFile(destFile, true, false, true);
                    if (task != null)
                    {
                        await task.CloseAsync();
                    }
                }
            }
        }
コード例 #28
0
        private Process Launch()
        {
            char quote = '"';

            string use64Bit       = "";
            string javaParameters = StartControl.GetInstance().GetStartString(LauncherProfilesControl.LastVersionId);

            uint   logNumber       = 0;
            string javaLogging     = "";
            string javaLogFolder   = SettingsControl.MainDirectory + "\\error_logs\\";
            string javaLogError    = javaLogFolder + Constants.FILENAME_LOG_JAVA_ERROR_F;
            string javaLogHeapDump = javaLogFolder + Constants.FILENAME_LOG_JAVA_HEAP_DUMP_F;

            if (javaParameters == "")
            {
                MessageBox.Show(Messages.ERROR_INITIALIZATION_VERISON, Messages.CAPTION_COMMON);
                return(null);
            }

            if (SettingsControl.UseLicence)
            {
                javaParameters = javaParameters.Replace("${auth_player_name}", quote + LauncherProfilesControl.DisplayName + quote);
            }
            else
            {
                LauncherProfilesControl.UUID        = Guid.NewGuid().ToString().ToLower();
                LauncherProfilesControl.AccessToken = LauncherProfilesControl.UUID;
                LauncherProfilesControl.ClientToken = LauncherProfilesControl.UUID;

                javaParameters = javaParameters.Replace("${auth_player_name}", quote + LauncherProfilesControl.Username + quote);
            }

            javaParameters = javaParameters.Replace("${auth_uuid}", quote + LauncherProfilesControl.UserId + quote);
            javaParameters = javaParameters.Replace("${auth_access_token}", quote + LauncherProfilesControl.AccessToken + quote);
            javaParameters = javaParameters.Replace("${auth_session}", quote + LauncherProfilesControl.AccessToken + quote);


            javaParameters = javaParameters.Replace("${version_name}", quote + LauncherProfilesControl.LastVersionId + quote);
            javaParameters = javaParameters.Replace("${user_properties}", "{}");
            javaParameters = javaParameters.Replace("${user_type}", quote + "mojang" + quote);

            if (SettingsControl.Use64Bit && JavaUtils.CanUse64BitJava(LauncherProfilesControl.JavaDirectory))
            {
                use64Bit = " -d64";
            }

            try
            {
                if (!Directory.Exists(javaLogFolder))
                {
                    Directory.CreateDirectory(javaLogFolder);
                }

                while (File.Exists(string.Format(javaLogError, logNumber)) && File.Exists(string.Format(javaLogHeapDump, logNumber)))
                {
                    logNumber++;
                }

                javaLogError    = string.Format(javaLogError, logNumber);
                javaLogHeapDump = string.Format(javaLogHeapDump, logNumber);
                javaLogging     = string.Format(Constants.JAVA_ARGUMENTS_LOGGING_F, javaLogError, javaLogHeapDump);
            }
            catch
            {
                javaLogging = "";
            }

            if (SettingsControl.UseOptimization)
            {
                javaParameters = string.Format("-Xms{0} -Xmx{0}", SettingsControl.AllocatedMemory) + use64Bit + javaLogging + Constants.JAVA_ARGUMENTS_OPTIMIZATION + " " + javaParameters.Trim();
            }
            else
            {
                javaParameters = string.Format("-Xms512M -Xmx{0}", SettingsControl.AllocatedMemory) + use64Bit + javaLogging + " " + javaParameters.Trim();
            }

            try
            {
                Process          minecraft = new Process();
                ProcessStartInfo mcstart   = new ProcessStartInfo("CMD.exe");
                string           cmdArgs   = "/c \"title Minecraft console && start /HIGH /b /wait \"\" \"" + LauncherProfilesControl.JavaDirectory;

                if (SettingsControl.ShowConsole)
                {
                    cmdArgs += Constants.PATH_FILE_JAVA_R + "\" " + javaParameters + quote;

                    if (!SettingsControl.AutoCloseConsole)
                    {
                        cmdArgs += " && @echo. && pause";
                    }
                }
                else
                {
                    cmdArgs += Constants.PATH_FILE_JAVAW_R + "\" " + javaParameters + quote;

                    mcstart.CreateNoWindow  = true;
                    mcstart.UseShellExecute = false;
                }

                mcstart.Arguments   = cmdArgs;
                minecraft.StartInfo = mcstart;
                minecraft.Start();

                return(minecraft);
            }
            catch (Exception ex)
            {
                MessageBox.Show(Messages.ERROR_PROCESS_START_MINECRAFT + ex.Message, Messages.CAPTION_COMMON);

                return(null);
            }
        }
コード例 #29
0
        private bool AreSettingsOk()
        {
            if (string.IsNullOrWhiteSpace(LauncherProfilesControl.LastVersionId))
            {
                MessageBox.Show(Messages.ERROR_LAUNCH_VERSION_EMPTY, Messages.CAPTION_COMMON);
            }
            else if (!Singlet.Regex_Memory.IsMatch(SettingsControl.AllocatedMemory))
            {
                MessageBox.Show(Messages.ERROR_RAM_FORMAT_INCORRECT, Messages.CAPTION_COMMON);
            }
            else
            {
                ulong allocatedMemoryBytes;
                char  prefix = SettingsControl.AllocatedMemory.ToUpper()[SettingsControl.AllocatedMemory.Length - 1];

                if (prefix == 'M')
                {
                    allocatedMemoryBytes = ulong.Parse(SettingsControl.AllocatedMemory.Substring(0, SettingsControl.AllocatedMemory.Length - 1)) * 1000000;
                }
                else
                {
                    allocatedMemoryBytes = ulong.Parse(SettingsControl.AllocatedMemory.Substring(0, SettingsControl.AllocatedMemory.Length - 1)) * 1000000000;
                }

                if ((prefix == 'M' && allocatedMemoryBytes < Constants.RAM_MINIMUM_START) || allocatedMemoryBytes > Constants.RAM_TOTAL_BYTES)
                {
                    MessageBox.Show(string.Format(Messages.ERROR_RAM_ALLOCATION_SIZE_INCORRECT_F, Constants.RAM_MINIMUM_START / 1048576f), Messages.CAPTION_COMMON);
                }
                else if (allocatedMemoryBytes > CommonUtils.GetFreeRam())
                {
                    MessageBox.Show(Messages.ERROR_RAM_ALLOCATION_INSUFICIENT, Messages.CAPTION_COMMON);
                }
                else if (string.IsNullOrWhiteSpace(LauncherProfilesControl.JavaDirectory) || !JavaUtils.JavaExists(LauncherProfilesControl.JavaDirectory))
                {
                    MessageBox.Show(Messages.ERROR_JAVA_NOT_FOUND, Messages.CAPTION_COMMON);
                }
                else if (string.IsNullOrWhiteSpace(LauncherProfilesControl.Username))
                {
                    MessageBox.Show(Messages.ERROR_NICKNAME_INCORRECT, Messages.CAPTION_COMMON);
                }
                else
                {
                    return(true);
                }
            }

            return(false);
        }