/// <summary> /// Starts functions. /// </summary> /// <param name="startupTaskId">Startup task ID</param> /// <param name="caller">Caller assembly</param> /// <remarks>Startup task ID must match that in AppxManifest.xml.</remarks> public bool Start(string startupTaskId, Assembly caller = null) { if (string.IsNullOrWhiteSpace(startupTaskId)) { throw new ArgumentNullException(nameof(startupTaskId)); } if (caller == null) { caller = Assembly.GetCallingAssembly(); } var title = caller.GetTitle(); _holder = new RemotingHolder(); if (!_holder.Create(title)) { return(false); } _worker = (OsVersion.Is10Redstone1OrNewer && PlatformInfo.IsPackaged) ? (IStartupWorker) new BridgeWorker(taskId: startupTaskId) : (IStartupWorker) new RegistryWorker(title: title, path: caller.Location); return(true); }
/// <summary> /// Starts. /// </summary> /// <param name="name">Name</param> /// <param name="startupTaskId">Startup task ID</param> /// <param name="args">Arguments to another instance</param> /// <returns> /// <para>success: True if no other instance exists and this instance successfully starts</para> /// <para>response: Response from another instance if that instance exists and returns an response</para> /// </returns> /// <remarks>Startup task ID must match that in AppxManifest.xml.</remarks> public (bool success, string response) Start(string name, string startupTaskId, IReadOnlyList <string> args) { if (string.IsNullOrWhiteSpace(name)) { throw new ArgumentNullException(nameof(name)); } if (string.IsNullOrWhiteSpace(startupTaskId)) { throw new ArgumentNullException(nameof(startupTaskId)); } _holder = new PipeHolder(name, null); var(success, response) = _holder.Create(args?.ToArray()); if (!success) { return(success : false, response); } _worker = (OsVersion.Is10Redstone1OrNewer && IsPackaged) ? (IStartupWorker) new BridgeWorker(taskId: startupTaskId) : (IStartupWorker) new RegistryWorker(name: name, path: Assembly.GetEntryAssembly().Location); return(success : true, null); }