Контекст установки
Установщик 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 . Дополнительные сведения см. в разделе Определение контекста установки.