Windows install


Технология Windows Installer



Технология Windows Installer

Часть I. Обзор возможностей

Автор: Алифанов АндрейThe RSDN GroupИсточник: RSDN Magazine #3
Опубликовано: 10.04.2003Исправлено: 26.02.2006Версия текста: 1.0

Предисловие

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

Технология Windows Installer возникла не на пустом месте, поэтому, прежде чем погрузиться в ее изучение, оглянемся назад лет на 10-15.

Немного истории

"Золотые" времена DOS

Если мы вернемся в "золотые" времена DOS, то обнаружим, что в то время каждая фирма-поставщик программного обеспечения извращалась по-своему. Не было никакого общего интерфейса пользователя, никаких унифицированных приемов работы с ПО (я не рассматриваю счастливых владельцев компьютеров от фирмы Apple с единым уже в то время пользовательским интерфейсом). Поэтому неудивительно, что не было и единой технологии инсталляции программных продуктов.

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

Ситуация немного начала меняться к лучшему с выходом Windows 3.0, которая наконец-то стала стандартом де-факто пользовательского интерфейса для ПК. Но… с точки зрения инсталляции ничего не изменилось. По-прежнему не было единой базы программ, установленных на компьютере, и не было никакого API для создания унифицированных, совместимых друг с другом и, самое главное, надежных программ инсталляции.

Поэтому вполне естественно, что отсутствие интегрированного решения от поставщика операционной системы позволило занять эту нишу сторонним компаниям-разработчикам. Наиболее известные из них – InstallShield Software и WiseSolutions. Эти компании принесли унифицированный интерфейс в мир программ-инсталляторов и сыграли немалую роль в формировании у пользователей представления о том, как должна выглядеть и вести себя программа инсталляции сложного программного продукта.

Windows 95

И вот в 1995 году вышла совершенно новая версия Windows (по утверждению Microsoft, многие авторитетные источники считают, что действительно новой была версия Windows со скромным номером 3.11, а Windows 95 всего лишь принесла новый пользовательский интерфейс). В этой версии Windows появилось важное новшество: единая база установленных программ.

Но, кроме хранения списка установленных программ и возможности запуска внешних программ инсталляции, эта версия Windows ничего больше не предложила. В результате осталась нерешенной проблема с различными версиями библиотек динамической компоновки (далее по тексту - DLL), с переписыванием системных DLL и т.д.

Следующие версии Windows не принесли ничего нового, немногим лучше оставалась ситуация и в WindowsNT. Технология Setup API, унаследованная еще от Windows 3.x, была очень ограниченной и использовалась (впрочем, используется и сейчас) в основном для установки различных драйверов.

Приход Windows 2000

Настоящий прорыв в области управления инсталляцией программ произошел с появлением Windows2000, которая принесла с собой очень много нового. Я не буду рассматривать все новшества, а упомяну только те, что касаются управления инсталляцией программ: это Windows File Protection и… Windows Installer. Эти технологии тесно связаны друг с другом. Первая позволяет решить извечную проблему Windows: так называемый DLL Hell. Вторая, которой собственно и посвящена эта статья, гораздо шире и сложнее. Рассмотрению вопроса, что же такое Windows Installer, для чего, где и как применяется, и будет посвящена оставшаяся часть статьи.

Windows Installer - новое слово в технологиях инсталляции

Глоссарий

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

ТерминКраткое описаниеВнешний пользовательский интерфейсВстроенный пользовательский интерфейсПатч (заплата)Инсталляционная база данныхИнсталляция по требованиюКод пакетаКомпонентОбновлениеОперацияОпцияОценка стоимостиОткатПакет (модуль) инсталляцииПодключаемый модульПользовательская операцияСвойствоСтандартная операцияТаблицы последовательности установкиТрансформацияУровень базового пользовательского интерфейсаУровень инсталляцииУровень полного пользовательского интерфейсаУровень сокращенного пользовательского интерфейсаSQL (Structured Query Language)
Пользовательский интерфейс, не использующий встроенные возможности Windows Installer. Такой интерфейс использует, например, инсталлятор Microsoft Visual Studio .NET.
Пользовательский интерфейс, основанный на встроенных возможностях Windows Installer. Инсталляторы с таким интерфейсом работают в режиме Мастера, то есть инсталляция выполняется пошагово. Такой интерфейс используют, например, инсталляторы Microsoft Office 2000 и XP.
Метод обновления файлов на уровне изменения байтов, а не замены файла целиком. Применяется при мелких обновлениях.
Реляционная база данных, содержащая всю необходимую логику и данные для установки приложения
Служба Installer, позволяющая устанавливать приложение или его опции только, когда их запрашивает пользователь или другое приложение
Глобально уникальный идентификатор (GUID) пакета (модуля инсталляции)
Наименьшая часть инсталляции, обрабатываемая инсталлятором, а также часть функциональности приложения с точки зрения программиста
Установка самой последней версии приложения
Инкапсуляция некоторой типичной функции, выполняемой во время инсталляции или обновления приложения.
Часть функциональности приложения, видимая со стороны пользователя
Метод, используемый Windows Installer для оценки дискового пространства, необходимого приложению
Автоматическое восстановление оригинальной конфигурации компьютера при сбоях в установке
Состоит из .msi-файла и внешних, связаных с ним файлов. Содержит всю логику, необходимую для установки и удаления приложения.
База данных, содержащая наборы компонентов. Позволяет создавать пакеты инсталляции из готовых наборов компонентов. Отдельно устанавливаться не может.
Операция, определенная разработчиком пакета инсталляции.
Глобальная переменная, используемая Windows Installer при инсталляции приложения
Встроенная в Windows Installer предопределенная операция, например, CreateShortcuts или InstallFiles.
Таблицы в инсталляционной базе данных, задающие правила установки
Шаблон изменений, используемый для добавления или замены элементов исходной базы данных. Применяется, например, для замены языка приложения.
Уровень, при котором Windows Installer обеспечивает простой пользовательский интерфейс с немодальными диалогами. На этом уровне недоступно использование пользовательских диалогов.
Уровень, задаваемый для каждой инсталляции. Приложение устанавливается только если его уровень меньше или равен уровню инсталляции. Таким образом, можно управлять инсталляцией наборов приложений.
Уровень, при котором можно задействовать все встроенные возможности пользовательского интерфейса Windows Installer
Уровень, при котором Windows Installer обеспечивает интерфейс с немодальными пользовательскими диалогами. Также могут использоваться встроенные модальные диалоги для сообщений об ошибках.
Язык запросов, используемый для работы с реляционными базами данных. Windows Installer поддерживает ограниченное подмножество языка.

Итак, продолжим. Что же такое технология Windows Installer, о которой я написал уже десяток абзацев, но еще ничего так толком и не сказал? Чем она так замечательна? Что в ней нового по сравнению с уже существующими решениями?

Что такое Windows Installer?

Windows Installer – это сервис установки и конфигурирования программных продуктов. Он поставляется как неотъемлемая часть операционных систем Windows 2000 и Windows Me, а также может устанавливаться в ОС Windows 95, Windows 98 и Windows NT 4.0 вместе с пакетами обновления этих операционных систем или в качестве отдельного дистрибутива.

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

Основная цель этой технологии: уменьшение так называемой совокупной стоимости владения (TCO – Total Cost of Ownership) для пользователей программных продуктов за счет эффективных средств развертывания и конфигурирования ПО. Надо отметить, что Windows Installer – это только часть (хотя и очень важная) усилий Microsoft по снижению стоимости развертывания, использования и сопровождения ПО для персональных компьютеров.

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

Выгода от использования Windows Installer для пользователей

Выгода от использования модулей инсталляции для Windows Installer заключается в том, что они облегчают процесс установки и обновления программных продуктов пользователям. Эти модули могут работать на любой 32-хбитной платформе Windows, начиная от Windows 95 и заканчивая Windows XP. Пользователи этих операционных систем получают много преимуществ от использования технологии Windows Installer, а именно:

  • Более простая и быстрая установка программного обеспечения. Так как вся информация об установленном приложении содержится в одном месте, разработчик может предугадать ответы на многие вопросы пользователя, освобождая тем самым пользователя от принятия сложных решений во время установки или обновления программного продукта.
  • Возможность установки по требованию. Информация о неустановленных компонентах приложения также хранится в одном месте. Значит, если вдруг пользователь захочет использовать компонент, который еще не установлен, ему не придется снова запускать весь инсталляционный пакет только для того, чтобы добавить еще одну возможность в программу. Когда пользователь решает использовать новый компонент, приложение просто проверяет инсталляционные данные и извлекает нужную информацию, позволяя добавлять нужную функциональность по требованию.
  • Самовосстановление программ. Хранение инсталляционной информации в одном месте позволяет приложению самовосстанавливаться. Поэтому пользователи теряют меньше времени на удаление и переустановку приложений, а также избавляются от необходимости исправлять непонятные и трудно диагностируемые ошибки в конфигурации приложения. Неправильно работающее приложение может проверить инсталляционные данные, определить, какие файлы повреждены или отсутствуют, а затем восстановить их.
  • Мощные возможности отката. Windows Installer позволяет отменять любые изменения в конфигурации как устанавливаемого продукта, так и операционной системы. Это делает установку программ, поддерживающих технологию Windows Installer, намного более безопасным и предсказуемым занятием, чем каких-либо других. Если при установке программы пользователь сталкивается с фатальной ошибкой, которая прерывает процесс инсталляции, у него остается возможность вернуться к предыдущему устойчивому состоянию. Причем это состояние будет в точности таким, каким было до попытки установки нового программного продукта. Такое поведение программ очень сильно отличается от того, к которому мы привыкли за много лет. Сбой или ошибки в программе инсталляции любого продукта (особенно заменяющего системные динамические библиотеки) могли нарушить работоспособность всей системы, причем это было справедливо не только для практически незащищенных операционных систем типа Windows 9x, но и для Windows NT. Я сам не раз сталкивался с подобными проблемами, особенно при отладке инсталлятора для довольно большого продукта, созданного с использованием пакета InstallShield Professional.

Выгода для пользователей Windows 2000 и более новых систем

Пользователи этих систем получают еще больше преимуществ, а именно:

  • Публикация приложений
  • Установка приложений на "закрытых" машинах
Публикация приложений

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

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

Установка приложений на "закрытых" машинах

Администраторы систем Windows 2000 могут разрешать пакетам инсталляции запускаться с привилегиями администратора на пользовательских машинах. Это позволяет устанавливать программное обеспечение на "закрытых" Windows 2000 компьютерах, то есть на таких компьютерах, где обычные пользователи не имеют привилегий делать то, что позволяется делать программе инсталляции.

Выгода от использования Windows Installer для разработчиков

То, что пользователям выгодно использовать данную технологию, сомнений не возникает. Но мы-то с вами не рядовые пользователи, мы – разработчики программного обеспечения (на мой взгляд, это должно звучать гордо). Что нам дает Windows Installer, кроме еще одной головной боли от необходимости изучать нечто новое? А вот что (и это немало):

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

Я думаю, тот, кто работал с InstallShield Professional (пакет для создания инсталляций, управляемых скриптом) и InstallShield Developer (пакет для создания инсталляций на основе Windows Installer, раньше назывался InstallShield for Windows ), поймет, насколько более гибко последний позволяет управлять созданием разных инсталляций на основе единого набора данных.

ПРИМЕЧАНИЕ

Раньше InstallShield Developer назывался InstallShield for Windows Installer

Что касается первого утверждения, непонятного на первый взгляд, то в нем все просто. Посмотрите на следующий заголовок – он все объясняет.

Инсталляция, управляемая данными

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

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

Все вышесказанное взято из документации Microsoft. Многие разработчики (в том числе и я) не во всем согласны с этими утверждениями. Но нельзя отрицать и того, что технология Windows Installer все-таки здорово облегчает жизнь системным администраторам и разработчикам.

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

Структура пакета инсталляции Windows Installer

Итак, что же представляет собой пакет инсталляции для Windows Installer? Обычно инсталляционные пакеты хранятся в файлах с расширением .msi и представляют собой реляционную базу данных, хранящую всю логику и данные, необходимые для правильной установки программного продукта. А доступом к этим данным управляет непосредственно Windows Installer. То есть, как и любая другая база данных, пакет инсталляции состоит из множества связанных друг с другом таблиц. Так как база данных является реляционной, таблицы связываются с помощью первичных и внешних ключей. Это обеспечивает эффективный способ управления процессом инсталляции и позволяет пользователям с легкостью приспосабливать сложное приложение или даже группу приложений к своим нуждам. Таблицы базы данных отражают общую схему приложения, включающую:

  • доступные опции приложения;
  • компоненты;
  • связи между опциями и компонентами;
  • необходимые записи в реестре Windows;
  • пользовательский интерфейс приложения. Для создания базы данных необходимо заполнить таблицы данными о приложении и о процессе инсталляции. Это можно сделать вручную, используя утилиту ORCA, поставляемую фирмой Microsoft в составе Windows Installer SDK. Кстати, эта утилита может очень помочь в изучении структуры базы данных пакета инсталляции. Но заполнение таблиц вручную – достаточно трудоемкий процесс даже для инсталляций умеренного размера. И это неудивительно, если учесть, что база данных любого пакета инсталляции включает как минимум 87 таблиц!
ПРИМЕЧАНИЕ

Справедливости ради надо сказать, что реально инсталлятор обычно использует только порядка 30-35 из них.

Поэтому гораздо проще и удобнее использовать пакеты для создания инсталляторов. К ним относятся, например Visual Studio Installer, Wise Installer, InstallShield Developer и некоторые другие, не столь широко известные пакеты. Кстати, многие пакеты создания инсталляторов включают в базу данных свои дополнительные таблицы, например, в пакетах, созданных с помощью InstallShield Developer количество таблиц достигает 113! При этом никто не запрещает нам, как разработчикам, определять и добавлять свои таблицы, дополняя тем самым модель данных Windows Installer.

ПРИМЕЧАНИЕ

Вышесказанное справедливо для Windows Installer версии 2.0, который позволяет распространять и устанавливать приложения для новой перспективной платформы Microsoft - .NET Framework.

Я не буду приводить полный список этих таблиц, так как он займет слишком много места. Вместо этого выделим основные группы таблиц и рассмотрим их подробнее.

В базе данных пакета инсталляции можно выделить семь основных групп:

  • базовые таблицы;
  • файловые таблицы;
  • таблицы записей в реестре Windows;
  • системные таблицы;
  • таблицы поиска;
  • таблицы информации о программе;
  • таблицы процесса инсталляции;

Базовые таблицы

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

Рисунок 1. Структура группы Базовые таблицы

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

Таким образом, мы видим, что эта группа состоит из 11 связанных таблиц. Ниже приведены их краткие описания:

Имя таблицыКраткое описание
FeatureСодержит список всех функций программного продукта
ConditionСодержит условия определяющие порядок установки каждой функции, описанной в таблице Feature 1
FeatureComponentsСвязывает функции с компонентами, иными словами – эта таблица определяет, какой функции принадлежит компонент 2
ComponentСодержит список всех компонентов приложения
DirectoryСодержит список всех каталогов, необходимых для инсталляции
PublishComponentСодержит список функций и компонентов, публикуемых для использования в других приложениях
AssemblyЗадает установки для сборок .NET Framework CLR и Win32
AssemblyNameЗадает схему для именования сборок .NET Framework CLR и Win32
ComplusСодержит информацию, необходимую для установки приложений COM+
IsolatedComponentСвязывает компонент, заданный в столбце Component_Application (обычно .exe) с компонентом, заданным в столбце Component_Shared (обычно .dll)
UpgradeСодержит информацию для значительных обновлений программного продукта 3
  1. Если в таблице Condition нет условия для функции из таблицы Feature – это значит, что функция будет установлена в любом случае.
  2. Один компонент может быть связан с несколькими функциями.
  3. В данном случае под термином значительное обновление понимается обновление, приводящее к изменению свойства ProductCode. Я не буду останавливаться на обновлениях, так как эта тема заслуживает отдельной статьи.

Файловые таблицы

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

ПРИМЕЧАНИЕ

Такие пакеты как InstallShield Developer и Wise Installer позволяют не придерживаться такого жесткого порядка заполнения таблиц. Но рекомендуется все-таки тщательно продумать структуру пакета инсталляции перед тем, как начать заполнять базу данных.

Структура этой группы показана на рисунке 2.

Рисунок 2. Структура группы Файловые таблицы

Эта группа состоит из 15 таблиц. Их краткое описание дано ниже.

Имя таблицыКраткое описание
FileВ этой таблице перечислены файлы, входящие в инсталляцию. Так как файлы привязаны к компонентам, их использующим, эта таблица связана с таблицей Component
RemoveFileВ этой таблице содержится список файлов, которые необходимо удалить при выполнении операции RemoveFiles
FontЭта таблица содержит список файлов шрифтов, которые необходимо зарегистрировать в системе
SelfRegЭта таблица содержит список саморегистрирующихся модулей (то есть библиотек динамической компоновки, экспортирующих функции DllRegisterServer и DllUnregisterServer). Installer не регистрирует EXE-файлы
MediaЭта таблица описывает набор дисков инсталляции
BindImageЭта таблица содержит информацию о привязках исполняемых файлов или DLL 1
MoveFileЭта таблица содержит список файлов, которые нужно перенести или скопировать во время инсталляции из исходного каталога в заданный каталог
DuplicateFileЭта таблица содержит список файлов, которые необходимо продублировать при инсталляции: либо в другой каталог с тем же именем, что и исходный файл, либо в тот же каталог, но с другим именем
IniFileВ этой таблице содержится информация для создания .ini-файлов, необходимых приложению. Эти файлы создаются, если содержащий их компонент выбран для инсталляции в локальном режиме или с источника инсталляции
RemoveIniFileЭта таблица содержит информацию, которую необходимо удалить из .ini-файлов при инсталляции приложения
EnvironmentЭта таблица используется для задания переменных окружения 2
IconЭта таблица хранит файлы иконок. Каждая иконка этой таблицы во время инсталляции копируется в отдельный файл на диске 3
FileSFPCatalogЭта таблица используется системой Windows File Protection в ОС Windows Me
SFPCatalogЭта таблица также используется системой Windows File Protection в ОС Windows Me
MsiFileHashЭта таблица хранит 128-разрядное хэш-значение для исходных файлов в пакете инсталляции 4
  1. Для получения более подробной информации о привязках смотрите описание функции Windows API BindImageEx
  2. В операционных системах Windows95/98 в этой таблице также хранится список изменений в файле autoexec.bat
  3. Таблица Icon используется при публикации программных продуктов
  4. Таблица MsiFileHash может использоваться только для файлов, не содержащих информации о версиях. Windows Installer может использовать информацию из этой таблицы, чтобы не выполнять лишнее копирование файлов, уже содержащихся на пользовательском компьютере и совпадающих с файлами из пакета инсталляции.

Таблицы записей в реестре Windows

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

Рисунок 3. Структура группы таблиц Записи в реестре Windows.

Внимательный читатель, конечно же, заметил, что на рисунке присутствуют таблицы из других групп, такие, как Component, Feature и File. Эти таблицы включены сюда для того, чтобы более ясно показать логику работы этой группы. Кроме того, здесь присутствуют таблицы, уже упоминавшиеся в других группах, но здесь играющие немного другую роль (это таблицы SelfReg и Environment).

Таким образом, эта группа включает 11 таблиц, краткое описание которых дано ниже:

Имя таблицыКраткое описание
ExtensionЭта таблица содержит список расширений файлов, используемых устанавливаемой программой, вместе с привязанными к этим расширениям функциями и компонентами
VerbЭта таблица связывает информацию о командах, связанных с расширениями файлов из предыдущей таблицы. Наличие этих таблиц в связке с таблицей Feature позволяет реализовать возможность публикации приложения
TypeLibЭта таблица содержит записи, необходимые для регистрации библиотек типов 1
MIMEЭта таблица связывает типы MIME c CLSID или расширением файла. Это позволяет связать таблицы MIME и Feature, и обеспечить еще один путь для публикации приложения
SelfRegСмотрите описание в группе Файловые операции 2
ClassЭта таблица содержит информацию, необходимую для работы COM-серверов
ProgIdЭта таблица содержит информацию о ProgID для COM-серверов
AppIdЭта таблица используется для конфигурирования DCOM-серверов
EnvironmentСмотрите описание в группе Файловые таблицы 3
RegistryЭта таблица содержит всю прочую информацию, не вошедшую в другие таблицы. Это может быть пользовательская информация, данные, установки по умолчанию и т.д.
RemoveRegistryЭта таблица содержит информацию о записях в реестре, которые нужно удалить при инсталляции приложения
  1. При публикации приложения никаких записей о библиотеках типов не делается. Запись производится только в момент установки компонента, связанного с библиотекой.
  2. Использование саморегистрации в Windows Installer НЕ РЕКОМЕНДУЕТСЯ и включено только для обеспечения обратной совместимости с предыдущими технологиями установки программ. Вместо этого рекомендуется заполнить соответствующие таблицы нужной информацией, аналогичной той, что прописывает нужный модуль при вызове его функции DllRegisterServer.
  3. Эта таблица включена в данную группу, так как в операционных системах Windows NT / 2000 / XP данные из нее пишутся в реестр.

При заполнении этой группы нужно попытаться сделать таблицу Registry как можно компактней, поместив как можно больше информации в другие, более специфичные таблицы. Это делается, потому что Installer не может выделить различные типы реестровых записей в таблице Registry и, следовательно, не может использовать внутреннюю логику для задействования всех своих возможностей, например – публикации или установки по требованию. Кроме того, такой способ организации данных поможет уменьшить риск записи лишней информации о COM-серверах.

Системные таблицы

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

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

Итак, эта группа состоит из 5 таблиц, краткое описание которых дано ниже:

Имя таблицыКраткое описание
_TablesХранит имена всех таблиц инсталляционной базы данных, включая созданные автором пакета для личных целей (например, для использования в своих операциях). Эта таблица доступна только на чтение
_ColumnsХранит информацию обо всех столбцах в таблицах инсталляционной базы данных. Но временные столбцы в этой таблице не хранятся. Как и предыдущая таблица, доступна только на чтение
_StreamsСодержит потоки данных OLE. Эта таблица временная и создается только при выполнении определенных SQL-запросов, например, при выполнении функции MsiRecordReadStream
_StoragesСодержит хранилища данных OLE. Эта таблица также временная и создается только при выполнении определенных SQL-запросов, например, при выполнении функции MsiRecordSetStream
_ValidationЭта таблица содержит информацию о столбцах в таблицах базы данных, включая их имена и диапазоны допустимых значений, а также другую важную для базы данных информацию. Используется только при проверке целостности базы данных

Таблицы поиска

Таблицы поиска используются для поиска файлов и приложений на компьютере пользователя. Чтобы найти файл, нужно сначала задать сигнатуру файла, а затем произвести поиск. Таблицы этой группы можно использовать для поиска в реестре, в данных конфигурации инсталлятора, по дереву каталогов или в .ini-файлах. При этом ищется файл или каталог с заданной уникальной сигнатурой. Затем, если файл найден, его сигнатура проверяется по таблице Signature, чтобы убедиться, что данный файл действительно тот, который нужен, а не просто еще один файл с таким же именем. Если запись в таблице поиска не связана с таблицей Signature, значит, запись ссылается на каталог, а не на файл.

Компонент, которому принадлежит нужный файл, определяется через связь между таблицами File и Component. Installer определяет подчиненность файла через таблицу компонентов, потому что каждый файл связан с одним компонентом. Местоположение компонента определяется по внешнему ключу в таблице Component, указывающему на таблицу Directory.

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

Группа таблиц поиска состоит из 7 таблиц, описание которых дано ниже:

Имя таблицыКраткое описание
SignatureСодержит информацию, уникальным образом описывающую некоторый файл 1
RegLocatorЭта таблица содержит информацию, необходимую для поиска файлов или каталогов по записям в реестре
IniLocatorЭта таблица используется для поиска .ini-файлов. Эти файлы должны быть расположены в корневом каталоге Windows
CompLocatorЭта таблица используется для поиска файлов или каталогов с использованием конфигурационных данных Windows Installer
DrLocatorЭта таблица используется для поиска по дереву каталогов
AppSearchЭта таблица содержит список свойств, которые должны быть установлены, если нужный файл или каталог с заданной сигнатурой найден
CCPSearchЭта таблица содержит список сигнатур файлов, из которых хотя бы один должен быть установлен на пользовательском компьютере. Таблица используется при обновлении программ
  1. Формально по документации Microsoft таблица Signature не относится к группе таблиц поиска. Но так как она нигде, кроме поиска, не используется, я позволил себе внести ее в эту группу.

Таблицы информации о программе

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

Состоит эта группа из пяти таблиц:

Имя таблицыКраткое описание
PropertyВ этой таблице хранятся все свойства 1 пакета инсталляции
BinaryВ этой таблице хранятся двоичные данные для иконок, растров и т.п. Также здесь хранятся данные для пользовательских операций
ErrorЭта таблица используется для поиска шаблонов форматирования при обработке ошибок. Installer имеет свой собственный механизм обработки ошибок
ShortcutЗдесь хранится вся информация, необходимая для создания файловых ярлыков
ReserveCostЭта таблица содержит информацию о необходимом дисковом пространстве для каждого компонента приложения
ПРИМЕЧАНИЕ
  1. Свойство – это глобальная переменная, которая используется Microsoft Windows Installer во время инсталляции.

Таблицы процесса инсталляции

Таблицы этой группы управляют выполнением стандартных и пользовательских операций.

ПРИМЕЧАНИЕ

Тема операций в Windows Installer обширна и ей будет посвящена одна из следующих статей.

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

Имя таблицыКраткое описание
InstallUISequnceЭта таблица содержит операции, выполняемые при активизации высокоуровневой операции INSTALL и уровне пользовательского интерфейса – полный или сокращенный. Installer пропускает операции из этой таблицы, если уровень пользовательского интерфейса установлен в базовый или отключен 1
InstallExecuteSequenceЭта таблица содержит операции, выполняемые при активизации высокоуровневой операции INSTALL 1, 2
AdminUISequenceЭта таблица содержит операции, выполняемые при активизации высокоуровневой операции ADMIN и уровне пользовательского интерфейса – полный или сокращенный. Installer пропускает операции из этой таблицы, если уровень пользовательского интерфейса установлен в базовый или отключен 3
AdminExecuteSequenceЭта таблица содержит операции, выполняемые при активизации высокоуровневой операции ADMIN 2, 3
AdvtUISequenceInstaller не использует эту таблицу. Она должна быть удалена из базы данных или быть пустой
AdvtExecuteSequenceЭта таблица содержит операции, выполняемые при активизации высокоуровневой операции ADVERTISE 4
  1. Все операции в последовательности инсталляции, вплоть до InstallValidate и диалогов выхода, помещаются в таблицу InstallUISequence. Все операции от InstallValidate и до конца инсталляции – в таблицу InstallExecuteSequence. Так как последняя таблица может использоваться независимо от первой (например, если пользовательский интерфейс отключен), она включает все операции инициализации, такие как LaunchConditions, CostInitialize, CostFinalize и ExecuteAction.
  2. Все пользовательские операции, выполняемые в этой последовательности, при необходимости использования пользовательского интерфейса должны пользоваться функцией API MsiProcessMessage, вместо диалогов из таблицы Dialog.
  3. Все операции в последовательности инсталляции, вплоть до InstallValidate и диалогов выхода, помещаются в таблицу AdminUISequence. Все операции от InstallValidate и до конца инсталляции – в таблицу AdminExecuteSequence. Так как последняя таблица может использоваться независимо от первой (например, если пользовательский интерфейс отключен), она включает все операции инициализации, такие как LaunchConditions, CostInitialize, CostFinalize и ExecuteAction.
  4. Таблица AdvtExecuteSequence может содержать только ограниченный набор стандартных операций. Пользовательские операции не должны содержаться в этой таблице.

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

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

Следующая группа таблиц расширяет возможности инсталлятора по манипулированию файлами и каталогами в процессе инсталляции.

Имя таблицыКраткое описание
RemoveFileЭта таблица содержит список файлов, которые необходимо удалить при инсталляции
RemoveIniFileЭта таблица содержит информацию, которую нужно удалить из .ini-файлов при инсталляции приложения
RemoveRegistryЭта таблица содержит информацию, которую нужно удалить из реестра при инсталляции связанного с ней компонента
CreateFolderСодержит список каталогов, которые необходимо создать при инсталляции приложения 1
MoveFileЭта таблица содержит список файлов, которые нужно перенести или скопировать во время инсталляции из исходного каталога в заданный каталог
  1. Хотя Installer и создает при инсталляции каталоги по мере необходимости, они удаляются, если не содержат файлов. Каталоги, перечисленные в таблице CreateFolder, не удаляются до тех пор, пока не будет удален связанный с ними компонент.

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

Последнее слово о таблицах

Список таблиц, используемых Windows Installer, весьма велик. И вполне естественно, что в рамках статьи невозможно рассмотреть все из них. Многие из таблиц, не упоминавшихся здесь, будут рассмотрены в следующих статьях, при рассмотрении более узких тем.

Windows Installer API

Таблицы – это конечно, хорошо. Но как добраться до содержимого этих таблиц? И как изменять эти таблицы? То есть, говоря иными словами, как можно работать с базой данных инсталляционного пакета?

Для этого существует Windows Installer API. Этот API весьма обширен и включает в себя несколько десятков функций, различных констант и агрегатных типов данных. Все функции Windows Installer API поддерживают как ANSI, так и Unicode. Это позволяет использовать их как в операционных системах на основе Windows NT, для которых кодировка Unicode является родной, так и в системах Windows 9x, ограниченно поддерживающих Unicode.

Все функции Windows Installer API легко найти по префиксу – Msi.

Функции API можно условно разделить на две большие группы:

  • Функции общего назначения.
  • Функции доступа к инсталляционной базе данных.

Функции общего назначения

Эта большая группа функций делится на следующие группы:

  • Функции пользовательского интерфейса и журналирования.
  • Функции управления дескрипторами.
  • Функции конфигурирования и инсталляции.
  • Компоненто-ориентированные функции.
  • Функции приложения.
  • Функции статуса системы.
  • Функции запросов.
  • Функции исправлений.

Функции доступа к инсталляционной базе данных

Функции доступа к базе данных используются в пользовательских операциях, выполняемых во время инсталляции программ, и в инструментальных утилитах (например, в тех же ORCA и MsiSpy из Platform SDK). Некоторые из этих функций используют подмножество языка SQL для запросов к базе данных.

Функции доступа к базе данных можно разделить на следующие группы:

  • Общие функции – эта группа функций используется для открытия, закрытия базы данных, работы с представлениями базы данных.
  • Функции управления – эта группа используется в основном для работы с трансформациями, а также для объединения баз данных, и их импорта/экспорта в текстовые файлы.
  • Функции обработки записей – это различные функции для манипулирования записями базы данных. С помощью этих функций можно извлекать данные из базы и помещать их туда. В Windows Installer поддерживаются следующие типы записей: String – строка, заканчивающаяся нулем, Integer – 32-битное целое число и Stream – поток байтов произвольной длины.
  • Функции для работы c суммарной информацией – эта группа функций позволяет извлекать из базы и записывать в базу свойства суммарной информации.
  • Функции доступа к состоянию инсталлятора – эти функции позволяют получать и задавать различные свойства инсталлятора.
  • Функции выполнения операций – эта группа функций используется для выполнения пользовательских и стандартных операций, вычисления условий и обработки сообщений.
  • Функции поиска - эти функции позволяют получать и записывать информацию в таблице Directory.
  • Функции выбора – эта группа функций используется для работы с функциями приложения и компонентами.Также в нее входят функции для установки уровня инсталляции и оценки места на диске, необходимого как для установки отдельных компонентов приложения, так и для всего продукта в целом
  • Функции пользовательского интерфейса – эти функции используются в инструментальных средствах для предварительного просмотра диалоговых окон и различных

Заключение

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

Источники информации

Документация к Platform SDK

Microsoft Developer Network

InstallShield Corporation

http://www.installsite.org

Эта статья опубликована в журнале RSDN Magazine #3. Информацию о журнале можно найти здесь

rsdn.org

Free Utility: Windows Installer CleanUp Utility

Utility Spotlight Windows Installer CleanUp Utility

Lance Whitney

You try to uninstall or update an application on one of the PCs in your environment, but your command doesn't execute. Instead, an error pops up telling you that the application could not be uninstalled or updated. Sound familiar? If so, you've undoubtedly wondered what causes this glitch.

Software installed using the Microsoft® Windows® Installer (MSI) technology writes certain files and registry settings. If any of those files or settings are missing or corrupted, you may be unable to remove, update, or even reinstall the program. The solution in such cases is to remove all of the Windows Installer information so that the program can be cleanly reinstalled. To do that, Microsoft offers the free Windows Installer CleanUp utility.

The Windows Installer CleanUp utility deletes all files and registry settings associated with a program's Windows Installer configuration. It's important to note that the tool does not remove the program's actual installation files or registry settings. Nor does the tool replace or supersede the Add/Remove Programs command.

Rather, you would resort to this utility if you can't uninstall or update an application through Add/Remove Programs or other methods. By deleting the Windows Installer information, you should be able to reinstall the application. You can then leave the program installed as is, update it, or even remove it.

The Windows Installer CleanUp utility displays a list of all the Windows Installer-based applications on the PC (Click the image for a larger view)

Some of you may be familiar with the Microsoft command-line program msizap, which removes a program's Windows Installer data. Well, that command is still in use here: Windows Installer CleanUp is simply a friendly front end to msizap, so that you no longer need to wrestle with any cumbersome command-line options.

After you install the utility, you'll find a subdirectory called Windows Installer Clean Up nestled under Program Files. Within this subdirectory are three files: msicuu.exe, msizap.exe, and readme.txt. The msicuu.exe file displays a list of all Windows Installer-based applications on the PC, letting you select, deselect, and remove any of them. This program then passes along your choices to the msizap.exe command, which removes the Windows Installer information for the selected applications.

To run Windows Installer CleanUp, go to the Start Menu | All Programs and find its folder; then click on the Windows Installer Clean Up shortcut. You'll see a list of all the Windows Installer-based applications that are on the PC (as shown in the screenshot). Select the application that you are having trouble with and click the Remove button. That application is then deleted from the Windows Installer database, giving you the opportunity to cleanly reinstall it.

You'll see that after you run the CleanUp tool, the application will no longer appear in Add/Remove Programs. Therefore, if you ultimately want to remove the application, you must reinstall it first. Windows Installer CleanUp works only with software that uses Windows Installer technology, which typically covers installations packaged as MSI files.

Finally, note that you must be logged in as an administrator to run Windows Installer CleanUp. The tool is compatible with all 32-bit and 64-bit versions of Windows. For more information on the utility and to download the software, please point your browser at support.microsoft.com/kb/2438651.

Lance Whitney is an IT consultant, trainer, and technical writer. He has spent countless hours tweaking Windows workstations and servers. Originally a journalist, he took a blind leap into the IT world 15 years ago.

© 2008 Microsoft Corporation and CMP Media, LLC. All rights reserved; reproduction in part or in whole without permission is prohibited.

technet.microsoft.com

install windows - Русский перевод – Словарь Linguee

www.linguee.ru

All these limitations mean that Windows PE is really only useful

[...]

for two things: to

[...] boot bare-metal systems so you can install Windows on them, and to boot into the Windows [...]

Recover Environment

[...]

(WinRE) in order to troubleshoot a computer that has problems with its Windows installation.

redline-software.com

Все эти ограничения означают, что Windows PE действительно полезна только в двух случаях:

[...]

для загрузки

[...] пустых систем, чтобы устанавливать на них Windows и для загрузки в Windows Recover [...]

Environment (WinRE), чтобы

[...]

диагностировать компьютер, имеющий проблемы с установкой Windows.

redline-software.com

You will worry about that when you install Windows; we've accomplished our goal of reserving space for the Windows partition to be created later.

openbsd.org

Дальнейшие операции над этим разделом вы можете проделать во время установки самой Windows.

openbsd.org

This was a bootable floppy disk from which you could run a network-aware version of MS-DOS, and to install, say, Windows 95, you would stick the floppy in your bare-metal system, turn the computer on, boot to DOS, and then manually (or automatically by launching a script) connect to the installation share on the network and run Setup.exe to begin the process of downloading the Windows installation files to the computer and running Setup on it to install Windows.

redline-software.com

Это была загрузочная дискета, с которой вы могли запускать версию MS-DOS с поддержкой сети, и устанавливать, скажем, Windows 95. Вы вставляли дискету в дисковод компьютера без ОС, включали компьютер, загружались в DOS, и затем вручную (или автоматически путем запуска сценария) подключались к установочному ресурсу в сети и запускали Setup.exe, чтобы начать процесс скачивания установочных файлов Windows на компьютер для установки Windows.

redline-software.com

This saves them (and you) money because it's much more

[...] efficient for these large companies to install Windows once and then clone the drive.

recover-keys.com

Это помогает им (и вам) сэкономить

[...]

деньги, потому что для таких

[...] огромных компаний гораздо удобнее установить Windows только один раз, а затем [...]

просто клонировать драйв.

recover-keys.com

PlayOnMac is software based

[...] on Wine allowing you to easily install Windows-based applications under Mac OS.

masterforex.com

PlayOnMac - это программное обеспечение на

[...] основе Wine, позволяющее легко устанавливать Windows-приложениям в системе Mac OS.

masterforex.com

The ease of use and complete transparency to the end user creates false impression of impeccability of the Encrypting File System in the

[...]

eyes of the user, who often forget

[...] about the encrypted files when they re-install Windows or transfer a disk into a new, upgraded [...]

computer.

elcomsoft.com

Простота использования и полная прозрачность для пользователя могут сыграть плохую шутку, поскольку пользователь часто просто

[...]

забывает, что на дисках

[...] хранятся защифрованные данные, и спокойно переустанавливает Windows или устанавливает диск с данными [...]

в новый компьютер.

elcomsoft.ru

When performing a new installation from DVD of Windows 7 or Vista a

[...] box will prompt “Where do you want to install Windows?

knowledge.seagate.com

При установке ОС Windows 7 или Vista с DVD-диска на чистый жесткий диск

[...] отображается сообщение "Выберите раздел для установки Windows".

knowledge.seagate.com

If the problem still continues, then you will

[...] possibly need to reload your USB controller drivers, which means you would need to insert your Windows install CD and boot to it to launch the Windows Repair.

knowledge.seagate.com

Если проблема не исчезнет, возможно, потребуется

[...] перезагрузить драйверы контроллера USB, то есть вставить установочный компакт-диск Windows в привод и загрузиться с него, запустив средство восстановления Windows.

knowledge.seagate.com

His house was broken into as the windows were shattered and his belongings [...]

were scattered around.

daccess-ods.un.org

В его дом было совершено

[...] вторжение путем взлома, поскольку окна были разбиты, а его [...]

личные вещи разбросаны.

daccess-ods.un.org

For example, my company Business Console successfully implemented a BPM solution targeting a sales process executed through geographically distributed offices and now we

[...]

offer it as a template, i.e. a starting point

[...] of a BPM project to companies that manufacture and install plastic windows, metal doors, custom-made furniture etc.

mainthing.ru

Например, у компании Бизнес-Консоль есть успешный опыт построения системы управления бизнес-процессом продаж через территориально-распределенные офисы, и сейчас мы предлагаем его в

[...]

качестве шаблона, т.е.

[...] отправной точки для создания BPM-системы, компаниям, занимающимся производством и монтажом пластиковых окон, металлических [...]

дверей, мебели на заказ и т.п.

mainthing.ru

The "Installation company" target group includes all companies/persons who purchase windows and balcony doors from the manufacturer of windows and balcony doors, or from a building element

[...]

dealer, in order to sell

[...] these and to install them into a building development, without the windows or balcony doors [...]

being modified.

schlossindustrie.de

Целевая группа "Монтажное предприятие" охватывает все предприятия/лица, которые закупают окна и/или балконные двери у

[...]

изготовителя окон и балконных дверей,

[...] для их продажи и монтажа на строительном объекте, без внесения изменений в окна или балконные [...]

двери.

schlossindustrie.de

I want to speak

[...] briefly about the history of this system and why we actually needed to install PHP on Windows.

deepshiftlabs.com

Хочу вкратце рассказать

[...] об истории этой системы и зачем, собственно, нам понадобилось устанавливать PHP на Windows.

deepshiftlabs.com

On the working computers we need to install TortoiseSVN(for Windows) or RapidSVN (for Linux, though [...]

nobody forbids to work from a command

[...]

line) and all the synchronization of the information occurs in one mouse click!

lampibata.org

На рабочих компьютерах ставится TortoiseSVN(это для Windows) или RapidSVN(для Linux, хотя никто [...]

не запрещает работать из командной

[...]

строки) и веся синхронизация рабочей информацией происходит в один клик мышки!

lampibata.org

Using your WD Advanced Format Hard Drive

[...]

with a Windows Operating

[...] System may require you to run the WD Align Windows software utility after you install your operating system or partition and format [...]

the drive as a secondary drive.

westerndigital.nl

Для правильного функционирования

[...]

жесткого диска WD с

[...] технологией Advanced Format под управлением ОС Windows может понадобиться запустить программу WD Align для Windows после установки на него операционной [...]

системы или

[...]

при его использовании в качестве дополнительного накопителя.

westerndigital.nl

For correct work of the system you should enable Java

[...] Script, allow displaying of images and pop-up windows, install Flash Player 8+.

plentylove.com

Для правильной работы системы

[...]

необходимо включить поддержку Java Script,

[...] разрешить отображение картинок и всплывающие окна, установить Flash Player 8+.

plentylove.com

Efforts to reduce heat loss and energy waste have resulted in lower consumption of water, more efficient water vapor

[...]

central heating system, more heat conserving

[...] walls through better insulation and windows, and more energy efficient lighting.

unesdoc.unesco.org

Усилия, направленные на сокращение потерь тепла и электроэнергии привели к уменьшению потребления воды, созданию более эффективной системы центрального парового

[...]

отопления, большему

[...] сохранению тепла благодаря лучшей теплоизоляции стен и окон, а также использованию [...]

более эффективного

[...]

энергосберегающего освещения.

unesdoc.unesco.org

A Building under Construction where the main supporting elements

[...]

(walls, coverings, roof) are

[...] completed, where windows and doors are installed, and if all other [...]

openings, which could enable

[...]

unauthorized third parties to enter the building under construction without using any technical aids, have been firmly closed, is insured just like a Building.

ib.swedbank.lv

Новостройка, в которой завершено возведение

[...]

главных несущих конструкций, т. е.,

[...] стен, перекрытий, кровли, в которой установлены окна и двери [...]

и, если надежно перекрыты все

[...]

прочие места возможного несанкционированного проникновения посторонних лиц в новостройку без применения технических средств страхуется наравне со Зданием.

ib.swedbank.lv

The second phase would ensure compliance with access control requirements through protection beyond the perimeter layer by incorporating

[...]

multiple internal layers of

[...] protection related to doors, windows, roofs, conference and [...]

meeting rooms, critical infrastructure

[...]

rooms, elevator cars, lobby controls, archival and storage areas and parking garages.

daccess-ods.un.org

На втором этапе будет обеспечено соблюдение требований контроля благодаря созданию системы защиты внутри периметра комплекса путем объединения множества внутренних элементов

[...]

безопасности в единую эшелонированную

[...] систему защиты, включая двери, окна, крыши залов заседаний [...]

и совещаний, важнейшие технические

[...]

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

daccess-ods.un.org

Single windows for exports and imports, coordinated [...]

border control and risk management are key standards and tools which

[...]

need to be further advanced and consistently implemented by relevant parties.

daccess-ods.un.org

Система "одного окна" для экспорта и импорта, скоординированный [...]

пограничный контроль и управление рисками − вот те основные

[...]

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

daccess-ods.un.org

To facilitate the delivery of correspondence, the General Office of Prison

[...] Services had decided to install in each prison a special [...]

box for complaints.

daccess-ods.un.org

Для облегчения условий прохождения

[...]

корреспонденции Генеральная дирекция

[...] пенитенциарных служб решила установить в каждом учреждении специальный [...]

ящик для сбора жалоб.

daccess-ods.un.org

This solution is being further enhanced with a US$0.5 million project component to install and/or upgrade sea-level gauges in affected countries, to cover the immediate sea-level observation gaps in the Indian Ocean.

unesdoc.unesco.org

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

unesdoc.unesco.org

It was pointed out that poor countries do not

[...] have the resources to install infrastructure and technical [...]

facilities to provide early

[...]

warning systems, respond to overwhelming conditions following a disaster or rebuild thereafter.

daccess-ods.un.org

Указывало сь, что бедные

[...]

страны не располагают ресурсами,

[...] которые позволили бы им создать инфраструктуру и технические [...]

объекты, необходимые для систем

[...]

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

daccess-ods.un.org

With smaller and standardized dimensions

[...] the HECS is easy to install in all types of power plants.

abb.co.uk

Благодаря своим компактным и стандартизированным размерам ЭГРУ

[...] типа HECS может быть легко установлено на электростанциях [...]

всех типов.

abb.by

While welcoming the efforts of the State party to install television cameras in police detention facilities of local and municipal police authorities to record interrogations, the Committee is concerned about the limited proportion of cases actually recorded.

daccess-ods.un.org

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

daccess-ods.un.org

Applicable national laws and directives Turn-Only and Tilt&Turn hardware is

[...]

used exclusively for

[...] installation in windows and balcony doors which are to be vertically installed, made from timber, [...]

PVC, aluminium,

[...]

or steel, and their corresponding combinations.

schlossindustrie.de

Действующие национальные законы и Директивы Поворотная и

[...]

поворотно-откидная

[...] фурнитура служит исключительно для применения на вертикально устанавливаемых окнах и балконных дверях [...]

из дерева, пластмассы,

[...]

алюминия или стали и соответствующих комбинаций этих материалов.

schlossindustrie.de

In addition, through its Grant Assistance for Grassroots Human Security Projects, Japan has provided financial

[...]

assistance to support grass-roots level

[...] projects to construct facilities, install equipment, etc. such as those conducted [...]

by NGOs since 1989.

daccess-ods.un.org

Кроме того, с помощью своей Программы субсидирования местных проектов в сфере человеческой безопасности Япония предоставила

[...]

финансовую помощь в целях

[...] поддержки народных проектов по строительству общественных учреждений, установлению [...]

оборудования и т.д., аналогичных тем,

[...]

которые осуществляют НПО с 1989 года.

daccess-ods.un.org

UNDP is providing technical assistance to the joint secretariat to implement the Afghan Peace and Reintegration Programme, managing one of the three major windows for the channelling of international financial assistance totalling $72 million.

daccess-ods.un.org

ПРООН оказывает техническую помощь совместному секретариату в деле осуществления Афганской программы мира и примирения, ведая одним из трех главных каналов поступления международной финансовой помощи на общую сумму 72 миллиона долларов.

daccess-ods.un.org

The group remained in front of the house, screaming, and smashed a double-pane window on the front

[...] door, as well as three other double-pane windows.

daccess-ods.un.org

Снаружи дома другие люди продолжали кричать; они разбили двойное стекло входной

[...] двери, а также три других двойных стеклопакета.

daccess-ods.un.org

Others complained that they were locked in

[...] the vans with closed windows in the sun for long [...]

periods so that the atmosphere became suffocating.

daccess-ods.un.org

Другие жаловались на то, что они

[...] были заперты в фургонах с закрытыми окнами на солнцепеке [...]

в течение длительного периода

[...]

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

daccess-ods.un.org

One organiser used the ship’s

[...] intercom to request assistance in Hebrew and persons also communicated directly through the cabin windows or by placing signs, written in English and Hebrew, in the ship’s windows.

daccess-ods.un.org

Один из организаторов использовал

[...]

систему громкой связи, с тем чтобы просить о

[...] помощи на иврите; другие лица также вступали в непосредственную связь через иллюминаторы или выставляя плакаты, написанные на английском языке и на иврите, в иллюминаторы судна.

daccess-ods.un.org

Solved: How To Install .NET 3.5 On Windows 8

If you are reading this page, chances are that you have been trying to run an application that is asking to have .NET 3.5 or older, going back to 2.0. The good news is that .NET 3.5 (what is .NET by the way?) can handle all prior .NET versions, so you only need to install it once. The bad news is that the installation will sometimes fail and while the problem is largely documented, the solutions are sparse and many don’t work. I have bumped into this problem myself with a fresh Windows installation, so I wanted to share how I got out of it. I’ll go through many possible fixes for this, from “easy”, to the more difficult one.

Fix 1: enable .NET 3.5 in the control panel

Open the Windows control panel, search for “Turn Windows features on or off” and click on that link. A dialog will open and you can see that .NET Framework 3.5 is unchecked. To add make it active, check it and click OK.

In theory, Windows should download the necessary files from the web, install the framework, and that’s it. Congratulations, you can now run your app. Unfortunately, many users will encounter a dreaded error code 0x800F0906.

Fix 2: what is code 0x800F0906 and how to go around it

A number of errors associated with this particular error is documented in the official Windows support site. The error means that for some reason, Windows is not able to download the necessary files to install .NET 3.5.

This is a fairly generic error, and of course, the first thing that Microsoft says is “check your Internet connection” which is a fair question, but most likely, your Internet runs just fine, and this is how you got to this site.

The first thing that I tried was to download a 175MB full distribution of NET 3.5, but the installation failed as well, proving that this was not an Internet connectivity issue.

Since the download doesn’t work, the other solution is to install the framework from a local media, USB Disk or DVD ROM depending on what’s at hand. Most OEMs no longer ship discs with their computers, and most also don’t provide a Windows installation USB stick as well.

This is a big issue because you undoubtedly want to have access to a Windows install RIGHT NOW, and you basically have to either

  • Order a bootable OS media from the PC maker
  • Borrow one from a friend
  • Download a windows install ISO image and make a bootable USB installation disk. This is when having geeky friends come in handy.

Note that in order to build a bootable Windows installation disk from an ISO file, you need the Windows USB boot, which requires… you guessed it… .NET 3.5 (the official URL is down right now, but it may be temporary, here’s a backup on CNET downloads).

Alternatively, you may also be able to simply mount the ISO as a virtual drive and copy the files to a local disk or something like that. You don’t need to actually “boot” from it.

I had a Windows XP machine on hand, so I used that one to create my Windows 8 USB Boot. However, if you are not so lucky, there are several other Bootable USB utilities out there that claim to replace Microsoft’s own tool. I have NOT used any of them, so it is up to you to decide if you want to try.

Once you have the Windows installation files in a known place, you can use the DISM (Deployment Image Servicing and Management) utility to enable NET 3.5 for you. For that, you need to open a prompt command in Administrator mode by searching for “command prompt”, right click on the icon and choose “Run as administrator”. You can then run the following command:

Dism /online /enable-feature /featurename:NetFx3 /All /Source:F:\sources\sxs /LimitAccess

Note that in my case, my Windows installation files were on F: but this could be different on your system. Replace F: with the appropriate drive.

This procedure is documented officially at http://support.microsoft.com/kb/2734782, but I thought that it lacked context and explanations. If you are lucky, NET 3.5 should now be installed and you can run your app!

Unfortunately, I was not so lucky and I found myself facing a new error message: “Error 0x800f081f. The source files could not be found. Use the “source” option to specify the location of the files that are required to restore the feature. For more information on specifying a source location, see http://go.microsoft.com/fwlink/?LinkId=243077” (the page links to http://technet.microsoft.com/en-us/library/hh825020.aspx which is how to configure a Windows Repair Source). Ultimately, none of the information contained in these pages did help me get this thing off the ground.

Note that if you want to open the dism.log file, you may find yourself looking at a bit of text and a pile of garbage that look like Asian characters. This is because the text reader is not using the proper character encoding. I was able to read the log properly by opening the file in Word and hand-picking the UTF-8 encoding. The log didn’t provide any useful into to fix this, but at least I was able to discard it after that.

Another solution consisted in changing a group policy to download from an alternate location than Windows update. I tried, but it ultimately failed, so I’m not adding it here. If you want to try that, head to this Microsoft page that explains how to configure the group policy to solve this.

However, I did find a solution to my specific issue…

Fix 3: check if some Windows updates are conflicting with the installation process

I’ve browsed the web A LOT to fix this (so I’m hoping to save your precious time by compiling this) and I found a little video that claimed to fix this exact problem.

Interestingly, the video did NOT fix my problem (watch it if you are curious, it may work in your case), but in the comments, I found a little gem by French YouTube user Simon Vezina who says:

“If this video doesn’t work for you, try removing KB2966826 and KB2966828 from your installed updates and try to install .NET 3.5 again from Add & Remove Features normally”

This seemed odd, but Windows Updates can sometimes create problems, so I went to check if I had these updates by going to: Control Panel > Add/Remove programs>View Installed Updates. In the search box, I entered the KB2966826 and KB2966828, and sure enough, they were both there.

I click on each and selected “Uninstall”, and after they were gone, I went to try again what was described in Fix #1. This time, it worked! No reboot required

What happened?

I don’t know for sure why these updates were causing the problem, but in my case, they certainly did. What happens is that when you install a fresh Windows 8.x Windows, the OS wants to update you as fast as possible to the latest fixes etc. This is a good thing. However, because you do this BEFORE having installed NET 3.5, and because they conflict with the later installation, many people bump into this problem.

Fortunately, the fix is simple once you know what is is, and now that I know the solution, I can see that this was documented online in sites such as dslreports, superuser, or tomshardware. The problem is that a search for “How To Install .NET 3.5 On Windows 8” doesn’t really surface the immediate solution.

I hope that this page connected the dots and saved you some time. Enjoy your NET 3.x and 2.x apps and if you can’t get it to work, feel free to drop a message here, or if you know another solution, feel free to add a comment to help someone else. Thank you!

Filed in Computers. Read more about Windows 8.

www.ubergizmo.com

How to make a Custom Windows Install w/ nLite

Most people have things that they remove from a fresh Windows install every time that they install. Such as services, tools, programs, and others. There are many ways to get settings removed before installing so that you do not have to modify it after every install. One of the ways would be to make a custom install for Windows. We are going to use a tool called nLite to make a fully unattended install and to customize many options so that you can have your own Windows “build”. The program(s) used throughout this tutorial can cause damage to your OS and or make your computer not function. Please, do not make changes unless you are sure you know what you are doing. We can not be held responsible for mistakes made to your PC. Also, be warned that there are a TON of options in this program and many of them are awesome. This process could take a couple of hours to complete, but once you are done it is really worth it. Sorry for the length of this tutorial, but I wanted to cover everything necessary to have a successful build.The first step is to get an intro to what nLite is.

“nLite is a tool for permanent Windows components removal and pre-installation Windows setup. After removal there is an option to make bootable image ready for burning on cd or testing in virtual machines. With nLite you will be able to have Windows installation which on install doesn’t include, or even contain on cd, unwanted components.”

You can nLite many different Windows operating systems (2000, XP, and 2003, all of which you can do x86 and x64 versions). You can integrate service packs and updates, remove unwanted components, Create an un-attended set-up(including ISO) integrate drivers to be automatically installed, enable hundreds of tweaks in the tool (from all over the internet), and configure services. nLite requires .NET Framework 2.0 to operate, and the most recent version of it is 1.2. I am using the previous stable build which is 1.0.1. You can download all of the pre-mentioned items at http://www.nliteos.com. nLite modifies what is called an RTM to create your install. You will need to download the RTM that you want from the internet. Just look around, you will be able to find them. You can also use a Windows CD. Just copy the full content from a distribution CD to a directory on your HDD and when it asks for your install source, go to that directory. Now, that you have a basic understanding let’s get started: once you have everything installed and directories created, we can begin the setup process. Keep in mind when setting up your directories, that you can only use the source files once. You can not nLite the same source files several times. Just copy the folder and rename it to something you would want to call your OS.

When you first launch the nLite.exe you will see the following screen:;At this screen just hit next after you select the language that you would like to use. The following screen will then appear:This is where you pick where your source files are. Click on browse and go to where you placed your source files. The directory must contain the entire i386 folder and the setup files. Once you select the folder containing these files the bottom half of this windows will populate with the version, language, path, total size, and free space on current drive. As mentioned before, make sure that you copy the contents of your source folder if you plan on doing this more than once. (Most people do, it takes more than one try to get it exactly how you want it. Once you have selected your source folder, click next. The following screen will then appear.This screen shows your last sessions. The will automatically make all the settings in the following steps be what you had them set to in a previous nLite. This can be helpful if you build an install and one thing isn’t perfect. You can change just that one thing and build it again without repeating the whole process. Select your session and click load to import the settings. If you are not using one or this is your first time just click next.;This screen allows you to modify what option you will be able to set in the following steps. For the sake of the tutorial, we will do them all except integrate a service pack, because the RTM that I am using has SP2 included.This windows is where you can integrate hot fixes, add-ons, and updates packs directly into the install. The top one that I have listed on this screen is the RyanVM Update Pack, which can be downloaded from http://www.ryanvm.net/msfn/updatepack.html. This is the most well known update pack and contains all updates to windows XP since SP2. I have also included NET Framework, and CCleaner. These will all install without ANY user intervention. On this window click Advanced and Enable remove catalog files. This will make setup a lot faster. There is a setting that must be set later in order for this to work but I will cover that when the time comes. Once you are done adding your updates, click next.This window allows you to integrate the drivers for your particular machine into the install so that you do not have to install them manually after the install has completed. Click on insert and select the inf file for the driver that you wish to install. It could be names oemsetup.inf. If there are more than one, you only need to select the first on. It will then pull the other one automatically. After you are done adding drivers, click next.This window allows you to pick features that you are going to use on your PC. This is a way to ensure that you don’t accidentally remove something that you will need. For example, If I want to be able to install cameras and camcorders, I would check that box and the program would then remove all of the features needed from the following screen so that I can’t mistakenly remove it. If you want everything to be removable don’t check anything.;This is where you can remove almost ANYTHING from the install. For a custom made – complete break down of what services requires others. Please check out this Excel sheet made by Brian Orange.Ensure that you fully understand what you are removing before you do. There are things that are highlighted in red text. These are features that nLite recommends keeping. Any box you check will be removed. The unchecked boxes will be installed. Once you have gone through all available options, click next.This box has numerous tabs. On the first tab you want to change the mode to Full Unattended. Uncheck the OEM box only if you install SATA or RAID drivers from a floppy disc.On this tab Put in the name of the Administrator and Organization and password. You can check blank password if you do not want to PW protect your machine. You can enable your machine to auto-login so that you don’t have to click on anything as well.This tab is where you pick your computer type. Recommended is Automatic. Insert your product key for your installation, and select theme options. You can also turn System Restore on and off and modify its settings. If you are concerned with speed you should turn DEP Always Off. DEP is a feature that checks memory so it prevents malicious code running from there.;This is where you select your keyboard layout and language options ad well as your time zone. This is the last tab you NEED to set in order to have an unattended install. The other tabs have features that we are not going to cover in this tutorial because they are pretty much self explanatory. Once you are finished with all of these settings, click next.;This box gives you some more options. For example you can get rid of user profile in the temp folder if you are the only person using the PC and want the temp folder with easier access. Also, at the bottom of this page there are two settings under setup look. You can change both of them to enabled to MAYBE speed the install up a slight little bit. The other tab is the services tab. You can disable services from there. Once you are done click next.;This window has 4 pretty powerful settings in it. The first settings is how many simultaneous connections can be made through your Ethernet card at once. Making this number 16777215 will drastically increase your bandwidth capabilities when surfing the web. USB port frequency is how often the USB port checks for a status change of the device connected to it. The theme support will allow you to use ANY theme downloaded from the web even if it is not signed. The final setting, SFC needs to be disabled. This is the settings that I mentioned earlier that we have to set in order to remove catalog files.After you pick your options on these settings click next.This is where you can add or remove options from Windows. These are Tweaks that are usually done manually or with a patch from the web. nLite has compiled some of the most frequently used and powerful tweaks around. Go through these tweaks and enable the ones that you want. If you do not want to take a chance at removing something that you might need, uncheck the advanced check box at the bottom of the screen. Once you are done picking your settings, click next. You will get the following prompt. Click yes to start ripping apart the source files and compiling the new install for you.;It will go through the process. It may take several minutes. At any time if you need to complete another task on your pc you can change the Priority on the fly to make nLite not use all of the system resources.;Once the process is completed, it will tell you how much you have reduced the total size of the install by, and mow much of that space is used for drivers and such. Click next.;Now you can name your ISO anything that you want. Once you have selected a name you can click on Make ISO. If you would like to add additional files to your CD, just add them to your working directory before clicking on Make ISO. When you click Make ISO it will prompt you where to put it. Just save it where you would like and it will the go through the process.Once the ISO has completed and you click Next, you will get this screen. nLite is donation based software so if you can, make a small donation to them. Thank-you for viewing this tutorial.

teamtutorials.com


Смотрите также