Delen via


Afzonderlijk pakketontwerp

Een pakket voor twee doeleinden is een Windows Installer 5.0-pakket dat is gemaakt om een toepassing te kunnen installeren in de installatiecontext voor per gebruiker of per machine . Installatieontwikkelaars die gebruikmaken van een pakket voor twee doeleinden voor hun toepassing, kunnen hun gebruikers een keuze maken uit de installatiecontext tijdens de installatie en UAC-referentieprompts verwijderen uit installaties per gebruiker in Windows 7 of Windows Server 2008 R2. De ontwikkeling van een Windows Installer 5.0-pakket voor twee doeleinden voor installatie op Windows 7 en Windows Server 2008 R2 wordt ook wel creatie van één pakket genoemd.

U kunt pakketten voor twee doeleinden ontwikkelen voor Windows 7 en Windows Server 2008 R2 met behulp van Windows Installer 5.0, de eigenschap MSIINSTALLPERUSER, de eigenschap ALLUSERS en de door de gebruiker geschikte mappen en registraties van de Windows Shell. Wanneer Windows Installer 5.0 een pakket voor twee doeleinden installeert in de context per gebruiker in Windows 7 of Windows Server 2008 R2, stuurt het installatieprogramma bestand en registervermeldingen naar locaties per gebruiker en geeft geen UAC-prompts voor referenties weer. Wanneer Windows Installer 5.0 een pakket voor twee doeleinden installeert in de context per computer, stuurt het installatieprogramma bestanden en registervermeldingen naar locaties per computer en vraagt om UAC-referenties om te bevestigen dat de gebruiker voldoende bevoegdheden heeft om software te installeren voor alle gebruikers van de computer. Zodra Windows Installer 5.0 een toepassing installeert, wordt dezelfde installatiecontext gebruikt voor alle volgende updates, reparaties of verwijdering van de toepassing.

Windows Installer 4.5 of eerder: de eigenschap MSIINSTALLPERUSER en de versies per gebruiker van mappen waarnaar wordt verwezen door de eigenschappen ProgramFilesFolder, CommonFilesFolder, ProgramFiles64Folderen CommonFiles64Folder worden niet ondersteund. De mappen FOLDERID_UserProgramFiles en FOLDERID_UserProgramFilesCommon zijn beschikbaar vanaf Windows 7 en Windows Server 2008 R2. Dit betekent installaties die zijn ontwikkeld voor Windows Installer 4.5 of eerdere directe bestanden en registervermeldingen naar FOLDERID_ProgramFiles, FOLDERID_ProgramFilesCommon, FOLDERID_ProgramFilesX64 en FOLDERID_ProgramFilesCommonX64. Omdat dit locaties zijn die toegankelijk zijn voor andere gebruikers van de computer, vereisen Windows Vista- en latere systemen de weergave van UAC-prompts voor referenties.

Wanneer een gebruiker een dubbel doelpakket installeert dat is gemaakt voor Windows Installer 5.0 met Windows Installer 4.5 of eerder, negeert het installatieprogramma de eigenschap MSIINSTALLPERUSER. In dit geval kan de installatie bestanden en registervermeldingen doorsturen naar locaties die toegankelijk zijn voor andere gebruikers en moet het systeem UAC-prompts voor referenties weergeven. Windows Installer 5.0 kan een pakket installeren dat is ontwikkeld voor Windows Installer 4.5 of eerder, maar de installatie stuurt bestanden en registervermeldingen naar locaties die toegankelijk zijn voor andere gebruikers en vereist dat het systeem UAC-prompts voor referenties weergeeft.

Ontwikkelingsrichtlijnen

Volg de volgende ontwerprichtlijnen voor één pakket om ervoor te zorgen dat het pakket kan worden geïnstalleerd in de context per gebruiker of per machine. Volg deze richtlijnen om de gebruiker in staat te stellen tijdens de installatie een installatie per gebruiker of per machine te kiezen en UAC-prompts te verwijderen uit installaties per gebruiker.

  • Installatie per gebruiker vereist Windows Installer 5.0 op Windows 7 of Windows Server 2008 R2. U moet de gebruiker informeren dat het pakket ondersteuning biedt voor installatie per machine van de toepassing op eerdere versies van het systeem.

  • Initialiseer de waarden voor de ALLUSERS en MSIINSTALLPERUSER eigenschappen in de eigenschapstabel van uw pakket met twee doeleinden. Gebruik een ALLUSERS waarde van 2 en een MSIINSTALLPERUSER waarde van 1 als de initiële waarden. Hiermee geeft u de installatie per gebruiker op als de standaardinstelling voor het pakket voor twee doeleinden.

  • U kunt een dialoogvenster maken voor de gebruikersinterface van uw pakket voor twee doeleinden waarmee de gebruiker de context tijdens de installatie kan kiezen. Bewerk de besturingselementen in dit aangepaste dialoogvenster om de waarden van de ALLUSERS en MSIINSTALLPERUSER eigenschappen in te stellen. Voor de ALLUSERS waarde 2 stelt u MSIINSTALLPERUSER- in op de waarde 1 om een installatie per gebruiker op te geven en MSIINSTALLPERUSER in te stellen op een lege tekenreeks ("") om een installatie per machine op te geven. Gebruikers kunnen ook de ALLUSERS en MSIINSTALLPERUSER instellen op de opdrachtregel als ze het pakket vanaf de opdrachtregel installeren.

  • Valideer het pakket met behulp van Interne consistentie-evaluators - IDE's. Het pakket moet door de validatie van ICE105 komen om een geldige dubbeldoelverpakking te zijn.

  • Gebruik de Registertabel en RemoveRegistry Table om registervermeldingen om te leiden naar de onderdelen per gebruiker van het register tijdens installaties per gebruiker. In een installatie per gebruiker worden registervermeldingen met -1 in de hoofdkolom omgeleid naar HKEY_CURRENT_USERen in een installatie per machine worden deze omgeleid naar HKEY_LOCAL_MACHINE. In een installatie per gebruiker worden registervermeldingen met msidbRegistryRootClassesRoot (0) in de hoofdkolom omgeleid naar HKCU\Software\Klassen, en in een installatie per machine worden deze omgeleid naar HKLM\Software\Klassen.

  • Gebruik de eigenschap ProgramFilesFolder in de tabel Directory van 32-bits Windows Installer-pakketten om de locaties van mappen met 32-bits onderdelen op te geven die niet worden gedeeld in toepassingen. Wanneer een gebruiker het pakket voor twee doeleinden installeert met behulp van de context per computer, worden deze onderdelen opgeslagen in de map Program Files op 32-bits versies van Windows en in de map Program Files (x86) op 64-bits versies van het systeem. De onderdelen in deze mappen zijn toegankelijk voor alle gebruikers. Wanneer een gebruiker het pakket voor twee doeleinden installeert in Windows 7 of Windows Server 2008 R2 met behulp van de context per gebruiker, worden deze onderdelen opgeslagen in de map Programma's van de huidige gebruiker (bijvoorbeeld op %LocalAppData%\Programs) en kunnen ze alleen worden geopend door die gebruiker.

  • Gebruik de eigenschap CommonFilesFolder in de tabel Directory van 32-bits Windows Installer-pakketten om de locaties op te geven van mappen met 32-bits onderdelen die worden gedeeld in toepassingen. Wanneer een gebruiker het pakket voor twee doeleinden installeert met behulp van de context per machine, worden deze onderdelen opgeslagen in de map Common Files en kunnen ze door alle gebruikers worden geopend. Wanneer een gebruiker het pakket voor twee doeleinden installeert in Windows 7 of Windows Server 2008 R2 met behulp van de context per gebruiker, worden deze onderdelen opgeslagen in de algemene map van de huidige gebruiker (bijvoorbeeld op %LocalAppData%\Programs\Common) en kunnen ze alleen worden geopend door die gebruiker.

  • Gebruik de eigenschap ProgramFiles64Folder in de Directory-tabel van 64-bits Windows Installer-pakketten om de locaties van mappen met 64-bits onderdelen op te geven die niet worden gedeeld in toepassingen. Wanneer een gebruiker het pakket voor twee doeleinden installeert met behulp van de context per machine, worden deze onderdelen opgeslagen in de map Program Files. De onderdelen in deze mappen zijn toegankelijk voor alle gebruikers. Wanneer een gebruiker het pakket voor twee doeleinden installeert in Windows 7 of Windows Server 2008 R2 met behulp van de context per gebruiker, worden deze onderdelen opgeslagen in de map Programma's van de huidige gebruiker (bijvoorbeeld op %LocalAppData%\Programs) en kunnen ze alleen worden geopend door die gebruiker. Zie voor meer informatie over het ontwerpen van een pakket voor het installeren van een toepassing op 64-bits besturingssystemen Windows Installer op 64-bits besturingssystemen.

  • Gebruik de eigenschap CommonFiles64Folder in de tabel Directory van 64-bits Windows Installer-pakketten om de locaties op te geven van mappen met 64-bits onderdelen die worden gedeeld in toepassingen. Wanneer een gebruiker het pakket voor twee doeleinden installeert met behulp van de context per machine, worden deze onderdelen opgeslagen in de map Common Files en kunnen ze door alle gebruikers worden geopend. Wanneer een gebruiker het pakket voor twee doeleinden installeert in Windows 7 of Windows Server 2008 R2 met behulp van de context per gebruiker, worden deze onderdelen opgeslagen in de algemene map van de huidige gebruiker (bijvoorbeeld op %LocalAppData%\Programs\Common) en kunnen ze alleen worden geopend door die gebruiker.

  • Gebruik de eigenschappen ProgramFilesFolder en CommonFilesFolder in de Directory-tabel van 64-bits Windows Installer-pakketten om de locatie van mappen met 32-bits onderdelen op te geven. Gebruik verschillende namen voor de 32-bits en 64-bits versies van enige componenten die met dezelfde naam zijn voorzien, of sla de versies op in verschillende mappen. Voeg bijvoorbeeld informatie toe aan de maptabel om de locatie van de map met de 32-bits versie op te geven als [ProgramFilesFolder]\ISV-naam\toepassingsnaam\x86 en de locatie van de map met de 64-bits versie als [Program64FilesFolder]\ISV-naam\toepassingsnaam\x64. Een installatie per computer slaat vervolgens de 32-bits versie op in Program Files(x86)\ISV Name\Application Name\x86 en slaat de 64-bits versie op in Program Files\ISV Name\Application Name\x64. Een installatie per gebruiker slaat de 32-bits versie op in %LocalAppData%\Programs\ISV Name\Application Name\x86 en installeert de 64-bits versie in %LocalAppData%\Programs\ISV Name\Application Name\x64.

  • Sla configuratiegegevens per gebruiker op voor de toepassing onder \Users\gebruikersnaam\AppData.

  • Sla sjablonen en bestanden op die door de toepassing zijn gegenereerd in submappen onder \Users\gebruikersnaam.

  • Als uw toepassing shell-extensies gebruikt, moet u de uitbreidbaarheid per gebruiker shell-uitbreidbaarheid gebruiken punten die beschikbaar zijn vanaf Windows 7 of Windows Server 2008 R2.

  • Gebruik geen aangepaste acties in uw pakket waarvoor verhoogde bevoegdheden zijn vereist om uit te voeren. De tabel CustomAction mag geen aangepaste acties bevatten die zijn gemarkeerd voor uitvoering met verhoogde bevoegdheden. Zie Custom Action Securityvoor meer informatie over aangepaste acties met verhoogde bevoegdheden.

  • Schrijf niet in globale systeemmappen. De tabel Directory mag geen verwijzing bevatten naar een van de volgende eigenschappen van de systeemmap.

AdminToolsFolder-
CommonAppDataFolder
FontsFolder
System16Folder
System64Folder
SystemFolder
TempFolder
WindowsFolder
WindowsVolume

Voorbeeld

Een voorbeeld van een pakket met twee doeleinden wordt geleverd in de Windows SDK-onderdelen voor Windows Installer-ontwikkelaars als het bestand PUASample1.msi. Als u de huidige SDK hebt, hebt u toegang tot alle hulpprogramma's en gegevens die nodig zijn om het voorbeeldinstallatiepakket te reproduceren. Voor meer informatie over dit voorbeeld, zie Voorbeeld van het opstellen van een enkel pakket.