Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitd032b62

Browse files
committed
launch context menu project through Pipeserver in existing launcher instance (so that project name gets saved into recent list)fixes#209
1 parent925ab87 commitd032b62

File tree

2 files changed

+56
-17
lines changed

2 files changed

+56
-17
lines changed

‎UnityLauncherPro/GetProjects.cs‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ public static List<Project> Scan(bool getGitBranch = false, bool getPlasticBranc
6464
{
6565
projectsFound.Add(p);
6666

67+
// TODO FIXME, this gets called everytime for same projects?
6768
// add found projects to history also (gets added only if its not already there)
6869
Tools.AddProjectToHistory(p.Path);
6970
}

‎UnityLauncherPro/MainWindow.xaml.cs‎

Lines changed: 55 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,6 @@ void Start()
123123
UpdateUnityInstallationsList();
124124
HandleCommandLineLaunch();
125125

126-
127126
// check for duplicate instance, and activate that instead
128127
if(chkAllowSingleInstanceOnly.IsChecked==true)
129128
{
@@ -132,6 +131,7 @@ void Start()
132131

133132
if(!isNewInstance)
134133
{
134+
135135
// Send a wake-up message to the running instance
136136
ActivateRunningInstance();
137137

@@ -152,9 +152,6 @@ void Start()
152152
//Properties.Settings.Default.projectPaths = null;
153153
//Properties.Settings.Default.Save();
154154

155-
156-
157-
158155
projectsSource=GetProjects.Scan(getGitBranch:(bool)chkShowGitBranchColumn.IsChecked,getPlasticBranch:(bool)chkCheckPlasticBranch.IsChecked,getArguments:(bool)chkShowLauncherArgumentsColumn.IsChecked,showMissingFolders:(bool)chkShowMissingFolderProjects.IsChecked,showTargetPlatform:(bool)chkShowPlatform.IsChecked,AllProjectPaths:Properties.Settings.Default.projectPaths,searchGitbranchRecursively:(bool)chkGetGitBranchRecursively.IsChecked,showSRP:(bool)chkCheckSRP.IsChecked);
159156

160157
//Console.WriteLine("projectsSource.Count: " + projectsSource.Count);
@@ -279,8 +276,6 @@ void HandleCommandLineLaunch()
279276
string[]args=Environment.GetCommandLineArgs();
280277
if(args!=null&&args.Length>2)
281278
{
282-
283-
284279
// first argument needs to be -projectPath
285280
varcommandLineArgs=args[1];
286281

@@ -302,12 +297,9 @@ void HandleCommandLineLaunch()
302297
Tools.InstallAPK(apkPath);
303298
Environment.Exit(0);
304299
}
305-
else
306-
307-
308-
if(commandLineArgs=="-projectPath")
300+
elseif(commandLineArgs=="-projectPath")
309301
{
310-
Console.WriteLine("Launching from commandline...");
302+
Console.WriteLine("Launchingprojectfrom commandline...");
311303

312304
// path
313305
varprojectPathArgument=args[2];
@@ -348,12 +340,17 @@ void HandleCommandLineLaunch()
348340
CreateNewEmptyProject(proj.Path);
349341
}
350342
}
351-
else
343+
else// has version info, just launch it
352344
{
353-
// try launching it
354-
varproc=Tools.LaunchProject(proj);
355-
//proj.Process = proc;
356-
//ProcessHandler.Add(proj, proc);
345+
// try launching it through
346+
boollaunchedViaPipe=LaunchProjectViaPipe(proj);
347+
348+
if(launchedViaPipe==false)
349+
{
350+
varproc=Tools.LaunchProject(proj);
351+
//proj.Process = proc;
352+
//ProcessHandler.Add(proj, proc);
353+
}
357354
}
358355

359356
// quit after launch if enabled in settings
@@ -368,6 +365,33 @@ void HandleCommandLineLaunch()
368365
Console.WriteLine("Error> Invalid arguments:"+args[1]);
369366
}
370367
}
368+
}// HandleCommandLineLaunch()
369+
370+
privateboolLaunchProjectViaPipe(Projectproj)
371+
{
372+
stringsep="<|>";
373+
try
374+
{
375+
using(varclient=newNamedPipeClientStream(".",launcherPipeName,PipeDirection.Out))
376+
{
377+
client.Connect(500);
378+
using(varwriter=newStreamWriter(client))
379+
{
380+
writer.AutoFlush=true;
381+
writer.WriteLine("OpenProject:"+sep+proj.Version+sep+proj.Path+sep+proj.Arguments);
382+
}
383+
}
384+
returntrue;
385+
}
386+
catch(TimeoutException)
387+
{
388+
returnfalse;
389+
}
390+
catch(Exceptionex)
391+
{
392+
Console.WriteLine("Error launching via pipe: "+ex.Message);
393+
returnfalse;
394+
}
371395
}
372396

373397
// main search
@@ -3847,7 +3871,7 @@ private void btnFetchLatestInitScript_Click(object sender, RoutedEventArgs e)
38473871
{
38483872
if(string.IsNullOrEmpty(initScriptFileFullPath)==true)
38493873
{
3850-
initScriptFileFullPath=Tools.GetSafeFilePath("Scripts","InitializeProject.cs");
3874+
initScriptFileFullPath=Tools.GetSafeFilePath("Scripts","InitializeProject.cs");
38513875
}
38523876

38533877
Tools.DownloadInitScript(initScriptFileFullPath,txtCustomInitFileURL.Text);
@@ -3921,6 +3945,20 @@ private void OnPipeConnection(IAsyncResult result)
39213945
RestoreFromTray();
39223946
});
39233947
}
3948+
elseif(message.StartsWith("OpenProject:"))
3949+
{
3950+
string[]sep=newstring[]{"<|>"};
3951+
varprojData=message.Split(sep,StringSplitOptions.None);
3952+
3953+
Dispatcher.Invoke(()=>
3954+
{
3955+
varproj=newProject();
3956+
proj.Version=projData[1];
3957+
proj.Path=projData[2];
3958+
proj.Arguments=projData[3];
3959+
Tools.LaunchProject(proj);
3960+
});
3961+
}
39243962
}
39253963
}
39263964
catch(Exceptionex)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp