Вопрос: .Net развертывание приложений


Я пишу приложение для форм Windows, которое будет продано корпорациям малого и среднего размера и будет использоваться пользователями в локальной сети.

Чтобы упростить работу с сетевыми администраторами, я подумываю использовать .NET 3.5 SP1 и приложение работает из общего сетевого ресурса. Таким образом, установка клиента минимальна (я знаю, что они должны иметь .Net 3.5 SP1).

Администратор установит приложение на сервер, запустит установщик Windows, а затем отправит пользователям по электронной почте путь к сетевому пути, чтобы они могли начать использовать приложение. Альтернатива заключается в том, чтобы администратор установил приложение на сотни компьютеров, чего я стараюсь избегать. Каждый раз, когда я обновляю приложение, администратор должен только переустанавливать его на одном сервере.

Я хочу получить ваше мнение, если вы использовали такое развертывание, какие подводные камни и что я должен знать.

Заранее спасибо.


6
2017-12-23 20:14


Источник


Приобретено, потому что вам все равно. - Joseph Kern
+1 - От всей души согласен. - Evan Anderson


Ответы:


Как правило, я бы предпочел, чтобы вы просто упаковали приложение в пакет установщика Windows (MSI). Я могу развернуть это на любое количество ПК безболезненно всего за несколько минут.

Я предпочел бы иметь приложение на жестких дисках своих компьютеров или сидеть в «общей папке» на сервере. Коэффициенты хороши, что приложение будет запускаться очень плохо, если «общая папка» на сервере находится в медленной линии WAN, но пользовательский интерфейс приложения в отношении доступа к удаленной базе данных SQL Server может быть приемлемым по той же линии WAN , Таким образом, я бы предпочел приложение на жестком диске ПК.

Я также считаю, что пропускная способность моей ЛВС является ценным товаром, и каждый раз, когда пользователь запускает эту программу, перетаскивая программу по проводам, мне кажется расточительным.


3
2017-12-23 20:19



Я люблю MSI. Это необходимо для развертывания приложений. - Joseph Kern
Я не понимаю, почему кто-то использует что-либо, кроме MSI для развертывания приложений Windows. Я устал от устаревших программ установки на основе EXE. - Evan Anderson
Protip: используйте 7-zip, чтобы открыть exe-установщик и посмотреть, что внутри. Если вы загрузите программу установки itunes (например) и откройте ее с помощью 7-zip, угадайте, что вы найдете? Множество MSI! - Joseph Kern
@ Джозеф: Определенно. Каждый раз, когда я запускаю установщик на основе EXE и вижу знакомые диалоги установщика Windows, я начинаю получать подозрительные данные. Проверка журнала событий для записей «MsiInstaller» подтверждает это, и быстрое переключение в каталог «% TEMP%» обычно показывает файлы MSI, которые распаковали установку на основе EXE. - Evan Anderson
Определенно это. Простое место на жестком диске для большинства, а инструменты доступны и просты в использовании и развертывании MSI с использованием объекта GPO для установки программного обеспечения. Visual Studio предоставляет встроенную функцию для создания пакета установки MSI для любого .NET-проекта, это очень просто. - Greg Askew


Эван делает очень хорошие очки. Я хотел бы также обратиться к вашему процессу обновления: хотя я понимаю, что вы хотите упростить процесс обновления, это может быть опасно. Простой нелегко.

Я бы (как администратор) хотел бы видеть установщик MSI (с деинсталлятором). Модификации должны обрабатываться одинаково. Таким образом, наш процесс установки также может быть нашим процессом обновления.

Могу ли я также добавить свой первый запрос функции? Внесите реестр, содержащий информацию о версии приложения. Это необходимо установить во время установки и сброса во время обновлений. Хотя это не большой поклонник реестра вообще, это парадигма окон. Это намного проще, чем проверка версии DLL (или любых файлов, которые вы будете использовать).

Большое вам спасибо за то, что вы спросили нас, системных администраторов, чего мы хотим. Пожалуйста, возвращайся, когда у тебя появятся вопросы, и приведи своих друзей.


2
2017-12-23 20:31





Вы должны изучить ClickOnce Развертывание. Описание Википедии.


2
2017-12-23 20:57





+1 для развертывания clickonce. Я использую это, чтобы управлять 3 приложениями более чем 100 машин в 4 странах.


2
2017-12-23 21:06





Одна вещь, которую я хотел бы добавить, это то, что приложение .NET, выполненное из сетевого пути, работает с низкими привилегиями. В зависимости от того, что делает ваша заявка, это не может быть большой проблемой. Но вы должны проверить это, прежде чем выбирать этот путь. В этой теме есть хорошие предложения - нажмите «Один раз», MSI и развертывание через объект групповой политики. Я могу сказать, что я использовал их в некоторой степени. С кликом После того, как вам не потребуется много помощи от администратора, кроме настройки виртуального каталога для размещения вашего приложения форм.


1
2017-12-24 18:39





Я определенно предлагаю вам ИЗБЕЖАТЬ этого. Если вы планируете запускать приложение через сетевой ресурс, то ваш мир во время сетевых подключений к сети, когда есть сбой. Доли Windows медленны и часто ненадежны, когда многие пользователи получают доступ к одной и той же доле. Это связано с сложной сетевой моделью.

У меня есть приложение, которое считывает файлы с общей папки. Часто мы получаем случайные ошибки, которые блокируют нас из доли. Есть множество проблем, которые просто озадачивают. Я настоятельно рекомендую вам избегать использования доли.

Могу ли я рекомендовать другое решение? Перекодируйте свой пользовательский интерфейс в веб-службу. Затем запустите приложение на веб-сервере. Затем ваши клиенты могут использовать браузер для использования вашего приложения. Winforms можно легко преобразовать в веб-формы.


0
2017-12-23 20:19



Мне кажется, что он планирует перетащить программу через провод через общий доступ к файлам Windows, но доступ к данным в экземпляре SQL Server. Если бы он делал «общую файловую базу данных», я бы согласился с вашей оценкой 100% повторно: не используя такую ​​архитектуру. - Evan Anderson
Andrew, Winforms НЕ МОЖЕТ быть преобразован в веб-формы. Мое приложение не может быть закодировано как сайт ASP.Net, потому что веб-платформа ограничена тем, что я делаю.


Ну, такого рода развертывание очень хорошо зарекомендовало себя, оно используется с тех пор, как на рассвете вычислений. Конечно, он отлично работает, но явно накладывает большую нагрузку на сеть, если это находится в офисе, где нет ссылок на 100 Мб / 1 Гбит и много емкости сервера, тогда это будет хорошо, но это будет боль, чтобы работать через Интернет или соединение с низкой пропускной способностью.


0
2017-12-23 20:20





Если вам удастся попасть в голову, я бы предпочел, чтобы вы разработали приложение для конечного пользователя, а не для системного администратора. У меня есть несколько причин для этого:

  1. Что делать, если нет сети? Вы ограничиваете свою потенциальную клиентскую базу, если ваше приложение невозможно установить и полностью использовать на одной машине.

  2. Как насчет компаний, у которых нет сетевых администраторов? Сколько будет работать человек, который обычно обрабатывает кредиторскую задолженность, делая свои установки и обновления? Возможно, им понадобится нанять консалтинговую компанию, чтобы помочь им, поэтому вы только что добавили в TCO для своего приложения. Вы также внесли свое приложение в зависимость от наличия конкретной инфраструктуры.

  3. Я ненавижу больше, чем приложение, которое нужно запускать из общего сетевого ресурса. Загрузка exe и DLL по сети - это рецепт проблем. Кратковременная потеря конъюнктивности или перегрузки и ваше приложение перестает работать правильно, потому что оно потеряло связь с необходимыми EXE и DLL и т. Д.

  4. Я системный администратор, я бы хотел, чтобы моя работа была легкой, но иногда это не так, и это факт работы. Иногда моя работа требует от меня посещения конечных пользователей для установки и обновления программного обеспечения. Если я не хочу этого делать, я, вероятно, ошибаюсь.

Когда вы строите автомобили, вы строите их для потребителя, а не для механика.


0
2017-12-24 00:10



Я бы сказал, что во многих случаях автомобиль, созданный для «механика», тоже хорош для потребителя. Приложение, которое легко установить и обслуживать на флоте ПК, должно быть довольно легко установить на одном ПК. Без какого-либо правонарушения, если вы считаете, что физически посещаемые компьютеры - это правильный способ обновления программного обеспечения, тогда вы предаете тот факт, что у вас нет большого количества компьютеров, за которые вы несете ответственность. Если бы я посетил компьютеры для выполнения обновлений, я бы никогда ничего не сделал. - Evan Anderson
@Evan: Точка взята, и никакого преступления не принято. Я не говорю, что я предпочитаю посещать конечных пользователей или что это наиболее эффективные и эффективные средства установки и обновления программного обеспечения. Я говорю, что в конце дня это часть работы. Лично я предпочитаю разворачивать программное обеспечение через объект групповой политики. - joeqwerty