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

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

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

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

Ответ 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Наконец, .NET installer classes предназначены для разработчиков тестировать свои компоненты во время разработки - для развертывание. По сути, это просто эквивалент .NET саморегистрации (что также неприемлемо для MSI - вам нужно извлечь информацию COM и добавить в таблицы MSI - см. ссылка). MSI является декларативным - он должен содержать все изменения, которые должны применяться к системе, чтобы обеспечить надлежащий откат и управление. Таким образом, сообщение состоит в том, что классы .NET installer должны использоваться только для разработки и тестирования. После создания MSI для развертывания вашего приложения вы должны использовать конструкции MSI для обеспечения правильного развертывания с поддержкой отката и интеллектуальным управлением. Мы видим, что эти классы .NET-установщика используются в основном для обслуживания и установки GAC. В MSI это означает использование таблиц ServiceInstall и ServiceControl для служб и просто маркировка компонента для установки GAC для установки на GAC (должна быть подписанная сборка). Как только вы знаете, это легко, и вы не пропустите классы установки .NET, потому что MSI работает как " automagic" когда вы это сделаете правильно. Вы легко получаете надежный откат."

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ответ 2

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

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

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

Ответ 3

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

Ответ 4

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