В чем выгода и реальная цель установки программы?
Из всех программ, которые я написал до сих пор: если я хочу, чтобы он работал на другой рабочей станции, мне просто нужно скопировать и вставить исполняемый файл и необходимые файлы, необходимые для его запуска (например, файлы.o, двоичные файлы..).
Но все программы, созданные для коммерческого использования, всегда идут с установщиком. Например, компьютерные игры. Поэтому мой вопрос: каковы основные преимущества / причины установки, когда мы можем просто скопировать файлы на целевую рабочую станцию?
- Одной из причин, вероятно, является предотвращение пиратства. Но кроме этого, я уверен, есть и другие более веские причины?
4 ответа
Сложность развертывания
Только самые простые приложения могут работать с простой копией файла, и даже в этом случае вам необходим удобный способ фактически загружать и копировать файлы в нужное место - и для этого нужна настройка. Установка также является маркетинговым инструментом, который можно использовать для брендинга и согласованности продуктов, а также для установки пробной версии продукта - очень важной части продажи программного обеспечения.
Наконец, установка предоставляет функции обновления и исправления для новых версий, а также удаления и очистки системы, когда пользователь хочет удалить ваше программное обеспечение. Хорошая настройка также может быть подписана цифровыми сертификатами, чтобы гарантировать, что файл не может быть поврежден при передаче, и что поставщик является сертифицированным и, следовательно, серьезным. Все эти вещи имеют решающее значение для серьезного продукта.
Важно помнить, что опыт установки - это первое знакомство пользователей с качеством вашего продукта. Если установка не удалась, продукт не может быть оценен вообще. Это может показаться самой дорогой ошибкой при разработке программного обеспечения.
Ошибки в развертывании накапливаются в том смысле, что, если у вас есть развернутая ошибка, у вас, как правило, нет доступа к рассматриваемому компьютеру для отладки, и исправление может легко нанести больший ущерб. Вы управляете процессом доставки, а не просто отлаживаете код и двоичные файлы. Каждая доставка добавляет риск и сложность, и очень скоро у вас может быть невозможность поддерживать в ваших руках, если вы не будете осторожны. Кроме того, все машины, на которых вы работаете, почти наверняка будут в совершенно другом состоянии, чем другой компьютер.
Поэтому развертывание (настройка) - это сложный процесс перехода любого компьютера из одного стабильного состояния в другое. Это требует дисциплинированного подхода. Программа установки должна установить все необходимые файлы и параметры и убедиться, что продукт настроен для первого запуска или готов к настройке при запуске без сбоев. Это может быть очень сложной задачей. Список того, что может понадобиться установке, постоянно растет, и для каждой новой версии Windows, кажется, создаются новые препятствия, которые усложняют развертывание. К таким препятствиям относятся запросы UAC, блокировка самовосстановления на серверах терминалов, изменение поведения кэширования ядра MSI, перенаправления новых папок, функции виртуализации, новые и измененные функции подписи с шифрованием и цифровыми сертификатами, блокировка безопасности в битах Active X, 64-разрядные сложности и т. Д.... Список можно продолжить.
Виртуализация приложений является большой проблемой в наши дни. По сути, он инкапсулирует компьютерные программы из базовой операционной системы, в которой он выполняется. По сути, это все еще включает в себя пакет развертывания для вашего приложения, но полностью виртуализированное приложение не устанавливается в традиционном смысле. Приложение ведет себя во время выполнения так, как будто оно напрямую взаимодействует с исходной операционной системой и всеми ресурсами, которыми она управляет, но может быть в разной степени изолированным или изолированным.
Обзор задач развертывания
Задачи и функции, необходимые для установки, варьируются от самых базовых и базовых с помощью встроенного установщика Windows или поддержки сторонних инструментов до сильно настраиваемых специальных решений, в которых вы должны сами что-то кодировать для удовлетворения уникальных требований развертывания.
Инструменты развертывания действительно содержат большинство того, что вам когда-либо понадобится для любого развертывания, но некоторые вещи все еще кодируются в каждом конкретном случае. Эти специальные решения реализованы как " настраиваемые действия " в установщике Windows, и они, без тени сомнения, являются основной причиной сбоев развертывания. См. "Очень продвинутый" раздел для получения дополнительной информации о пользовательских действиях.
Чрезмерное использование настраиваемых действий и большое количество специального кода, как правило, указывают на некорректный дизайн приложения, но в некоторых случаях вы просто сталкиваетесь с новыми технологиями, и вам нужно развернуть собственное решение, чтобы развернуть его. Это именно то, для чего нужны пользовательские действия. Со временем должны быть созданы и предпочтены стандартизированные решения. И небольшие изменения в дизайне приложения часто могут устранить сложные пользовательские действия. Это очень важный факт при развертывании программного обеспечения - существует так много переменных, что по возможности следует выбирать для простоты.
На базовом уровне обзора развертывание должно учитывать:
Основы настройки
Все сторонние инструменты обеспечивают хорошую поддержку этих основ установки, но есть некоторые различия. Установка предварительных условий может быть той областью, где сторонние инструменты и бесплатные платформы, такие как WiX, больше всего отличаются с точки зрения простоты использования - на момент написания. Поддержка есть, но ее может быть немного сложно настроить.
- Проверьте, подходит ли система для установки данного пакета.
- Дисковое пространство.
- Тип и версия ОС.
- Языковая версия.
- Компьютерная архитектура x86/x64.
- Неподходящие платформы: Тонкий клиент / Citrix / Terminal Services
- Индивидуальная настройка требуется из-за пользовательской блокировки.
- Может быть, даже вредоносная ситуация (я хочу - может вызвать загадочные проблемы развертывания).
- так далее...
- Сканирование на наличие и при необходимости установите предварительные условия и время выполнения.
- Обеспечение легкого развертывания предварительных условий и сред выполнения - задача с широкой поддержкой сторонних инструментов развертывания. Это ограниченная поддержка в самом установщике Windows. Основной функцией для распространения во время установки в установщике Windows является модуль слияния - по сути "эквивалент файла включения" для файлов MSI. Стандартный способ развертывания общих файлов. Модуль слияния компилируется в ваш MSI во время сборки - что-то вроде раннего связывания с точки зрения разработчика.
- Некоторые предварительные условия устанавливаются с помощью модулей слияния установщика Windows. Другие обычно устанавливаются с использованием собственного установочного файла (различные форматы).
- Примеры: Active X для игр, Crystal Reports, среда выполнения Microsoft Report Viewer, MySQL, среда выполнения SQL Server, среда исполнения VB6, среда исполнения ASP.NET MVC, среда исполнения Java, Silverlight, Microsoft XNA, среда исполнения VC++, версии среды выполнения.NET, инструменты Visual Studio для Среда выполнения Office, среда выполнения Visual F#, среда MSXML, среда MS Access, Apache Tomcat, различные основные сборки взаимодействия, версии PowerShell и т. Д.
- Наконец, некоторые основные компоненты Microsoft, такие как версии установщика Windows и версии PowerShell, обычно отключаются через Центр обновления Windows, и их может быть лучше исключить из вашей настройки (просто проверьте наличие и сообщите пользователю, чтобы он запускал Центр обновления Windows, если компонент отсутствует). Фактическая практика здесь варьируется.
- Предоставить графический интерфейс, подходящий для ввода необходимых настроек от пользователя.
- Обычной практикой является ввод и проверка лицензионных ключей в настройках.
- Лично я думаю, что это лучше сделать из самого приложения как по практическим соображениям, так и по соображениям безопасности - усложнить пиратство, разрешить пробную установку, уменьшить количество обращений в службу поддержки установки (вы не поверите...) и т. Д....
- Для сложных настроек может потребоваться много GUI для сбора параметров развертывания, особенно для настроек сервера с IIS, MS SQL, COM+ и другими дополнительными компонентами.
- Разрешить установку в автоматическом режиме для корпоративного использования.
- Чрезвычайно важно - все корпоративное развертывание является автоматическим и бесшумным (графический интерфейс не отображается во время установки), за исключением определенных установок сервера.
- Небольшие компании могут запустить вашу установку в режиме графического интерфейса. По моему опыту они вообще делают.
- Домашние пользователи обычно всегда запускают ваши настройки в режиме GUI.
- Знайте свою целевую группу и обязательно убедитесь, что вы поддерживаете тихий бег, если вы нацелены на корпоративных клиентов. Однако все настройки должны работать в тихом режиме, и если вы следуете правилам разработки MSI и передовым методам, это "бесплатно".
Добавление основного материала
Эти базовые задачи имеют полную поддержку в самом движке Windows Installer, и все сторонние инструменты обеспечивают довольно эквивалентную поддержку для всех из них, несмотря на различия в возможностях графического интерфейса и простоту использования.
- Установите файлы и настройки реестра.
- Установите odbc, ассоциации файлов, ярлыки и значки.
- Обновите приложение и общесистемные настройки пути.
- Обновлять и объединять текстовые файлы, такие как файлы INI.
- Зарегистрируйте COM-файлы и включите .NET COM Interop, если это необходимо.
- Установите сборки.NET в GAC и запустите пользовательские классы установщика.NET.
- Установите параллельные сборки Windows в WinSxS.
- Доставка подписанных и сертифицированных файлов (также относится к самому файлу установки).
- Установите и управляйте службами Windows.
- Установите панель управления апплетами.
- Обновите переменные среды.
Я не буду подробно останавливаться на этих проблемах или излагать их слишком подробно. Все эти задачи развертывания должны быть достаточно хорошо поддержаны всеми доступными инструментами и средами развертывания. Однако многие люди путают их развертывание, не используя встроенные функции развертывания и вместо этого полагаясь на пользовательские действия для таких тривиальных задач. Целиком добавлен риск без выгоды вообще.
В частности, мы часто видим настраиваемые действия, используемые для установки служб Windows - и это обычно является признаком очень плохо спроектированной службы, а в других случаях просто незнанием того, как выполнить развертывание. Обе проблемы вместе также распространены. Развертывание такой службы часто включает применение пользовательских разрешений ACL и измененных привилегий NT, чтобы служба работала с правами пользователя, а не как LocalSystem - что, как правило, является единственным правильным способом запуска служб Windows. Запуск службы с учетными данными пользователя - это " шаблон развертывания ", о котором стоит упомянуть попутно (подробнее об этом позже).
Другое распространенное использование настраиваемого действия, которое всегда неправильно, - это установка файлов в GAC с помощью настраиваемого действия. В установщике Windows есть хорошая встроенная поддержка для этого, и любые предлоги для установки через пользовательское действие почти наверняка скрывают плохой дизайн или какое-то общее безумие:-). Это также факт, что многие развертывают слишком много вещей в GAC в целом, но это проблема разработки: когда я должен развертывать свои сборки в GAC?
Наконец, классы установщика.NET предназначены для разработчиков, чтобы тестировать их компоненты во время разработки - их не следует использовать для развертывания. По сути, это просто эквивалент.NET для самостоятельной регистрации (что также неприемлемо для MSI - вам нужно извлечь информацию о COM и добавить в таблицы MSI - подробности см. По ссылке). MSI является декларативным - он должен содержать все изменения, которые должны применяться к системе, чтобы обеспечить надлежащий откат и управление. Таким образом, сообщение заключается в том, что классы установщика.NET должны использоваться только для разработки и тестирования. После того, как вы создадите MSI для развертывания своего приложения, вы должны использовать конструкции MSI для достижения правильного развертывания с поддержкой отката и интеллектуальным управлением. Мы видим, что эти классы установщика.NET используются в основном для обслуживания и установки GAC. В MSI это означает использование таблиц ServiceInstall и ServiceControl для служб и просто маркировку компонента для установки GAC для установки в GAC (должна быть подписанная сборка). Если вы знаете, как это сделать, это легко, и вы не пропустите классы установщика.NET, потому что MSI работает как " автоматический ", когда вы делаете это правильно. Вы получаете надежный откат бесплатно и с легкостью.
Добавление Advanced Stuff (часто вещи с сервера)
Несмотря на поддержку всех инструментов развертывания для большинства из этих проблем, я часто обнаруживал, что мне нужно было реализовать настраиваемые действия и специальные решения для достижения правильного развертывания в определенных случаях. Это особенно касается развертывания COM + и IIS. WiX предоставляет настраиваемую поддержку для обоих типов развертывания, но у меня ограниченный опыт ее использования.
Обновление и установка файлов XML - это задача, поддерживаемая каждым инструментом развертывания, поскольку в движке установщика Windows нет встроенной поддержки для этого - что довольно удивительно на данный момент.
Что касается установки базы данных и, в частности, обновлений, я нахожусь на пределе, думая, что это должно быть сделано из приложений с надлежащей аутентификацией пользователя и интерактивным использованием, а не "одним выстрелом" и олицетворенной операцией развертывания (которая может сорваться, по-видимому, без хорошего управления исключениями или варианты восстановления). Или в других случаях кажется, что обновления должны быть управляемым процессом, вовлекающим пользователей, поднимающих корпоративные билеты, обработанные профессиональными DBO. Некоторые подробности ниже.
- Настройка IIS, Apache или других веб-серверов.
- Это целый мир, особенно в отношении IIS. Я обнаружил, что в средствах развертывания отсутствуют функции для развертывания сайтов по запросу разработчиков и корпоративных команд.
- Несмотря на то, что я в значительной степени не тестировал его, инфраструктура WiX обеспечивает очень гибкую реализацию конфигурации и развертывания IIS.
- Я ожидаю, что для достижения специальных конфигураций развертывания используется множество пользовательских действий.
- Запустите сценарии SQL-сервера для баз данных.
- Создание базы данных, подключение к базе данных, обновление базы данных, запуск хранимых процедур, возможно, даже запуск резервного копирования или планирование новых задач и т. Д. Я не знаю всего, что люди делают здесь.
- Должно ли это быть сделано в приложении или с помощью DBO? Это кажется намного более надежным. Настройка "один выстрел", приложение может быть перезапущено, и вы попытаетесь снова - лучшая обработка исключений.
- Кроме того, настройка MSI имеет сильно ограниченный графический интерфейс пользователя, сильно ограниченный в событиях из-за общего дизайна MSI (правильные диалоги Win32 могут порождаться из ограниченного графического интерфейса MSI, но это требует больших усилий - я сделал это только один раз).
- Важно, что установка может выполняться с повышенными правами, но это только на локальной машине. Аутентификация по-прежнему необходима для базы данных (если не используется аутентификация Windows).
- Обновление базы данных - это отдельная транзакция, которая будет выполняться как часть общей транзакции установщика Windows. Не очевидно, как обрабатывать ошибки или что делать с точки зрения отката в случае сбоя установки.
- Излишне говорить, что все это может оказаться очень сложным в вашей настройке. На мой взгляд, это (корпоративная) задача конфигурации, а не просто задача развертывания. Проницательные комментарии очень приветствуются по этому вопросу - я нахожусь на ограждении в отношении наилучшей практики.
- Если вы предоставляете клиент-серверное решение своим клиентам и вам нужен способ настроить (на стороне сервера?) Базы данных "свежими" со значениями по умолчанию, чтобы помочь вашим клиентам "начать работу" с вашим решением, то развертывание базы данных определенно имеет смысл мне. Но сценарии обновления, выполняемые как часть установки, предназначенной для существующих баз данных, будут беспокоить меня с точки зрения надежности и управления, не говоря уже о безопасности.
- Казалось бы, для корпоративных обновлений базы данных правильный процесс с участием DBO будет более безопасным. Они могут выполнить надлежащее резервное копирование до применения обновлений, а затем выполнить настоящий откат, если в UAT обнаружены проблемы.
- Установка компонентов браузера ActiveX (сертификат основан на браузере).
- Установка подписанного CAB-файла, загруженного с веб-страницы (только для администратора, может быть записана как MSI для массового развертывания с повышенными правами).
- По умолчанию устанавливается в "C:\Windows\Downloaded Installations".
- Осложнения могут возникнуть, если версия в CAB-файле отличается от версии, запрашиваемой веб-страницей (запускает папки CONFLICT, которые создаются при повторном запуске установок).
- Обновите и объедините файлы XML.
- Продвинутый, потому что (удивительно) изначально не поддерживается установщиком Windows.
- Поддерживается с расширениями как WiX, так и сторонними инструментами развертывания.
- Конфигурировать и управлять компонентами COM +.
- Техническое примечание: мне несколько раз не удавалось добиться этого должным образом с помощью нескольких сторонних инструментов. Кажется, что в целом не хватает необходимых функций.
- Обычно я в конечном итоге вручную настраиваю приложение COM +, а затем экспортирую MSI из инструмента администрирования служб компонентов, который затем используется для развертывания.
- Этот экспортированный MSI не очень хорош - хрупок, если вы пытаетесь внести какие-либо изменения. Он содержит недокументированный файл.apl с атрибутами приложения, и любые зависимые DLL или файлы данных не включаются автоматически.
- WiX обеспечивает поддержку COM+ (совсем не проверял я). Я надеюсь, что это хорошо:-).
- Просто для справки: Понимание установки приложения COM +.
- Добавьте пользовательские журналы событий, настройте мониторы производительности, добавьте правила брандмауэра и другие расширения 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. Это не тривиальные вещи, чтобы получить право. Установка MSI - это сложная транзакция с повышенными и олицетворенными последовательностями, с которой очень трудно иметь дело.
- Типы пользовательских действий
- Установщик Windows поддерживает настраиваемые действия, реализованные как специально созданные, собственные (win32) исполняемые файлы и библиотеки DLL, а также сценарии, такие как JavaScript или VBScript.
- Некоторые даже используют двоичные файлы.NET (C#, VB.NET, DTF и т. Д.) Для запуска пользовательских действий - это не рекомендуется из-за их обязательной потребности в.NET Framework. Эти двоичные файлы называются " управляемым кодом " и не могут работать без установленной правильной платформы.NET.
- Наконец, существуют настраиваемые действия PowerShell, которые представляют собой как скрипты, так и управляемый код, и их не следует использовать, поскольку они требуют.NET Framework.
- В будущем, когда.NET Framework может гарантированно существовать на всех компьютерах Windows, этот управляемый код может стать жизнеспособным вариантом для общего использования, но на данный момент все согласны с тем, что эти действия слишком рискованны и ненадежны.
- Общие примеры пользовательских действий (некоторые общие пользовательские задачи часто реализуются как пользовательские действия, поскольку они не поддерживаются установщиком Windows, но часто необходимы).
- Управление общими ресурсами Windows (обычно создайте).
- Примените пользовательские разрешения ACL (для этого есть встроенная поддержка MSI).
- Изменить права NT.
- Настройте DCOM.
- Управление группами и пользователями.
- Настроить индивидуальные надстройки Office.
- Сохранить свойства установщика (для восстановления и переустановки).
- Пользовательские и специфические для компании условия запуска.
- IP-конфигурация перенаправляет для IIS
- Зашифруйте или запутайте контент для безопасности данных
- Так далее...
- Большинство пользовательских функций, упомянутых выше, теперь доступны в платформе WiX в виде пользовательских C++ dll - и другие инструменты имеют некоторые аналогичные пользовательские функции. Вы всегда должны отдавать предпочтение этим готовым решениям своим собственным действиям, поскольку откат правильно реализован в WiX, а реализация хорошо протестирована.
- Применение пользовательских разрешений ACL и изменение привилегий NT считаются " анти-шаблонами развертывания" большинством специалистов по развертыванию. Требование сделать это указывает на плохой (ленивый) дизайн приложения.
- Сводка пользовательских действий.
- Написание собственного действия должно быть редким событием, которое является уникальным и которое не было сделано (лучше) раньше.
- Незначительная редизайн приложения часто может устранить неразумные и сложные конструкции развертывания. На самом деле почти всегда.
- Например: настройка приложения должна происходить при первом запуске приложения, а не во время установки.
- Программа установки должна подготовить приложение к первому запуску и выполнить задачи, требующие повышенных прав (только).
- Инициализация пользовательских данных является особенно плохой вещью, чтобы использовать сценарии установки для выполнения. Все это должно быть сделано в последовательности запуска приложения.
- Вы должны обеспечить надлежащую поддержку отката.
- Это сложная и тяжелая работа.
- Почти все настраиваемые действия сценария вообще не поддерживают откат.
- Вы должны написать с минимальными зависимостями.
- Предпочтительно использовать C++ или Installscript или, возможно, JavaScript (только для внутреннего, корпоративного развертывания, на мой взгляд). Избегайте VB Script и определенно избегайте кода.NET в C#/DTF или скриптах PowerShell. Существует некоторая дискуссия по вопросу управляемого кода. Эксперты MSI, такие как Крис Пейнтер, считают, что пользовательские действия в C#/DTF готовы к прайм-тайму, в то время как общее мнение, похоже, заключается в том, чтобы ошибаться и осторожно полагаться на C++, пока не будет гарантирована надлежащая среда выполнения.NET. Вот многословное "обсуждение" этой проблемы: Установщик Windows не работает на Win 10, но не на Win 7 с использованием WIX
- Надежный код сложно написать в скрипте. Скрипты являются хрупкими, трудными для отладки, не имеют расширенных языковых функций (особенно обработки ошибок) и уязвимы для антивирусной блокировки.
- Единственными реальными преимуществами сценариев является то, что они прозрачны и проверяемы, а весь источник встроен в файл MSI (нет проблем с контролем версий). Корпоративные команды, которые передают работу друг другу, часто могут использовать JavaScript (также существует много устаревших VB Script - но этот язык очень плох для обработки ошибок).
- К управляемому коду предъявляются требования времени выполнения, которые не могут быть гарантированы на момент написания - и так было уже очень давно.
- PowerShell - это и управляемый код, и скрипт. Избегай это. Installshield поддерживает его как тип настраиваемого действия. Еще неизвестно, насколько успешным это будет. Я бы никогда не использовал его, если не заставил.
- И многое другое...
Дополнительные сложности для развертывания
Существует много дополнительных сложностей при предоставлении профессиональных настроек, таких как поставка настроек на разных языках (локализация), настройка брендинга для разных посредников (OEM), обеспечение работоспособности установки на всех необходимых операционных системах в разных языковых версиях, предоставление отдельных настроек для x86 и x64- машины, предоставляя уменьшенную "версию просмотра" приложения, делая комбинированные установки для установки клиента и сервера (может быть запущена как на сервере, так и на клиенте, устанавливая различные компоненты - не рекомендуется, если вы спросите меня - подробности), и не упомянуть развертывание на различных встроенных устройствах, таких как телефоны, карманные устройства, смартфоны и т. д.
С некоторыми "средствами защиты от развертывания " также проблематично работать (связанный ответ - это "эксперимент", и я не слишком доволен им - работа в процессе, но она предназначена для разработчиков как контрольный список для их усилий по развертыванию). чтобы избежать действительно общих проблем). Это плохие конструкции, необходимые в настройках для правильной работы плохо спроектированных приложений. Они включают в себя такие вещи, как применение пользовательских разрешений (доступ на запись по другим заблокированным путям и т. Д.), Настройка привилегий NT (как правило, "запуск в качестве службы" для учетной записи пользователя или, что намного хуже), или чрезмерное использование сложных пользовательских действия, которые вносят непредсказуемые изменения в систему (это может быть что угодно и быть очень опасным). Неправильная установка без вывода сообщений - это также огромная распространенная проблема - она ужасна для корпоративного использования вашей установки. Развертывание чрезмерного количества пользовательских данных с вашей настройкой также может быть проблематичным (трудно контролировать сложности). И есть много других, более специфических проблем, с которыми можно столкнуться.
Вот пост с общей проблемой настройки и развертывания, рассматриваемой в более широком контексте маркетинга приложений и продаж.
Собственное развертывание
Вам понадобится инструмент или среда для доставки ваших собственных настроек. Вот ответ, описывающий различные инструменты, используемые для создания установщиков: Какой установочный продукт использовать? InstallShield, WiX, Wise, Advanced Installer и т. Д. Были предприняты все попытки сделать описания как можно более объективными - описание реального опыта с положительными и отрицательными сторонами.
Коммерческие инструменты, описанные в приведенной выше ссылке, являются самыми превосходными инструментами - и они, как правило, ускоряют работу с помощью хороших графических интерфейсов и готовых решений для общих требований, но разработчики должны рассмотреть возможность использования WiX - нового способа создания файлов MSI. Пожалуйста, прочитайте этот пост для справочной информации: установщик Windows и создание WiX (читайте это, если вы пытаетесь " найти ноги с WiX " и хотите понять, что это за технология и откуда она взялась).
WiX имеет кривую обучения, но во многих отношениях " дружественна к разработчикам ". Во-первых, это тип проекта в Visual Studio (после его установки), который позволяет определять настройки в XML и компилировать в MSI, как в обычном двоичном файле. Это позволяет правильно управлять исходным кодом, ветвления и совместной работы. Плюс это бесплатно и с открытым исходным кодом. Я чувствую, что можно рекомендовать бесплатный фреймворк, тем более что он хорошо поддерживается. Ожидайте обучения, хотя. Вот несколько советов для "быстрого старта" с WiX.
Многие программы используют графику, звук и другие драйверы, которые поставляются и обслуживаются третьими лицами. Во многих случаях эти драйверы могут использовать базовое оборудование или другие системные функции способами, о которых сама Windows ничего не знает. Если две программы, каждая со своим собственным драйвером и не подозревающие о существовании другой, будут пытаться использовать одно и то же оборудование, они, вероятно, будут мешать друг другу непредсказуемым нежелательным образом (например, одна может перезаписывать графические текстуры, загруженные другой). Чтобы избежать таких проблем, Microsoft рекомендует, чтобы приложения устанавливали драйверы таким образом, чтобы две программы, которым требуется один и тот же драйвер, могли совместно использовать один и тот же экземпляр драйвера.
Подход Microsoft не является единственным средством обеспечения того, чтобы несколько программ, использующих одно и то же оборудование, проходили через один и тот же драйвер. Система также может иметь программы, которые временно загружают драйверы при запуске, и иметь драйверы, автоматически выгружаемые после завершения работы. Сложность такого подхода заключается в том, что если программа, использующая старый драйвер, запущена и при запуске программы, которой требуется более новая версия этого драйвера, новая программа не сможет работать, если только или до старой версии Программа выключает свой драйвер и переключается на использование нового. Подобные хлопоты, вероятно, неизбежны, но иметь дело с такими вещами каждый раз, когда запускается программа, вероятно, менее утомительно, чем иметь дело с ней только один раз, когда программа установлена.
С учетом всего вышесказанного, хотя может быть полезно иметь возможность установить программу один раз и разрешить любые проблемы с "драйвером" раз и навсегда, есть еще кое-что, что можно сказать, чтобы иметь возможность просто запустить программу без необходимости внести "постоянные" изменения в систему. Не должно быть каких-либо особых препятствий для того, чтобы программы могли использовать "временные" или постоянные драйверы, но я не знаю никаких конкретных усилий для облегчения таких проектов.
Помимо копирования файлов для Вас, установщик может также добавить записи реестра, необходимые программе (если они есть), добавить значения в переменные среды (PATH), создать значки на рабочем столе, поэтому вам не нужно делать это вручную и т. Д.
Цитируя Википедию, "Установка обычно подразумевает копирование / генерирование кода из установочных файлов в новые файлы на локальном компьютере для облегчения доступа операционной системы". Для простых программ не нужно ничего устанавливать, но более сложные могут обновляться, добавлять ссылки и т. Д. Автоматически, если они установлены.