Пример #1
0
        /// <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;
        }
Пример #2
0
		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());
		}
Пример #3
0
		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;
		}
Пример #4
0
        /// <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);
        }
Пример #5
0
        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());
        }
Пример #6
0
        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;
        }