public void Shutdown() { Log?.LogMessage("Shutting down"); if (IsElevated) { UpdateAgent.Start(); } else if (IsClient && Dispatcher != null && Dispatcher.IsConnected) { InstallResponseMessage response = Dispatcher.SendShutdownRequest(); } Log?.LogMessage("Shutdown completed."); Log?.LogMessage($"Restart required: {Restart}"); }
public void DeleteWorkloadInstallationRecord(WorkloadId workloadId, SdkFeatureBand sdkFeatureBand) { Elevate(); if (IsElevated) { string workloadInstallationKeyName = Path.Combine(BasePath, $"{sdkFeatureBand}", $"{workloadId}"); Log?.LogMessage($"Deleting {workloadInstallationKeyName}"); _baseKey.DeleteSubKeyTree(workloadInstallationKeyName, throwOnMissingSubKey: false); } else if (IsClient) { InstallResponseMessage response = Dispatcher.SendWorkloadRecordRequest(InstallRequestType.DeleteWorkloadInstallationRecord, workloadId, sdkFeatureBand); ExitOnFailure(response, "Failed to delete workload record key."); } }
public void InstallMessageDispatcherProcessesMessages() { string pipeName = Guid.NewGuid().ToString(); NamedPipeServerStream serverPipe = CreateServerPipe(pipeName); NamedPipeClientStream clientPipe = new NamedPipeClientStream(".", pipeName, PipeDirection.InOut); InstallMessageDispatcher sd = new(serverPipe); InstallMessageDispatcher cd = new(clientPipe); Task.Run(() => { ServerDispatcher server = new ServerDispatcher(sd); server.Run(); }); cd.Connect(); InstallResponseMessage r1 = cd.SendMsiRequest(InstallRequestType.UninstallMsi, ""); InstallResponseMessage r2 = cd.SendShutdownRequest(); Assert.Equal("Received request: UninstallMsi", r1.Message); Assert.Equal("Shutting down!", r2.Message); }
public void WriteWorkloadInstallationRecord(WorkloadId workloadId, SdkFeatureBand sdkFeatureBand) { Elevate(); if (IsElevated) { string subkeyName = Path.Combine(BasePath, $"{sdkFeatureBand}", $"{workloadId}"); Log?.LogMessage($"Creating {subkeyName}"); using RegistryKey workloadRecordKey = _baseKey.CreateSubKey(subkeyName); if (workloadRecordKey == null) { Log?.LogMessage($"Failed to create {subkeyName}"); } } else if (IsClient) { InstallResponseMessage response = Dispatcher.SendWorkloadRecordRequest(InstallRequestType.WriteWorkloadInstallationRecord, workloadId, sdkFeatureBand); ExitOnFailure(response, "Failed to write workload record key."); } }