Tworzenie pojedynczego pakietu
Pakiet dwufunkcyjny to pakiet Instalatora Windows 5.0, który został utworzony, aby móc zainstalować aplikację w kontekście instalacji dla poszczególnych użytkowników lub na maszynę kontekstu instalacji. Deweloperzy zajmujący się instalacją, którzy korzystają z pakietu dwufunkcyjnego dla aplikacji, mogą zapewnić użytkownikom wybór kontekstu instalacji, z której chcą korzystać podczas instalacji, oraz umożliwić usunięcie monitów dotyczących poświadczeń UAC przy instalacjach dokonanych przez poszczególnych użytkowników w systemie Windows 7 lub Windows Server 2008 R2. Opracowywanie pakietu Instalatora Windows 5.0 przeznaczonego do podwójnego przeznaczenia do instalacji w systemach Windows 7 i Windows Server 2008 R2 jest określane jako tworzenie pojedynczych pakietów.
Można rozpocząć tworzenie pakietów dwufunkcyjnych dla systemów Windows 7 i Windows Server 2008 R2 przy użyciu Instalatora Windows 5.0, właściwości MSIINSTALLPERUSER, właściwości ALLUSERS oraz znanych folderów i rejestracji powłoki systemu Windows . Gdy Instalator Windows 5.0 instaluje pakiet dwufunkcyjny w kontekście użytkownika w systemie Windows 7 lub Windows Server 2008 R2, instalator kieruje elementy plików i rejestru do lokalizacji użytkownika i nie wyświetla monitów UAC dotyczących poświadczeń. Gdy Instalator Windows 5.0 instaluje pakiet o podwójnym zastosowaniu w kontekście per-maszynowym, instalator kieruje pliki i wpisy rejestru do lokalizacji per-maszynowych oraz monituje o poświadczenia UAC, aby potwierdzić, że użytkownik ma wystarczające uprawnienia do zainstalowania oprogramowania dla wszystkich użytkowników komputera. Gdy Instalator Windows 5.0 zainstaluje aplikację, używa tego samego kontekstu instalacji dla wszystkich kolejnych aktualizacji, napraw lub usunięcia aplikacji.
Instalatora Windows 4.5 lub starszego: Właściwość MSIINSTALLPERUSER i wersje folderów per-użytkownik, do których odwołują się właściwości ProgramFilesFolder, CommonFilesFolder, ProgramFiles64Folderi CommonFiles64Folder, nie są obsługiwane. Foldery FOLDERID_UserProgramFiles i FOLDERID_UserProgramFilesCommon są dostępne począwszy od systemów Windows 7 i Windows Server 2008 R2. Oznacza to, że instalacje opracowane dla Instalatora Windows 4.5 lub starszego kierują pliki i wpisy rejestru do FOLDERID_ProgramFiles, FOLDERID_ProgramFilesCommon, FOLDERID_ProgramFilesX64 i FOLDERID_ProgramFilesCommonX64. Ponieważ są to lokalizacje dostępne dla innych użytkowników komputera, system Windows Vista i nowsze systemy wymagają wyświetlania monitów UAC do wprowadzenia poświadczeń.
Gdy użytkownik instaluje pakiet dwufunkcyjny utworzony dla Instalatora Windows 5.0 z Instalatorem Windows w wersji 4.5 lub starszej, instalator ignoruje właściwość MSIINSTALLPERUSER. W takim przypadku instalacja może kierować pliki i wpisy rejestru do lokalizacji dostępnych dla innych użytkowników. Może również wymagać od systemu wyświetlania monitów UAC o poświadczenia. Instalator Windows 5.0 może zainstalować pakiet, który został opracowany dla Instalatora Windows 4.5 lub starszego. Jednak instalacja kieruje pliki i wpisy rejestru do lokalizacji dostępnych dla innych użytkowników i wymaga, aby system wyświetlał monity UAC dla poświadczeń.
Wytyczne dotyczące programowania
Przestrzegaj poniższych wytycznych dotyczących tworzenia pojedynczych pakietów, aby upewnić się, że pakiet można zainstalować w kontekście poszczególnych użytkowników lub poszczególnych komputerów. Postępuj zgodnie z tymi wytycznymi, aby umożliwić użytkownikowi wybór typu instalacji: dla pojedynczego użytkownika lub dla wszystkich użytkowników na komputerze, oraz usunięcie monitów UAC z instalacji dla pojedynczego użytkownika.
Instalacja dla każdego użytkownika wymaga Instalatora Windows 5.0 na systemie Windows 7 lub Windows Server 2008 R2. Powinieneś poinformować użytkownika, że pakiet obsługuje instalację aplikacji na komputerze dla wcześniejszych wersji systemu.
Zainicjuj wartości dla właściwości ALLUSERS i MSIINSTALLPERUSER w tabeli właściwości pakietu o podwójnym zastosowaniu. Użyj wartości początkowych: ALLUSERS o wartości 2 i MSIINSTALLPERUSER o wartości 1. Określa to instalację dla poszczególnych użytkowników jako domyślną dla pakietu dwufunkcyjnego.
Rozważ utworzenie okna dialogowego dla interfejsu użytkownika pakietu dwufunkcyjnego, który umożliwia użytkownikowi wybranie kontekstu w czasie instalacji. Utwórz kontrolki w tym niestandardowym oknie dialogowym, aby ustawić wartości właściwości ALLUSERS i MSIINSTALLPERUSER. Dla wartości ALLUSERS ustaw na 2, aby określić instalację dla poszczególnych użytkowników, ustaw MSIINSTALLPERUSER na wartość 1, a dla instalacji na komputerze ustaw MSIINSTALLPERUSER na pusty ciąg (""). Użytkownicy mogą również ustawić ALLUSERS i MSIINSTALLPERUSER w wierszu polecenia, jeśli zainstalują pakiet z wiersza polecenia.
Zweryfikuj pakiet przy użyciu programu Internal Consistency Evaluators — ICEs. Aby być prawidłowym pakietem dwufunkcyjnym, pakiet musi przejść walidację ICE105.
Użyj tabeli rejestru Registry Table i RemoveRegistry Table, aby przekierować wpisy rejestru do części rejestru dla poszczególnych użytkowników podczas instalacji dla poszczególnych użytkowników. W instalacji per użytkownik wpisy rejestru, które mają -1 w kolumnie Root, są przekierowywane do HKEY_CURRENT_USER, a w instalacji per maszyna są one kierowane do HKEY_LOCAL_MACHINE. W instalacji dla każdego użytkownika wpisy rejestru, które mają msidbRegistryRootClassesRoot (0) w kolumnie Korzeń są przekierowywane do HKCU\Software\Classes, a w instalacji na poziomie maszyny, są one kierowane do HKLM\Software\Classes.
Użyj właściwości ProgramFilesFolder w tabeli Directory pakietów instalatora windows 32-bitowych, aby określić lokalizacje katalogów zawierających składniki 32-bitowe, które nie są współużytkowane przez aplikacje. Gdy użytkownik instaluje pakiet dwufunkcyjny przy użyciu kontekstu dla komputera, te składniki są zapisywane w folderze Program Files w 32-bitowych wersjach systemu Windows i w folderze Program Files (x86) w 64-bitowych wersjach systemu. Do składników w tych katalogach mogą uzyskiwać dostęp wszyscy użytkownicy. Gdy użytkownik instaluje pakiet dwufunkcyjny w systemie Windows 7 lub Windows Server 2008 R2 przy użyciu kontekstu użytkownika, te składniki są zapisywane w folderze Programy bieżącego użytkownika (na przykład w %LocalAppData%\Programs) i mogą być dostępne tylko przez tego użytkownika.
Użyj właściwości CommonFilesFolder w tabeli Directory pakietów instalatora Windows 32-bitowych, aby określić lokalizacje katalogów zawierających wspólne składniki 32-bitowe między aplikacjami. Gdy użytkownik instaluje pakiet dwufunkcyjny przy użyciu kontekstu dla komputera, te składniki są zapisywane w folderze Common Files i mogą być dostępne dla wszystkich użytkowników. Gdy użytkownik instaluje pakiet dwufunkcyjny w systemie Windows 7 lub Windows Server 2008 R2 przy użyciu kontekstu użytkownika, te składniki są zapisywane w folderze Common bieżącego użytkownika (na przykład w %LocalAppData%\Programs\Common) i mogą być dostępne tylko przez tego użytkownika.
Użyj właściwości ProgramFiles64Folder w tabeli Directory pakietów instalatora windows 64-bitowych, aby określić lokalizacje katalogów zawierających składniki 64-bitowe, które nie są współużytkowane przez aplikacje. Gdy użytkownik zainstaluje pakiet dwufunkcyjny przy użyciu kontekstu dla komputera, te składniki są zapisywane w folderze Program Files. Do składników w tych katalogach mogą uzyskiwać dostęp wszyscy użytkownicy. Gdy użytkownik instaluje pakiet dwufunkcyjny w systemie Windows 7 lub Windows Server 2008 R2 przy użyciu kontekstu użytkownika, te składniki są zapisywane w folderze Programy bieżącego użytkownika (na przykład w %LocalAppData%\Programs) i mogą być dostępne tylko przez tego użytkownika. Aby uzyskać więcej informacji na temat tworzenia pakietu w celu zainstalowania aplikacji w 64-bitowych systemach operacyjnych, zobacz Instalator Windows w 64-bitowych systemach operacyjnych.
Użyj właściwości CommonFiles64Folder w tabeli Directory pakietów Instalatora Windows 64-bitowych, aby określić lokalizacje katalogów zawierających składniki 64-bitowe współużytkowane przez aplikacje. Gdy użytkownik instaluje pakiet dwufunkcyjny przy użyciu kontekstu dla komputera, te składniki są zapisywane w folderze Common Files i mogą być dostępne dla wszystkich użytkowników. Gdy użytkownik instaluje pakiet dwufunkcyjny w systemie Windows 7 lub Windows Server 2008 R2 przy użyciu kontekstu użytkownika, te składniki są zapisywane w folderze Common bieżącego użytkownika (na przykład w %LocalAppData%\Programs\Common) i mogą być dostępne tylko przez tego użytkownika.
Użyj właściwości ProgramFilesFolder i CommonFilesFolder w tabeli Directory pakietów instalatora windows 64-bitowych, aby określić lokalizację katalogów zawierających składniki 32-bitowe. Użyj różnych nazw dla 32-bitowych i 64-bitowych wersji wszystkich składników o tej samej nazwie lub alternatywnie zapisz wersje w różnych folderach. Na przykład dodaj informacje do tabeli Katalog, aby określić lokalizację katalogu zawierającego 32-bitową wersję jako [ProgramFilesFolder]\nazwa niezależnego dostawcy oprogramowania\nazwa aplikacji\x86 i lokalizację katalogu zawierającego 64-bitową wersję jako [Program64FilesFolder]\nazwa niezależnego dostawcy oprogramowania\nazwa aplikacji\x64. Instalacja na maszynę zapisuje 32-bitową wersję w Program Files (x86)\Nazwa Niezależnego Dostawcy Oprogramowania\Nazwa Aplikacji\x86 i zapisuje 64-bitową wersję w Program Files\Nazwa Niezależnego Dostawcy Oprogramowania\Nazwa Aplikacji\x64. Instalacja na użytkownika zapisuje 32-bitową wersję w %LocalAppData%\Programs\nazwa ISV\nazwa aplikacji\x86 i instaluje 64-bitową wersję w %LocalAppData%\Programs\nazwa ISV\nazwa aplikacji\x64.
Przechowuj dane konfiguracji poszczególnych użytkowników dla aplikacji w obszarze \Users\nazwa użytkownika\AppData.
Przechowuj szablony i pliki generowane przez aplikację w podfolderach w obszarze \Users\nazwa użytkownika.
Jeśli aplikacja używa rozszerzeń powłoki, należy użyć rozszerzalnych punktów rozszerzeń powłoki z obsługą poszczególnych użytkowników , które są dostępne począwszy od systemu Windows 7 lub Windows Server 2008 R2.
Nie używaj akcji niestandardowych w pakiecie, które wymagają podwyższonego poziomu uprawnień do uruchomienia. Tabela CustomAction nie powinna zawierać żadnych akcji niestandardowych, które zostały oznaczone do uruchomienia z podwyższonym poziomem uprawnień. Aby uzyskać więcej informacji na temat akcji niestandardowych z podwyższonymi uprawnieniami, zobacz Custom Action Security.
Nie zapisuj w żadnych globalnych folderach systemowych. Tabela Directory nie powinna zawierać odwołania do żadnej z następujących właściwości folderu systemowego.
AdminToolsFolder
CommonAppDataFolder
Folder czcionek
System16Folder
System64Folder
Folder systemowy
FolderTymczasowy
WindowsFolder
WindowsVolume
- Nie instaluj zestawu środowiska uruchomieniowego języka wspólnego w globalnej pamięci podręcznej zestawów (GAC). Aby uzyskać więcej informacji na temat instalowania zestawów w globalnej pamięci podręcznej zestawów, zobacz Dodawanie zestawów do pakietu i instalacja zestawów środowiska uruchomieniowego języka wspólnego.
- Nie instaluj żadnych źródeł danych ODBC. Nie używaj tabeli ODBCDataSource do zainstalowania źródła danych.
- Nie instaluj żadnych usług. Nie używaj tabeli ServiceInstall do zainstalowania usługi.
Przykład
Przykład pakietu dwufunkcyjnego znajduje się w Komponenty pakietu Windows SDK dla deweloperów Instalatora Windows jako plik PUASample1.msi. Jeśli masz bieżący zestaw SDK, masz dostęp do wszystkich narzędzi i danych niezbędnych do odtworzenia przykładowego pakietu instalacyjnego. Aby uzyskać więcej informacji na temat tego przykładu, zobacz przykład tworzenia pojedynczego pakietu.