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); }
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); } }