/// <summary> /// Checks to see if there is an update for the service. The size of the update will be return. /// If the service returns 0 if no update is available. /// </summary> /// <param name="details">The details of the service that is checking for the update.</param> /// <returns>The size of the update.</returns> public WindowsServiceUpdate CheckForUpdate(WindowsServiceDetails details) { var response = new WindowsServiceUpdate(); if (!Directory.Exists(_appDataDirectory)) { response.Size = -1; return response; } var filter = details.Name + "-*.zip"; var zipFilePath = Directory.GetFiles(_appDataDirectory, filter).OrderByDescending(x => x).FirstOrDefault(); if (zipFilePath == null) { response.Size = -2; return response; } var fileNameParts = Path.GetFileNameWithoutExtension(zipFilePath).Split('-'); if (fileNameParts.Length != 2) { response.Size = -3; return response; } var version = fileNameParts[1]; if (version != details.Version) { response.Name = Path.GetFileName(zipFilePath); response.Size = new FileInfo(zipFilePath).Length; return response; } return response; }
private void StartServiceUpdate(WindowsServiceUpdate update) { var agentBits = DownloadUpdate(update); var directory = SaveUpdate(agentBits); StartProcess(directory, ServiceFileName + ".exe", Arguments.ServiceArguments + " -r \"" + ServiceDirectory + "\""); WriteLine("Shutting down service for updating."); Task.Run(() => OnStop()); }
private byte[] DownloadUpdate(WindowsServiceUpdate update) { // Get the file from the deployment service. var data = new byte[update.Size]; var request = new WindowsServiceUpdateRequest { Name = update.Name, Offset = 0 }; // Read the whole file. while (request.Offset < data.Length) { var chunk = _client.DownloadUpdateChunk(request); Array.Copy(chunk, 0, data, request.Offset, chunk.Length); request.Offset += chunk.Length; } // Return the data read. return data; }
/// <summary> /// Checks to see if there is an update for the service. The size of the update will be return. /// If the service returns 0 if no update is available. /// </summary> /// <param name="details">The details of the service that is checking for the update.</param> /// <returns>The size of the update.</returns> public WindowsServiceUpdate CheckForUpdate(WindowsServiceDetails details) { var response = new WindowsServiceUpdate(); if (!Directory.Exists(_appDataDirectory)) { response.Size = -1; return(response); } var filter = details.Name + "-*.zip"; var zipFilePath = Directory.GetFiles(_appDataDirectory, filter).OrderByDescending(x => x).FirstOrDefault(); if (zipFilePath == null) { response.Size = -2; return(response); } var fileNameParts = Path.GetFileNameWithoutExtension(zipFilePath).Split('-'); if (fileNameParts.Length != 2) { response.Size = -3; return(response); } var version = fileNameParts[1]; if (version != details.Version) { response.Name = Path.GetFileName(zipFilePath); response.Size = new FileInfo(zipFilePath).Length; return(response); } return(response); }
private void StartServiceUpdate(WindowsServiceUpdate update) { var agentBits = DownloadUpdate(update); var directory = SaveUpdate(agentBits); StartProcess(directory, ServiceFileName + ".exe", Arguments.ServiceArguments + " -r \"" + ServiceDirectory + "\""); WriteLine("Shutting down service for updating."); Task.Run(() => OnStop()); }
private byte[] DownloadUpdate(WindowsServiceUpdate update) { // Get the file from the deployment service. var data = new byte[update.Size]; var request = new WindowsServiceUpdateRequest { Name = update.Name, Offset = 0 }; // Read the whole file. while (request.Offset < data.Length) { var chunk = _client.DownloadUpdateChunk(request); Array.Copy(chunk, 0, data, request.Offset, chunk.Length); request.Offset += chunk.Length; } // Return the data read. return data; }