示例#1
0
        static int Main(string[] args)
        {
            string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, Path.GetFileNameWithoutExtension(AppDomain.CurrentDomain.FriendlyName)) + ".cfg";
            // {2}
            //File.WriteAllText(path, _JsonString);
            LauncherConfig launcherConfig = AppInfoSerializer.Read(path);

            ProcessStartInfo startInfo = new ProcessStartInfo();

            startInfo.UseShellExecute  = false;
            startInfo.WorkingDirectory = Environment.CurrentDirectory;
            startInfo.FileName         = launcherConfig.ExePath;

            string cmd = Environment.CommandLine;
            // Remove exe part from raw command line
            int  firstArgIndex     = 0;
            bool discardNextSpaces = false;

            foreach (char c in cmd)
            {
                if (c == '\"')
                {
                    discardNextSpaces = !discardNextSpaces;
                }

                if (!discardNextSpaces && (c == ' ' || c == '\t'))
                {
                    break;
                }

                firstArgIndex++;
            }
            string arguments = cmd.Substring(firstArgIndex, cmd.Length - firstArgIndex).Trim();

            startInfo.Arguments = arguments;

            if (launcherConfig.EnvVariables != null)
            {
                foreach (EnvVariable envVariable in launcherConfig.EnvVariables)
                {
                    Utils.AddOrSetEnvVariable(startInfo.EnvironmentVariables, envVariable.Key, envVariable.Value);
                }
            }

            Process p = Process.Start(startInfo);

            if (launcherConfig.Blocking)
            {
                p.WaitForExit();
            }

            return(0);
        }
示例#2
0
        internal override void Install(Deployment deployment)
        {
            foreach (var alias in Aliases)
            {
                Utils.Log("Processing exe alias {0}", alias);
                string aliasPath    = Path.Combine(deployment.BinPath, alias);
                string aliasExePath = aliasPath + ".exe";

                Utils.Log("--Copying launcher to {0}", aliasExePath);
                Utils.CopyFile(deployment.LauncherPath, aliasExePath, true);
                string configPath = aliasPath + ".cfg";

                Utils.Log("--Serializing config file to {0}", configPath);
                LauncherConfig launcherConfig = new LauncherConfig();
                launcherConfig.ExePath      = ToolPath;
                launcherConfig.Blocking     = Blocking;
                launcherConfig.EnvVariables = EnvVariables;

                AppInfoSerializer.Write(configPath, launcherConfig);
                File.SetLastWriteTimeUtc(configPath, deployment.TimeStamp);
            }
        }