Example #1
0
        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.");
            }
        }
Example #3
0
        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.");
            }
        }