Контекст установки

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

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

Примечание

Свойство MSIINSTALLPERUSER , доступное начиная с установщика Windows 5.0 и Windows Server 2008 R2 и Windows 7, может упростить разработку одного пакета, который можно установить в контексте компьютера или пользователя. Сведения о разработке пакета двойного назначения, который дает пользователю возможность выбирать контекст установки во время установки, см. в разделе Разработка одного пакета. Установщик Windows игнорирует свойство MSIINSTALLPERUSER, если значение ALLUSERS не равно 2. Установщик Windows всегда сбрасывает значение ALLUSERS до 1 при установке в контексте компьютера и сбрасывает значение ALLUSERS в пустую строку ("") при установке в контексте пользователя.

 

Перенаправление ярлыков

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

Контекст установки Per-Machine (ALLUSERS=1) Per-User контекст установки (ALLUSERS="")
Приложения отображаются в разделе Установка и удаление программ на панель управления для всех пользователей компьютера.
Приложения отображаются только в разделе Установка и удаление программ на панель управления для пользователей, которые установили приложения.
Ярлыки устанавливаются в профиль "Все пользователи".
Ярлыки устанавливаются только в профиль этого пользователя.
Значки и преобразования хранятся в %WINDOWS%\Installer\{ProductCode}.
Значки и преобразования хранятся в папке %USERPROFILE%\Application Data\Microsoft\Installer\{ProductCode GUID}

 

Перенаправление реестра

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

Контекст установки Per-Machine (ALLUSERS=1) Per-User контекст установки (ALLUSERS="")
Установщик Windows записывает или удаляет значения реестра, введенные в таблицах Реестр и RemoveRegistry , со значением -1 в столбце Root в HKEY_LOCAL_MACHINE.
Установщик Windows записывает или удаляет значения реестра, введенные в таблицу Registry и RemoveRegistry , со значением -1 в столбце Root в HKEY_CURRENT_USER.
Установщик Windows записывает или удаляет значения реестра, введенные в таблицах Реестр и RemoveRegistry, со значением msidbRegistryRootClassesRoot (0) в столбце Root в разделеКлассыпрограммного обеспечения\HKLM\.
Установщик Windows записывает или удаляет значения реестра, введенные в таблицах Реестр и RemoveRegistry, со значением msidbRegistryRootClassesRoot (0) в столбце Root в разделеКлассыпрограммного обеспечения\HKCU\.
Регистрация COM записывается вклассыпрограммного обеспечения\HKLM\.
Регистрация COM записывается вклассыпрограммного обеспечения\HKCU\.

 

Перенаправление папок

Установщик Windows задает для свойств папки полный путь к соответствующей папке для контекста установки.

Примечание

Папки идентифицируются по константам KNOWNFOLDERID и CSIDL . Начиная с Windows Vista, приложения должны использовать функцию SHGetKnownFolderPath и KNOWNFOLDERID для определения полного пути к специальным папкам. Существующие приложения, использующие функцию SHGetFolderPath и постоянные специальные идентификаторы элементов (CSIDL), будут продолжать работать.

 

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

Контекст установки Per-Machine (ALLUSERS=1) Per-User контекст установки (ALLUSERS="")
DesktopFolder Полный путь к папке Рабочего стола для всех пользователей.
FOLDERID_PublicDesktop (CSIDL_COMMON_DESKTOPDIRECTORY)
DesktopFolder Полный путь к папке Рабочего стола для текущего пользователя.
FOLDERID_Desktop (CSIDL_DESKTOP, CSIDL_DESKTOPDIRECTORY)
ProgramMenuFolder Полный путь к папке Меню программы для всех пользователей.
FOLDERID_CommonPrograms (CSIDL_COMMON_PROGRAMS)
ProgramMenuFolder Полный путь к папке меню программы для текущего пользователя.
FOLDERID_Programs (CSIDL_PROGRAMS)
StartMenuFolder Полный путь к папке меню "Пуск" для всех пользователей.
FOLDERID_CommonStartMenu (CSIDL_COMMON_STARTMENU)
StartMenuFolder Полный путь к папке меню "Пуск" для текущего пользователя.
FOLDERID_StartMenu (CSIDL_STARTMENU)
StartUpFolder Полный путь к папке запуска для всех пользователей.
FOLDERID_CommonStartup (CSIDL_COMMON_STARTUP)
StartUpFolder Полный путь к папке запуска для текущего пользователя.
FOLDERID_Startup (CSIDL_STARTUP)
TemplateFolder Полный путь к папке Templates для всех пользователей.
FOLDERID_CommonTemplates (CSIDL_COMMON_TEMPLATES)
TemplateFolder Полный путь к папке Templates для текущего пользователя.
FOLDERID_Templates (CSIDL_TEMPLATES)
AdminToolsFolder Полный путь к папке Администратор Tools для всех пользователей.
FOLDERID_CommonAdminTools (CSIDL_COMMON_ADMINTOOLS)
AdminToolsFolder Полный путь к папке Администратор Tools для текущего пользователя.
FOLDERID_AdminTools (CSIDL_ADMINTOOLS)
AppDataFolder Полный путь к папке меню программы.
Windows Vista и более поздних версий: Полный путь к папке Roaming.

FOLDERID_RoamingAppData (CSIDL_APPDATA)
AppDataFolder Полный путь к папке меню программы.
Windows Vista и более поздних версий: Полный путь к папке Roaming.

FOLDERID_RoamingAppData (CSIDL_APPDATA)
CommonAppDataFolder Полный путь к папке, содержащей данные приложения для всех пользователей.
FOLDERID_ProgramData (CSIDL_COMMON_APPDATA)
CommonAppDataFolder Полный путь к папке, содержащей данные приложения для всех пользователей.
FOLDERID_ProgramData (CSIDL_COMMON_APPDATA)
FavoritesFolder Полный путь к папке Избранное для текущего пользователя.
FOLDERID_Favorites (CSIDL_FAVORITES)
FavoritesFolder Полный путь к папке Избранное для текущего пользователя.
FOLDERID_Favorites (CSIDL_FAVORITES)
PersonalFolder Полный путь к папке "Мои документы" или "Личная" для текущего пользователя.
Windows Vista и более поздних версий: Полный путь к папке "Документы" для текущего пользователя.

FOLDERID_Documents (CSIDL_PERSONAL)
PersonalFolder Полный путь к папке "Мои документы" или "Личная" для текущего пользователя.
Windows Vista и более поздних версий: Полный путь к папке "Документы" для текущего пользователя.

FOLDERID_Documents (CSIDL_PERSONAL)
SendToFolder Полный путь к папке SendTo.
FOLDERID_SendTo (CSIDL_SENDTO)
SendToFolder Полный путь к папке SendTo.
FOLDERID_SendTo (CSIDL_SENDTO)
FontsFolder Полный путь к папке Системные шрифты.
FOLDERID_Fonts (CSIDL_FONTS)
FontsFolder Полный путь к папке Системные шрифты.
FOLDERID_Fonts (CSIDL_FONTS)
ProgramFilesFolder32-разрядная версия Windows: значение свойства — это полный путь к папке Program Files для всех пользователей (например, %ProgramFiles%.) Идентификатор этой папки — FOLDERID_ProgramFiles (CSIDL_PROGRAM_FILES.) Идентификаторы FOLDERID_ProgramFiles и FOLDERID_ProgramFilesX86 представляют одну и ту же папку. Доступ к файлам в этой папке могут получить все пользователи.
64-разрядная версия Windows: Значение свойства — это полный путь к папке Program Files (x86) для всех пользователей (например, %ProgramFiles(x86)%.) Идентификатор этой папки — FOLDERID_ProgramFilesX86 (CSIDL_PROGRAM_FILESX86.) Доступ к файлам в этой папке могут получить все пользователи.
ProgramFilesFolderWindows Server 2008 R2 и Windows 7. Значение свойства — это полный путь к папке Programs для текущего пользователя (например, %LocalAppData%\Programs).) Идентификатор этой папки FOLDERID_UserProgramFiles в 32-разрядных и 64-разрядных системах. Эквивалентный идентификатор CSIDL для FOLDERID_UserProgramFiles отсутствует. Доступ к файлам в этой папке может получить только пользователь, установив эту папку.
Windows Server 2008 и более ранних версий, а также Windows Vista и более ранних версий: Папка с поддержкой каждого пользователя недоступна. Путь совпадает с контекстом для каждого компьютера (например, %ProgramFiles% или %ProgramFiles(x86)%.) Все пользователи могут получить доступ к файлам в этой папке.

CommonFilesFolder32-разрядной версии Windows. Значение свойства — это полный путь к папке Common Files для всех пользователей (например, %ProgramFiles%\Common Files).) Идентификатор этой папки — FOLDERID_ProgramFilesCommon (CSIDL_PROGRAM_FILES_COMMON.) Идентификаторы FOLDERID_ProgramFilesCommon и FOLDERID_ProgramFilesCommonX86 представляют одну и ту же папку. Все пользователи могут получить доступ к файлам в этой папке.
64-разрядная версия Windows: Значение свойства — это полный путь к папке Common Files для всех пользователей (например, %ProgramFiles(x86)%\Common Files.) Идентификатор этой папки — FOLDERID_ProgramFilesCommonX86 (CSIDL_PROGRAM_FILES_COMMONX86.) Все пользователи могут получить доступ к файлам в этой папке.
CommonFilesFolderWindows Server 2008 R2 и Windows 7: значение свойства — это полный путь к папке Common для текущего пользователя (например, %LocalAppData%\Programs\Common).) Идентификатор этой папки FOLDERID_UserProgramFilesCommon в 32- и 64-разрядной системах. Эквивалентный идентификатор CSIDL для FOLDERID_UserProgramFilesCommon отсутствует. Доступ к файлам в этой папке может получить только пользователь, установив эту папку.
Windows Server 2008 и более ранних версий, а также Windows Vista и более ранних версий: Папка с поддержкой каждого пользователя недоступна. Путь совпадает с контекстом для каждого компьютера (например, %ProgramFiles%\Common Files или %ProgramFiles(x86)%\Common Files.) Все пользователи могут получить доступ к файлам в этой папке.

ProgramFiles64Folder Значение свойства — это полный путь к папке Program Files для всех пользователей (например, %ProgramFiles%.) Идентификатор этой папки — FOLDERID_ProgramFilesX64. Эквивалентный идентификатор CSIDL для FOLDERID_ProgramFilesX64 отсутствует. Это предварительно определенная папка для 64-разрядных компонентов и применяется к 64-разрядным системам. Все пользователи могут получить доступ к файлам в этой папке.
ProgramFiles64FolderWindows Server 2008 R2 и Windows 7. Значение свойства — это полный путь к папке Programs для текущего пользователя (например, %LocalAppData%\Programs). Идентификатор этой папки — FOLDERID_UserProgramFiles. Эквивалентный идентификатор CSIDL для FOLDERID_UserProgramFiles отсутствует. Доступ к файлам в этой папке может получить только пользователь, установив эту папку.
Windows Server 2008 и более ранних версий, а также Windows Vista и более ранних версий: Папка с поддержкой каждого пользователя недоступна. Путь совпадает с контекстом для каждого компьютера (например, %ProgramFiles%.) Все пользователи могут получить доступ к файлам в этой папке.

CommonFiles64Folder Значение свойства — это полный путь к папке Common Files для всех пользователей (например, %ProgramFiles%\Common Files). Это предварительно определенная папка для 64-разрядных компонентов и применяется к 64-разрядным системам. Идентификатор этой папки — FOLDERID_ProgramFilesCommonX64. Эквивалентный идентификатор CSIDL для FOLDERID_ProgramFilesCommonX64 отсутствует. Все пользователи могут получить доступ к файлам в этой папке.
CommonFiles64FolderWindows Server 2008 R2 и Windows 7. Значение свойства — это полный путь к папке Common для текущего пользователя (например, %LocalAppData%\Programs\Common).) Идентификатор этой папки — FOLDERID_UserProgramFilesCommon. Эквивалентный идентификатор CSIDL для FOLDERID_UserProgramFilesCommon отсутствует. Доступ к файлам в этой папке может получить только пользователь, установив эту папку.
Windows Server 2008 и более ранних версий, а также Windows Vista и более ранних версий: Папка с поддержкой каждого пользователя недоступна. Путь совпадает с контекстом для каждого компьютера (например, %ProgramFiles%\Common Files). Все пользователи могут получить доступ к файлам в этой папке.

WindowsFolder Полный путь к папке Windows.
FOLDERID_Windows (CSIDL_WINDOWS)
WindowsFolder Полный путь к папке Windows.
FOLDERID_Windows (CSIDL_WINDOWS)
SystemFolder Полный путь к папке System.
FOLDERID_SystemX86 (CSIDL_SYSTEMX86)
SystemFolder Полный путь к папке System.
FOLDERID_SystemX86 (CSIDL_SYSTEMX86)
LocalAppDataFolder Полный путь к папке, содержащей локальные (некормированные) приложения.
FOLDERID_LocalAppData (CSIDL_LOCAL_APPDATA)
LocalAppDataFolder Полный путь к папке, содержащей локальные (некормированные) приложения.
FOLDERID_LocalAppData (CSIDL_LOCAL_APPDATA)
MyPicturesFolder Полный путь к папке "Изображения" или "Мои рисунки".
FOLDERID_Pictures (CSIDL_MYPICTURES)
MyPicturesFolder Полный путь к папке "Изображения" или "Мои рисунки".
FOLDERID_Pictures (CSIDL_MYPICTURES)
PrintHoodFolder Полный путь к папке PrintHood.
FOLDERID_PrintHood (CSIDL_PRINTHOOD)
PrintHoodFolder Полный путь к папке PrintHood.
FOLDERID_PrintHood (CSIDL_PRINTHOOD)
NetHoodFolder Полный путь к папке NetHood.
FOLDERID_NetHood (CSIDL_NETHOOD)
NetHoodFolder Полный путь к папке NetHood.
FOLDERID_NetHood (CSIDL_NETHOOD)
RecentFolder Полный путь к папке Recent.
FOLDERID_Recent (CSIDL_RECENT)
RecentFolder Полный путь к папке Recent.
FOLDERID_Recent (CSIDL_RECENT)

 

Примечание

Приложение может вызывать функции MsiEnumProducts или MsiEnumProductsEx для перечисления всех продуктов, установленных в системе. Затем приложение может получить сведения о контексте установки этих продуктов, вызвав функции MsiGetProductInfoEx или MsiGetProductInfo . Дополнительные сведения см. в разделе Определение контекста установки.