Redigering av enkla paket
Ett paket med dubbla syften är ett Windows Installer 5.0-paket som har skapats för att kunna installera ett program i installationskontexten per användare eller per dator . Installationsutvecklare som använder ett paket med dubbla syften för sina program kan ge sina användare ett val av installationskontext vid installationen och kan ta bort UAC-autentiseringsmeddelanden från installationer per användare på Windows 7 eller Windows Server 2008 R2. Utvecklingen av ett Windows Installer 5.0-paket med dubbla syften för installation på Windows 7 och Windows Server 2008 R2 kallas redigering av enskilda paket.
Du kan börja utveckla tvåändamålspaket för Windows 7 och Windows Server 2008 R2 med hjälp av Windows Installer 5.0, egenskapen MSIINSTALLPERUSER, egenskapen ALLUSERS och kända mappar och registreringar som är användarspecifika för Windows Shell. När Windows Installer 5.0 installerar ett paket med dubbla syften i kontexten per användare på Windows 7 eller Windows Server 2008 R2 dirigerar installationsprogrammet fil- och registerposter till platser per användare och visar inte UAC-uppmaningar om autentiseringsuppgifter. När Windows Installer 5.0 installerar ett paket med dubbla syften i kontexten per dator dirigerar installationsprogrammet filer och registerposter till platser per dator och uppmanar UAC-autentiseringsuppgifter att bekräfta att användaren har tillräcklig behörighet för att installera programvara för alla användare av datorn. När Windows Installer 5.0 har installerat ett program används samma installationskontext för alla efterföljande uppdateringar, reparationer eller borttagning av programmet.
Windows Installer 4.5 eller tidigare: egenskapen MSIINSTALLPERUSER och mappversioner per användare som refereras av ProgramFilesFolder, CommonFilesFolder, ProgramFiles64Folderoch CommonFiles64Folder-egenskaper stöds inte. Mapparna FOLDERID_UserProgramFiles och FOLDERID_UserProgramFilesCommon är tillgängliga från och med Windows 7 och Windows Server 2008 R2. Det innebär att installationer som utvecklats för Windows Installer 4.5 eller tidigare dirigerar filer och registerposter till FOLDERID_ProgramFiles, FOLDERID_ProgramFilesCommon, FOLDERID_ProgramFilesX64 och FOLDERID_ProgramFilesCommonX64. Eftersom det här är platser som är tillgängliga för andra användare av datorn kräver Windows Vista och senare system visning av UAC-prompter för autentiseringsuppgifter.
När en användare installerar ett paket med dubbla syften som skapats för Windows Installer 5.0 med Windows Installer 4.5 eller tidigare ignorerar installationsprogrammet egenskapen MSIINSTALLPERUSER. I det här fallet kan installationen dirigera filer och registerposter till platser som är tillgängliga för andra användare och kräva att systemet visar UAC-prompter för autentiseringsuppgifter. Windows Installer 5.0 kan installera ett paket som har utvecklats för Windows Installer 4.5 eller tidigare, men installationen dirigerar filer och registerposter till platser som är tillgängliga för andra användare och kräver att systemet visar UAC-prompter för autentiseringsuppgifter.
Riktlinjer för utveckling
Följ följande riktlinjer för redigering av enskilda paket för att säkerställa att paketet kan installeras i kontexten per användare eller per dator. Följ dessa riktlinjer för att göra det möjligt för användaren att vid installationen välja en installation per användare eller per dator och för att ta bort UAC-frågor från installationer per användare.
Installation per användare kräver Windows Installer 5.0 på Windows 7 eller Windows Server 2008 R2. Du bör informera användaren om att paketet stöder installation per dator av programmet på tidigare versioner av systemet.
Initiera värdena för egenskaperna ALLUSERS och MSIINSTALLPERUSER i -egenskapstabellen för ditt paket med dubbla syften. Använd ALLUSERS- värdet 2 och ett MSIINSTALLPERUSER värdet 1 som inledande värden. Detta anger installation per användare som standard för paketet med dubbla syften.
Överväg att redigera en dialogruta för användargränssnittet för ditt paket med dubbla syften som gör att användaren kan välja kontexten vid installationen. Redigera kontrollerna i den här anpassade dialogrutan för att ange värdena för egenskaperna ALLUSERS och MSIINSTALLPERUSER. För ALLUSERS värdet 2 anger du MSIINSTALLPERUSER till värdet 1 för att ange en installation per användare och ange MSIINSTALLPERUSER till en tom sträng ("") för att ange en installation per dator. Användare kan också ange ALLUSERS och MSIINSTALLPERUSER på kommandoraden om de installerar paketet från kommandoraden.
Verifiera paketet med hjälp av Interna Konsistensutvärderare (ICE). Paketet måste kunna godkännas av ICE105 för att vara ett giltigt paket med dubbla syften.
Använd Registry Table och RemoveRegistry Table för att omdirigera registerposter till registerdelarna per användare under installationer per användare. I en installation per användare omdirigeras registerposter som har -1 i rotkolumnen till HKEY_CURRENT_USER, och i en installation per dator dirigeras dessa till HKEY_LOCAL_MACHINE. I en installation per användare omdirigeras registerposter som har msidbRegistryRootClassesRoot (0) i rotkolumnen till HKCU\Software\-klasser, och i en installation per dator dirigeras dessa till HKLM\Software\-klasser.
Använd egenskapen ProgramFilesFolder i tabellen Directory för 32-bitars Windows Installer Packages för att ange platser för kataloger som innehåller 32-bitarskomponenter som inte delas mellan program. När en användare installerar paketet med dubbla syften med kontexten per dator sparas dessa komponenter i mappen Programfiler i 32-bitarsversioner av Windows och i mappen Programfiler (x86) på 64-bitarsversioner av systemet. Komponenterna i dessa kataloger kan nås av alla användare. När en användare installerar paketet med dubbla syften på Windows 7 eller Windows Server 2008 R2 med kontexten per användare sparas dessa komponenter i mappen Program för den aktuella användaren (till exempel på %LocalAppData%\Programs) och kan endast nås av den användaren.
Använd egenskapen CommonFilesFolder i tabellen Directory i 32-bitars Windows Installer Packages för att ange platser för kataloger som innehåller 32-bitarskomponenter som delas mellan program. När en användare installerar paketet med dubbla syften med kontexten per dator sparas dessa komponenter i mappen Common Files och kan nås av alla användare. När en användare installerar paketet med dubbla syften på Windows 7 eller Windows Server 2008 R2 med kontexten per användare sparas dessa komponenter i den aktuella användarens gemensamma mapp (till exempel på %LocalAppData%\Programs\Common) och kan endast nås av den användaren.
Använd egenskapen ProgramFiles64Folder i tabellen Directory av 64-bitars Windows Installer Packages för att ange platser för kataloger som innehåller 64-bitarskomponenter som inte delas mellan program. När en användare installerar paketet med dubbla syften med kontexten per dator sparas dessa komponenter i mappen Programfiler. Komponenterna i dessa kataloger kan nås av alla användare. När en användare installerar paketet med dubbla syften på Windows 7 eller Windows Server 2008 R2 med kontexten per användare sparas dessa komponenter i mappen Program för den aktuella användaren (till exempel på %LocalAppData%\Programs) och kan endast nås av den användaren. Mer information om hur du redigerar ett paket för att installera ett program på 64-bitars operativsystem finns i Windows Installer på 64-bitars operativsystem.
Använd egenskapen CommonFiles64Folder i tabellen Directory för 64-bitars Windows Installer Packages för att ange platser för kataloger som innehåller 64-bitarskomponenter som delas mellan program. När en användare installerar paketet med dubbla syften med kontexten per dator sparas dessa komponenter i mappen Common Files och kan nås av alla användare. När en användare installerar paketet med dubbla syften på Windows 7 eller Windows Server 2008 R2 med kontexten per användare sparas dessa komponenter i den aktuella användarens gemensamma mapp (till exempel på %LocalAppData%\Programs\Common) och kan endast nås av den användaren.
Använd egenskaperna ProgramFilesFolder och CommonFilesFolder i tabellen Directory för 64-bitars Windows Installer Packages för att ange platsen för kataloger som innehåller 32-bitarskomponenter. Använd olika namn för 32-bitars- och 64-bitarsversionerna av alla komponenter som har samma namn, eller spara versionerna i olika mappar. Lägg till exempel till information i tabellen Katalog för att ange platsen för katalogen som innehåller 32-bitarsversionen som [ProgramFilesFolder]\ISV-namn\programnamn\x86 och platsen för katalogen som innehåller 64-bitarsversionen som [Program64FilesFolder]\ISV-namn\programnamn\x64. En installation per dator sparar sedan 32-bitarsversionen i Program Files(x86)\ISV Name\Application Name\x86 och sparar 64-bitarsversionen i Program Files\ISV Name\Application Name\x64. En installation per användare sparar 32-bitarsversionen i %LocalAppData%\Programs\ISV Name\Application Name\x86 och installerar 64-bitarsversionen i %LocalAppData%\Programs\ISV Name\Application Name\x64.
Lagra konfigurationsdata per användare för programmet under \Users\användarnamn\AppData.
Lagra mallar och filer som genereras av programmet i undermappar under \Users\användarnamn.
Om ditt program använder skaltillägg bör du använda de per användare kapabla skaltilläggspunkterna som är tillgängliga från och med Windows 7 eller Windows Server 2008 R2.
Använd inte anpassade åtgärder i paketet som kräver utökade behörigheter för att köras. Tabellen CustomAction ska inte innehålla några anpassade åtgärder som har markerats för körning med förhöjd behörighet. Mer information om utökade anpassade åtgärder finns i Custom Action Security.
Skriv inte i några globala systemmappar. Tabellen Directory ska inte innehålla någon referens till någon av följande egenskaper för systemmappar.
Administrationsverktygsmapp
CommonAppDataFolder
FontsFolder
System16Folder
System64Folder
SystemFolder
TempFolder
WindowsFolder
WindowsVolume
- Installera inte en Common Language Runtime-sammansättning i den globala sammansättningscachen (GAC). Mer information om hur du installerar sammansättningar i den globala sammansättningscachen finns i Lägga till sammansättningar i ett paket och Installation av Common Language Runtime-sammansättningar.
- Installera inga ODBC-datakällor. Använd inte tabellen ODBCDataSource för att installera en datakälla.
- Installera inga tjänster. Använd inte tabellen ServiceInstall för att installera en tjänst.
Exempel
Ett exempel på ett paket med dubbla syften finns i Windows SDK-komponenter för Windows Installer Developers som filen PUASample1.msi. Om du har den aktuella SDK:en har du åtkomst till alla verktyg och data som krävs för att återskapa exempelinstallationspaketet. Mer information om det här exemplet finns i exempel på redigering av enkla paket.