Какова польза и реальная цель установки программы?

Из всех программ, которые я написал до сих пор, если я хочу, чтобы он работал на другой рабочей станции, мне просто нужно скопировать и вставить исполняемые файлы и необходимые файлы, необходимые для его запуска (например: .o-файлы, двоичные файлы ..).

Но вся программа, созданная для коммерческого использования, всегда поставляется с установщиком. Например, игры для ПК. Поэтому мой вопрос: каковы основные преимущества / причины установки, когда мы могли просто скопировать файлы на целевую рабочую станцию?

– Одна из причин – вероятно, предотвратить пиратство. Но кроме этого, я уверен, есть другие более сильные причины?

4 Solutions collect form web for “Какова польза и реальная цель установки программы?”

Сложность развертывания

Только простейшие приложения могут работать с простой копией файлов , и даже тогда вам нужно иметь удобный способ загрузки и копирования файлов в нужное место – и для этого и предназначена настройка. Установка также является маркетинговым инструментом, который может использоваться для брендинга и согласованности продуктов, а также для установки пробной версии продукта – очень важной части программного обеспечения.

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

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

Ошибки при развертывании являются кумулятивными в том смысле, что, как только у вас возникла ошибка, вы, как правило, не имеете доступа к рассматриваемой машине для отладки – и исправление может легко нанести больше урона. Вы управляете процессом доставки , а не просто отлаживаете код и двоичные файлы. Каждая доставка добавляет риск и сложность, и довольно скоро у вас может возникнуть невозможность сохранить ваши руки, если вы не будете осторожны . Кроме того, все машины, на которых запущена ваша установка, почти наверняка будут в совершенно ином состоянии, чем другой компьютер.

Таким образом, развертывание (установки) – это сложный процесс миграции любого компьютера из одного состояния в другое . Это требует дисциплинированного подхода. Установка должна установить все необходимые файлы и настройки и убедиться, что продукт настроен для первого запуска или готов к настройке при запуске без сбоев. Это может быть очень сложной задачей. Список вещей, которые, возможно, потребуется настроить, постоянно растет , и для каждой новой версии Windows кажется, что новые препятствия создаются, чтобы усложнить развертывание . Такие препятствия include в себя приглашения UAC , блокировку самовосстановления на серверах терминалов, изменение поведения кэширования основных файлов MSI , redirect новых папок , функции виртуализации, новые и измененные функции подписки с использованием шифрования и цифровых сертификатов , блокирование безопасности Active X killbits , сложность 64 бит и т. Д. … Список можно продолжить.

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

Обзор задач развертывания

Задачи и функции, необходимые в настройках, от самого фундаментального и базового со встроенным установщиком Windows или сторонней инструментальной поддержкой, к высококонкурентным специальным решениям, где вы должны сами что-то кодировать, чтобы справляться с уникальными требованиями к развертыванию .

Инструменты развертывания действительно содержат большинство, которые вам когда-либо понадобились для любого развертывания, но некоторые вещи по-прежнему кодируются в каждом конкретном случае. Эти специальные решения реализованы как « пользовательские действия » в установщике Windows, и они без тени сомнения являются основной причиной сбоев развертывания . Подробнее о пользовательских действиях см. В разделе «Очень продвинутый».

Чрезмерное использование пользовательских действий и многого специального кодирования имеет тенденцию указывать на ошибочный дизайн приложения , но в некоторых случаях вы просто имеете дело с новыми технологиями, и вам нужно сворачивать свое собственное решение, чтобы развернуть свое решение. Это именно то, что для пользовательских действий. Со временем должны быть созданы и предпочтительны стандартизированные решения. И небольшие изменения в дизайне приложений часто могут устранять сложные пользовательские действия. Это очень важный факт о развертывании программного обеспечения – есть так много переменных, что нужно выбирать для простоты, когда это возможно.

На базовом уровне обзора развертывание должно учитывать:

Основы настройки

Все сторонние инструменты обеспечивают хорошую поддержку этих основополагающих основ, но есть некоторые различия. Установка предпосылок может быть областью, где сторонние инструменты и свободные frameworks, такие как WiX, отличаются большей частью с точки зрения простоты использования – на момент написания. Поддержка там, но это может быть немного сложной задачей.

  • Проверьте, подходит ли система для установки соответствующего пакета.
    • Дисковое пространство.
    • Тип и версия ОС.
    • Языковая версия.
    • Компьютерная архитектура x86 / x64.
    • Неподходящие платформы: услуги тонких клиентов / Citrix / Terminal Services
      • Индивидуальная настройка необходима из-за пользовательской блокировки.
    • Возможно, даже вредоносная ситуация (я хочу – может вызвать таинственные проблемы с развертыванием).
    • и т.д…
  • Отсканируйте наличие и при необходимости установите предварительные условия и время автономной работы .
    • Обеспечение простого развертывания предварительных условий и времени выполнения – это задача с широкой поддержкой инструментов сторонних разработчиков. В Windows Installer имеется ограниченная поддержка. Основной функцией распределения времени выполнения в установщике Windows является модуль слияния – по существу, «включить эквивалент файла» для файлов MSI. Стандартный способ развертывания общих файлов. Модуль слияния компилируется в ваш MSI во время сборки – вид раннего связывания в условиях разработчика.
    • Некоторые предварительные условия устанавливаются через модули слияния установщика Windows. Другие обычно устанавливаются с использованием собственного файла установки (в разных форматах).
    • Примеры: Active X для игр, Crystal Reports , Microsoft Report Viewer Runtime , MySQL , SQL Server Runtime , VB6 Runtime , ASP.NET MVC Runtime , Java Runtime , Silverlight , Microsoft XNA , VC ++ Runtime , .NET runtime , Visual Studio Tools For Office Runtime , Visual F # Runtime , время выполнения MSXML, время выполнения MS Access , Apache Tomcat , различные первичные сборки Interop , версии PowerShell и т. Д. …
    • Наконец, некоторые основные компоненты Microsoft, такие как версии установщика Windows и версии PowerShell, обычно удаляются через Центр обновления Windows и, возможно, лучше исключить из вашей установки (просто проверьте наличие и сообщите пользователю о запуске Центра обновления Windows, если компонент отсутствует). Фактическая практика здесь меняется.
  • Предоставьте графический интерфейс, подходящий для ввода необходимых настроек пользователем.
    • Обычная практика заключается в том, чтобы вводить и проверять лицензионные ключи в настройке.
    • Лично я считаю, что это лучше сделать из самого приложения как по практическим соображениям, так и по соображениям безопасности – затруднить пиратство, разрешить пробную установку, сократить чрезмерные вызовы поддержки установки (вы не поверите …) и т. Д.
    • Для сложных настроек для сбора параметров развертывания может потребоваться множество графических интерфейсов – особенно для настроек сервера с IIS, MS SQL, COM + и другими передовыми компонентами.
  • Разрешить установку в бесшумном режиме для корпоративного использования.
    • Чрезвычайно важно – все развертывание корпоративной системы является автоматическим и тихим (графический интерфейс не отображается во время установки), за исключением определенных серверных установок.
    • Меньшие компании могут запускать вашу настройку в режиме графического интерфейса. По моему опыту они обычно делают.
    • Домашние пользователи обычно всегда запускают вашу настройку в режиме графического интерфейса.
    • Знайте свою целевую группу и обязательно убедитесь, что вы поддерживаете бесшумную работу, если вы нацеливаете корпоративных клиентов. Однако все настройки должны работать в бесшумном режиме, и если вы будете следовать правилам и лучшей практике MSI, это «бесплатно».

Добавление основного материала

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

  • Установите файлы и параметры реестра .
  • Установите odbc , ассоциации файлов , ярлыки и значки .
  • Обновите приложение и параметры всей системы.
  • Обновляйте и объединяйте текстовые файлы, такие как INI-файлы .
  • Зарегистрируйте COM-файлы и включите .NET COM Interop, если потребуется.
  • Установите сборки .NET в GAC и запустите пользовательские classы установщика .NET .
  • Установите сборочные windows сборок в WinSxS .
  • Предоставлять подписанные и заверенные файлы (также относится к самому установочному файлу).
  • Установка и управление службами Windows .
  • Установите апплеты панели управления .
  • Обновить переменные среды .

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

В частности, мы часто видим пользовательские действия, используемые для установки служб Windows – и это обычно является признаком очень плохо спроектированного сервиса или в других случаях просто незнанием того, как выполнить развертывание. Оба вопроса вместе также распространены. Развертывание такой службы часто связано с применением пользовательских разрешений ACL и модифицированных привилегий NT, чтобы сделать запуск службы с правами пользователя, а не как LocalSystem, что является, как правило, единственным правильным способом запуска служб Windows. Запуск службы с учетными данными пользователя – это « анти-шаблон развертывания », о котором стоит упомянуть попутно (подробнее об этом позже).

Другим распространенным пользовательским действием, которое всегда неправильно, является установка файлов в GAC с помощью настраиваемого действия . В Windows Installer есть хорошая встроенная поддержка, и любые оправдания для установки через пользовательские действия почти наверняка скрывают плохой дизайн или некоторое обобщенное безумие :-). Также факт, что многие распространят слишком много вещей в GAC в целом, но это проблема разработки. Когда мне нужно развернуть свои сборки в GAC?

Наконец, classы установщика .NET предназначены для разработчиков для тестирования своих компонентов во время разработки – его нельзя использовать для развертывания . Это, по сути, просто эквивалент .NET саморегистрации (что также неприемлемо для MSI – вам нужно извлечь информацию COM и добавить в таблицы MSI – см. Ссылку для подробностей). MSI является декларативным – он должен содержать все изменения, которые должны применяться к системе, чтобы обеспечить надлежащий откат и управление. Таким образом, сообщение состоит в том, что classы установщика .NET должны использоваться только для разработки и тестирования . После создания MSI для развертывания вашего приложения вы должны использовать конструкции MSI для обеспечения правильного развертывания с поддержкой отката и интеллектуальным управлением. Мы видим, что эти classы .NET-установщика используются в основном для обслуживания и установки GAC. В MSI это переводит на использование таблиц ServiceInstall и ServiceControl для служб и просто маркировку компонента для установки GAC для установки на GAC (должна быть подписанная assembly). Как только вы знаете, это легко, и вы не пропустите classы установщика .NET, потому что MSI работает, как « автоматически », когда вы делаете это правильно. Вы легко получаете надежный откат.

Добавление расширенного контента (часто это сервер)

Несмотря на поддержку во всех инструментах развертывания для большинства из этих проблем, я часто обнаружил, что мне необходимо реализовать пользовательские действия и специальные решения для обеспечения надлежащего развертывания в определенных случаях. Это особенно касается развертывания COM + и IIS . WiX обеспечивает высоко настраиваемую поддержку для обоих типов развертывания, но у меня ограниченный опыт использования.

Обновление и установка XML-файлов – это задача, поддерживаемая каждым инструментом развертывания, поскольку для этого в системе установщика Windows нет встроенной поддержки, что довольно удивительно на данный момент.

Что касается установки базы данных и, в частности, обновлений , я нахожусь на заборе, думая, что это должно быть сделано из приложений с надлежащей аутентификацией пользователя и интерактивным использованием вместо «одного выстрела» и выданной операции развертывания (что может показаться неудачным, если бы не было хорошего управления исключениями или варианты восстановления). Или в других случаях кажется, что обновления должны быть управляемым процессом, включающим пользователей, которые собирают корпоративные билеты, обрабатываемые профессиональными DBOs. Ниже приводится более подробная информация.

  • Конфигурация IIS , Apache или других веб-серверов .
    • Это целый мир, особенно в отношении IIS. Я обнаружил, что инструменты развертывания не имеют возможностей для развертывания сайтов, как того требуют разработчики и корпоративные команды.
    • Несмотря на то, что я в значительной степени непроверен, платформа WiX обеспечивает очень гибкую реализацию конфигурации и развертывания IIS.
    • Я ожидаю, что для достижения специальных конфигураций развертывания используется множество пользовательских действий.
  • Запуск сценариев SQL-сервера в отношении баз данных.
    • Создайте db, подключитесь к db, обновите db, запустите хранимые процедуры, возможно, даже вызовите резервные копии или запланируйте новые задачи и т. Д. … Я не знаю, что здесь делают люди.
    • Должно ли это быть сделано в приложении или DBO? Это кажется гораздо более надежным. Настройка «один выстрел», приложение может быть перезапущено, и вы повторите попытку – лучшая обработка исключений.
    • Кроме того, MSI-установка имеет очень ограниченный графический интерфейс, сильно ограниченный событиями из-за общего дизайна MSI (правильные диалоги Win32 могут быть созданы из ограниченного графического интерфейса MSI, но это требует больших усилий – я только сделал это один раз).
    • Важнейшая настройка может выполняться с повышенными правами , но это только на локальной машине. Аутентификация по-прежнему необходима для базы данных (если не используется проверка подлинности Windows).
    • Обновление базы данных – это транзакция сама по себе, которая будет выполняться как часть общей транзакции установщика Windows. Не очевидно, как обрабатывать ошибки или что делать с точки зрения отката, если установка завершилась неудачей.
    • Излишне говорить, что все это может стать очень сложным в вашей настройке. На мой взгляд это задача (корпоративная), а не просто задача развертывания. Проницательные комментарии очень приветствуются по этому вопросу – я нахожусь на заборе в отношении лучшей практики.
    • Если вы предоставляете клиентам клиентское или серверное решение своим клиентам и вам нужен способ настроить базы данных (на стороне сервера?) «Свежими» по умолчанию, чтобы помочь вашим клиентам «начать» с вашим решением, тогда развертывание базы данных, безусловно, имеет смысл меня. Но скрипты обновлений, выполняемые как часть установки, предназначенные для существующих баз данных, будут беспокоить меня с точки зрения надежности и управления – не говоря уже о безопасности.
    • Для корпоративных обновлений баз данных казалось бы, что надлежащий процесс, связанный с DBO, будет более безопасным. Они могут запускать правильную резервную копию до того, как будут применены обновления, а затем вернется истинный откат, если проблемы обнаружены в UAT.
  • Установка компонентов браузера ActiveX (сертификат основан на браузере).
    • Установка подписанного файла CAB, загруженного с веб-страницы (только администратор, может быть захвачен как MSI для массового развертывания с повышенными правами).
    • По умолчанию устанавливается «C: \ Windows \ Downloaded Installations».
    • Осложнения могут возникать, если версия в CAB-файле отличается от версии, запрошенной веб-страницей (вызывает сгенерирование папок CONFLICT, когда установки продолжают работать).
  • Обновление и объединение файлов XML .
    • Advanced, потому что он (удивительно) не поддерживается Windows Installer .
    • Поддерживаются расширениями с помощью WiX и сторонних инструментов развертывания.
  • Настроить и управлять компонентами COM + .
    • Техническое примечание. Я несколько раз не справлялся с этим, используя несколько сторонних инструментов. Кажется, что общее отсутствие необходимых функций.
    • Обычно я вручную настраиваю приложение COM +, а затем экспортирую MSI из инструмента администрирования компонентов, который затем используется для развертывания.
    • Этот экспортированный MSI не очень хорош – хрупкий, если вы попытаетесь внести какие-либо изменения. Он содержит недокументированный файл .apl с атрибутами приложения, и любые зависимые файлы DLL или данных не includeся автоматически.
    • WiX обеспечивает поддержку COM + (вообще не тестируется мной). Надеюсь, это хорошо :-).
    • Только для справки: Понимание установки COM + Application .
  • Добавьте собственные журналы событий , настройте мониторы производительности , добавьте правила брандмауэра и другие расширения Windows. В настоящее время поддерживается большинством инструментов развертывания, включая WiX. Эти функции не поддерживаются движком установщика Windows.
  • Настройте соединения с мобильными устройствами и разверните их.
    • Может включать в себя «некоторые странности» и странные запатентованные решения.
    • Для обеспечения плавного развертывания может потребоваться обычная, родная dll (Pocket PC в тот же день – не уверен, как все работает в наши дни).
  • Установите драйверы различных типов.
    • Гораздо проще и надежнее теперь для подписанных драйверов, чем раньше.
    • Поддерживается всеми сторонними инструментами и WiX (используя dpinst.exe в фоновом режиме).
  • Подключение приложения к расширенным функциям сервера (разворачивается отдельно).
    • Автоматические системы обновления .
    • Серверы лицензий . Плавающие лицензии или регулярные лицензии.
    • Интернет-ресурсы различных типов. Справка, шаблоны, обсуждения, SDK, инструменты разработчика и т. Д.
    • Интернет-магазины .
    • В большинстве случаев это просто связано с установкой ссылки или раздела реестра, чтобы указать на ресурсы сервера, но иногда это сложнее.

Добавление очень продвинутого материала (пользовательские действия)

  • Когда встроенная поддержка какой-либо операции или задачи в самом установщике Windows или в любом из доступных сторонних инструментов отсутствует, вам остается реализовать эту функцию самостоятельно.
  • При использовании установщика Windows это включает в себя выполнение пользовательских действий различных типов (механизм установщика Windows для запуска исполняемой, настраиваемой логики установки во время установки).
  • Пользовательские действия представляют собой специально созданные исполняемые файлы (двоичные файлы: dll, exe) и скрипты, способные вносить дополнительные изменения в систему во время установки, которые не поддерживаются установщиком Windows изначально или используемым инструментом развертывания (WiX, Installshield, Advanced Installer и т. Д.). ..).
  • Пользовательские действия, которые вносят изменения в систему, выполняются с повышенными правами, чтобы изменения могли быть внесены в систему, даже если у зарегистрированного пользователя нет прав администратора. По сути, нет никаких ограничений на то, что могут сделать эти пользовательские действия. Они вооружены и опасны .
  • Пользовательские действия являются основными причинами ошибок развертывания и сбоев .
    • Руки вниз. Если сбой MSI не выполняется, он чаще всего связан с отказоустойчивым пользовательским действием.
    • Пользовательские действия трудно записывать и отлаживать из-за сложности установщика Windows. Они должны использоваться только в случае необходимости, и они должны быть написаны с полной поддержкой отката, чтобы они могли отменить все изменения, которые были применены к системе, в случае сбоя установщика и отменить изменения.
    • Это сложная и трудная работа, а пользовательские действия – большая, сложная и подверженная ошибкам проблема – банда червей.
    • Часто незначительные изменения дизайна приложений могут позволить заменять пользовательские действия стандартными функциями MSI или различными расширениями MSI, доступными в сторонних инструментах и ​​в WiX.
    • Исполняемые файлы и сценарии, которые запускаются правильно самостоятельно, могут завершиться неудачей при запуске как части MSI из-за сложного дизайна олицетворения, повышения и исполнения Windows Installer. Это не тривиальные вещи, чтобы получить право. Установка MSI представляет собой сложную транзакцию с повышенными и олицетворенными последовательностями, с которыми очень сложно справиться.
  • Типы пользовательских действий
    • Установщик Windows поддерживает настраиваемые действия, реализованные в виде специально созданных, собственных (win32) исполняемых файлов и библиотек DLL, а также скриптов, таких как JavaScript или VBScript .
    • Некоторые даже используют .NET-файлы (C #, VB.NET, DTF и т. Д.) Для запуска пользовательских действий – это не рекомендуется из-за их необходимой потребности в .NET Framework. Эти двоичные файлы называются « управляемым кодом » и не могут работать без правильной платформы .NET.
    • Наконец, существуют индивидуальные действия PowerShell, которые объединяются как с комбинациями сценариев, так и с управляемым кодом, и их не следует использовать, поскольку они требуют платформы .NET.
    • В будущем, когда платформа .NET может быть гарантирована на всех компьютерах Windows, этот управляемый код может быть жизнеспособным вариантом для общего использования, но на данный момент консенсус, похоже, является слишком рискованным и ненадежным.
  • Обычные, выборочные пользовательские действия (некоторые общие, настраиваемые задачи часто реализуются как пользовательские действия, потому что они не поддерживаются установщиком Windows, но часто необходимы).
    • Управление Акциями Windows (обычно создавайте).
    • Примените настраиваемое ACL-разрешение (для этого есть встроенная поддержка MSI).
    • Измените права NT .
    • Настройте DCOM .
    • Управление группами и пользователями .
    • Настройте пользовательские аддоны для каждого пользователя.
    • Сохранять свойства установщика (для ремонта и повторной установки).
    • Пользовательские и фирменные условия запуска .
    • Перенаправления IP-конфигурации для IIS
    • Шифрование или обфускация содержимого для обеспечения безопасности данных
    • И т.д…
  • Большинство пользовательских функциональных возможностей, упомянутых выше, теперь доступны в инфраструктуре WiX как пользовательская C ++ dll, а другие инструменты имеют некоторые аналогичные пользовательские функции. Вы всегда должны отдавать предпочтение этим готовым решениям своим собственным пользовательским действиям, поскольку откат должным образом реализован в WiX, и реализация хорошо протестирована.
  • Большинство пользовательских специалистов по развертыванию рассматривают применение пользовательских разрешений ACL и изменение привилегий NT. Требование сделать это указывает на плохой (ленивый) дизайн приложения.
  • Сводка пользовательских действий .
    • Написание пользовательских действий по своему усмотрению должно быть редким событием , которое уникально и не было сделано (лучше) раньше.
    • Незначительная переработка проекта часто устраняет неразумные и сложные конструкции развертывания. На самом деле, почти всегда.
      • Например: конфигурация приложения должна произойти при первом запуске приложения, а не во время установки.
      • Настройка должна подготовить приложение для первого запуска и выполнить задачи, требующие повышенных прав (только).
      • Инициализация пользовательских данных является особенно плохой для использования сценариев установки. Все это должно быть сделано в последовательности запуска приложения.
    • Вы должны обеспечить надлежащую поддержку отката .
      • Это сложная и напряженная работа.
      • Почти все пользовательские действия, которые я видел, вообще не выполняют откаты.
    • Вы должны писать с минимальными зависимостями .
      • Предпочтительно использовать C ++ или Installscript или, возможно, JavaScript (только для внутреннего, корпоративного развертывания, на мой взгляд). Избегайте VB Script и, безусловно, избегайте использования .NET-кода в сценариях C # / DTF или PowerShell . Существует некоторое обсуждение проблемы управляемого кода. Эксперты MSI, такие как Chris Painter, полагают, что пользовательские действия C # / DTF готовы к прайм-тайм, тогда как общий консенсус, похоже, заключается в ошибочном рассмотрении и полагаться на библиотеки C ++, пока не будет гарантирована надлежащая среда выполнения .NET. Вот длинная «дискуссия» по этой проблеме: установщик Windows терпит неудачу в Win 10, но не Win 7, используя WIX
      • Надежный код трудно писать в скрипте . Скрипты являются хрупкими, трудно отлаживаются, не обладают расширенными языковыми функциями (особенно обработкой ошибок) и уязвимы для блокировки антивируса.
      • Единственные реальные преимущества скриптов в том, что они прозрачны и инспектируются, а весь источник встроен в файл MSI (без проблем контроля версий). Корпоративные команды, которые часто отдают друг другу работу, могут использовать JavaScript (есть много старых версий VB Script, но этот язык очень плохо подходит для обработки ошибок).
      • Управляемый код имеет требования к времени выполнения, которые не могут быть гарантированы на момент написания, – и это было довольно долгое время.
      • PowerShell – это управляемый код и сценарий. Избегай это. Installshield поддерживает его как тип настраиваемого действия. Пока неясно, насколько он будет успешным. Я бы никогда не использовал его, если бы не был вынужден.
  • И многое другое…

Дополнительные осложнения для развертывания

Существует множество дополнительных осложнений при предоставлении профессиональных настроек, таких как доставка настроек на разных языках (локализация), настройка брендинга для разных реселлеров ( OEM ), обеспечение работы установки во всех требуемых операционных системах на разных языковых версиях , предоставление отдельных настроек для x86 и x64 , предоставляя уменьшенную «версию для просмотра» приложения, делая комбинированные настройки для установки клиента и сервера (может выполняться как на сервере, так и на клиенте, устанавливая разные компоненты – не рекомендуется, если вы спросите меня – подробности ), а не упомянуть о развертывании на разных встроенных устройствах, таких как телефоны, карманные компьютеры, смартфоны и т. д. …

Определенные « Развертывание Anti-Patters » также проблематичны для решения (связанный ответ – «эксперимент», и я не слишком доволен им – это незавершенная работа, но она предназначена как контрольный список для разработчиков для их усилий по развертыванию чтобы избежать действительно общих проблем). Это плохие конструкции, требуемые в настройках для правильной работы плохо спроектированных приложений . Они include в себя такие вещи, как применение пользовательских прав доступа (доступ на запись в других заблокированных путях и т. Д.), Настройка привилегий NT (как правило, «запуск как сервис» для учетной записи пользователя или, что еще хуже), или чрезмерное использование сложных пользовательских действия, которые приводят к непредсказуемым изменениям в системе (это действительно может быть что угодно и быть очень опасным). Беспокойство о бесшумной установке также является огромной, распространенной проблемой – это ужасно для корпоративного использования вашей установки. Развертывание чрезмерных объемов пользовательских данных при настройке также может быть проблематичным (трудно контролировать осложнения). И есть много других, более конкретных проблем, связанных с этим.

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

Выполнение собственного развертывания

Вам понадобится инструмент или инфраструктура для доставки собственных настроек. Вот ответ, описывающий различные инструменты, используемые для создания инсталляторов: какой установочный продукт использовать? InstallShield, WiX, Wise, Advanced Installer и т . Д. Все попытки были сделаны, чтобы сделать описания максимально объективными – описывая реальный опыт в мире с позитивами и негативами.

Коммерческие инструменты, описанные в ссылке выше, являются самыми прекрасными инструментами – и они стремятся ускорить работу с хорошими графическими интерфейсами и готовыми решениями для общих требований, но разработчикам следует подумать о том, чтобы попробовать использовать WiXновый способ создания файлов MSI . Пожалуйста, прочитайте это сообщение для получения дополнительной информации: установщик Windows и создание WiX (прочитайте это, если вы пытаетесь « найти свои ноги с WiX » и хотите понять, что такое технология и откуда она).

WiX имеет кривую обучения, но во многих отношениях « дружественна к разработчику ». Для одного это тип проекта в Visual Studio (после его установки), и он позволяет настроить настройку в XML и скомпилировать в MSI, как и обычный двоичный файл. Это позволяет обеспечить правильное управление версиями , разветвление и совместное использование. Кроме того, он бесплатный и с открытым исходным кодом. Я считаю, что нормально рекомендовать бесплатную инфраструктуру, тем более, что она в хорошем состоянии. Однако ожидайте опыта обучения. Вот несколько советов по «началу полета» с WiX .

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

Подход Microsoft не является единственным средством обеспечения того, чтобы несколько программ, использующих одно и то же оборудование, проходили через один и тот же драйвер. Система также может иметь программы, которые временно загружают драйверы при их запуске, а драйверы автоматически разгружаются, когда они будут выполнены. Трудность с этим подходом заключается в том, что если запускается программа, использующая старый драйвер, и при запуске программы, для которой требуется более новая версия этого драйвера, новая программа не сможет запускаться, пока не будет программа выключает свой драйвер и переключается на использование нового. Такая стычка, вероятно, неизбежна, но иметь дело с такими вещами каждый раз, когда запускается программа, вероятно, менее надоедливо, чем иметь дело с ней только один раз, когда установлена ​​программа.

Все, что было сказано, хотя может быть полезно иметь возможность установить программу один раз и какие-либо «проблемы с драйверами», которые будут рассмотрены раз и навсегда, есть также что-то, что можно сказать о возможности просто запустить программу, не имея для внесения «постоянных» изменений в систему. Не должно быть каких-либо особых препятствий для программ, которые могут использовать «временные» или постоянные водители, но я не знаю особых усилий для облегчения таких проектов.

Помимо копирования файлов для вас, программа установки также может добавлять записи реестра, необходимые программе (если они есть), добавлять значения в переменные среды (PATH), создавать значки на рабочем столе, поэтому вам не нужно делать это вручную и т. Д.

Чтобы процитировать Википедию, «установка обычно включает в себя копирование / сгенерирование кода из файлов установки на новые файлы на локальном компьютере для облегчения доступа к операционной системе». Для простых программ нет необходимости устанавливать что-либо, но более сложные могут обновляться, добавлять ссылки и т. Д. Автоматически, если они установлены.

Давайте будем гением компьютера.