Pull to refresh
1
0
RaTT @RaTT

User

Send message
Почему бы вам не сделать такую полезную вещь, как платную интернет-трансляцию вашей конференции за мелкий прайс? Разработчики, живущие не в default-city были бы весьма довольны, да и вам тоже, имхо, был бы неплохой профит.
А где другие части-то? 4 года уж прошло)
Да, и впрямь! Прощения просим(
Там же в комментах есть все! connect issue id 767638
Ужасное неудобство было! Правится Autohotkey скриптом секунд за 10)
Неа, не исправили. У вас там теперь «инкременирование». А надо «инкременТирование».
Есть отличный плагин под названием BuildVersionIncrement. Зачем изобретать велосипед?
Сайт проекта
Версия под 2012/2013
У вас что за сервер? Ну т.е. где хранится файл этот version.xml? Я полагал, что у вас на IIS-е крутится какой-то сайт, где этот version.xml лежит. Если так, то сделать проверку версии файлов, лежащих на сервере (и их.контрольных сумм, кстати), лучше в коде сайта, который крутится в IIS-e. Но, если у вас, например, фтп, то лучше автоматизировать процесс выкладывания сайтов на фтп, в процессе которого этот version.xml будет генериться автоматом. С клиента вы версии файлов на сервере так не узнаете, конечно.

Да, есть еще архитектурный вопрос. Зачем вы разнесли обновление и рестарт программы в 2 разных модуля? Имхо, вполне можно было обойтись одним.
Совершенно верно.
Первая простыня кода просто вопиёт о рефакторинге:
if (File.Exists(«settings.xml») && new FileInfo(«settings.xml»).Length == 0) { File.Delete(«settings.xml»); }
if (File.Exists(«Ionic.Zip.dll») && new FileInfo(«Ionic.Zip.dll»).Length == 0) { File.Delete(«Ionic.Zip.dll»); }
if (File.Exists(«restart.exe») && new FileInfo(«restart.exe»).Length == 0) { File.Delete(«restart.exe»); }

Вас дублирование одного и того же кода (не говоря уже о строковых литералах) не смущает? Одной ф-цией, в которую передаётся имя файла сделать это нельзя было?

var task1 = Task.Factory.StartNew(() => DownloadFile(«Ionic.Zip.dll», doc.GetElementsByTagName(«Ionic.Zip»)[0].InnerText, doc.GetElementsByTagName(«Ionic.Zip»)[0].Attributes[«checksumm»].InnerText));
var task2 = Task.Factory.StartNew(() => DownloadFile(«restart.exe», doc.GetElementsByTagName(«restart»)[0].InnerText, doc.GetElementsByTagName(«restart»)[0].Attributes[«checksumm»].InnerText));
var task6 = Task.Factory.StartNew(() => DownloadFile(«LanguagePack.dll», doc.GetElementsByTagName(«languagePack»)[0].InnerText, doc.GetElementsByTagName(«languagePack»)[0].Attributes[«checksumm»].InnerText));

Здесь то же самое, плюс можно порекомендовать юзать вместо XmlDocument-a XDocument.
update.Check(true, progressBar1);

Передача классу визуального компонента — это зло!
Да, кстати, зачем вы храните в своём файле version.xml на сервере версии сборок? Ведь эту информацию можно получить всё тем же методом FileVersionInfo.GetVersionInfo?

debug.Save(«private void DownloadFile(string filename, string xmlVersion, string xmlChecksumm)», «Filename: » + filename + Environment.NewLine + «Localname: » + (localFile != null? localFile: «null») + Environment.NewLine + «URL: » + url, ex.Message);

Попробуйте использовать string.Format, будет гораздо более читабельно.

if (File.Exists(filename) && summ != null && new FileInfo(filename).Length > 0)
using (FileStream fs = File.OpenRead(filename))
{
System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] fileData = new byte[fs.Length];
fs.Read(fileData, 0, (int)fs.Length);
byte[] checkSumm = md5.ComputeHash(fileData);
return BitConverter.ToString(checkSumm) == summ.ToUpper()? true: false;
}
else
return false;

Этот код, лучше написать с условием типа OR и возвратом false в начале, что позволит избежать лишней вложенности (т.е. будет меньше скобок = лучше читаемость)

Стоит также отметить отсутствие комментариев в коде, их наличие могло сократить статью в разы (например, при описании параметров функции). А также рекомендуется почитать про обработку ошибок, а для лучшего определения места в коде, кстати, хорошо использовать ex.StackTrace.
Успехов.
Стал читать, сразу наткнулся:

CustomerLookup
finds customer by id
fails for duplicate customers
Прим. «CustomerLookup [поиск заказчика]: находит заказчика по ID, не находит повторяющихся заказчиков,..»)
Не «не находит», а падает (тест), если есть несколько одинаковых заказчиков.
Здорово! Хм, а ведь, казалось бы, совсем недавно только ходил в Экспоцентр на Красной пресне и смотрел на какой-то quake-оподобный шутер через Vfx-1…
Нате вот, любители Ленты.ру, почитайте: vvv-ig.livejournal.com/640929.html
Вот-вот. Бизнес есть бизнес. Надоело мне, например, как владельцу читать русофобские статеечки этой команды — самое время поменять для начала главреда. А уж то, что за ним все остальные потянулись, владельцу только на руку, имхо!
не мог пройти мимо этого слова.
«эВфЕмизм»
Я просто оставлю это здесь! www.youtube.com/watch?v=nHNvw5cVJYw
А порекомендуйте эти самые «более специализированные форумы»!

Information

Rating
Does not participate
Location
Самара, Самарская обл., Россия
Date of birth
Registered
Activity