Creazione di singoli pacchetti
Un pacchetto a doppio scopo è un pacchetto di Windows Installer 5.0 creato per poter installare un'applicazione nel contesto di installazione per utente o per computer. Gli sviluppatori di installazione che usano un pacchetto a doppio scopo per l'applicazione possono fornire agli utenti una scelta di contesto di installazione in fase di installazione e possono rimuovere le richieste di credenziali di Controllo dell'account utente dalle installazioni per utente in Windows 7 o Windows Server 2008 R2. Lo sviluppo di un pacchetto Windows Installer 5.0 a doppio scopo per l'installazione in Windows 7 e Windows Server 2008 R2 viene definito creazione di singoli pacchetti.
È possibile iniziare a sviluppare pacchetti a doppio scopo per Windows 7 e Windows Server 2008 R2 usando Windows Installer 5.0, la proprietà MSIINSTALLPERUSER , la proprietà ALLUSERS e le cartelle note e le registrazioni note che supportano l'utente di Windows Shell. Quando Windows Installer 5.0 installa un pacchetto a doppio scopo nel contesto per utente in Windows 7 o Windows Server 2008 R2, il programma di installazione indirizza le voci del file e del Registro di sistema in percorsi per utente e non visualizza le richieste di controllo dell'account utente per le credenziali. Quando Windows Installer 5.0 installa un pacchetto a doppio scopo nel contesto per computer, il programma di installazione indirizza i file e le voci del Registro di sistema a percorsi per computer e richiede le credenziali di Controllo dell'account utente per confermare che l'utente dispone di privilegi sufficienti per installare il software per tutti gli utenti del computer. Quando Windows Installer 5.0 installa un'applicazione, usa lo stesso contesto di installazione per tutti gli aggiornamenti, le riparazioni o la rimozione successivi dell'applicazione.
Windows Installer 4.5 o versioni precedenti: la proprietà MSIINSTALLPERUSER e le versioni per utente delle cartelle a cui fanno riferimento le proprietà ProgramFilesFolder, CommonFilesFolder, ProgramFiles64Folder e CommonFiles64Folder non sono supportate. Le cartelle FOLDERID_UserProgramFiles e FOLDERID_UserProgramFilesCommon sono disponibili a partire da Windows 7 e Windows Server 2008 R2. Ciò significa che le installazioni sviluppate per Windows Installer 4.5 o versioni precedenti indirizzano file e voci del Registro di sistema per FOLDERID_ProgramFiles, FOLDERID_ProgramFilesCommon, FOLDERID_ProgramFilesX64 e FOLDERID_ProgramFilesCommonX64. Poiché si tratta di posizioni accessibili ad altri utenti del computer, Windows Vista e sistemi successivi richiedono la visualizzazione delle richieste di controllo dell'account utente per le credenziali.
Quando un utente installa un pacchetto a doppio scopo creato per Windows Installer 5.0 con Windows Installer 4.5 o versioni precedenti, il programma di installazione ignora la proprietà MSIINSTALLPERUSER . In questo caso, l'installazione può indirizzare file e voci del Registro di sistema ai percorsi accessibili ad altri utenti e richiedere al sistema di visualizzare le richieste di controllo dell'account utente per le credenziali. Windows Installer 5.0 può installare un pacchetto sviluppato per Windows Installer 4.5 o versioni precedenti, tuttavia, l'installazione indirizza i file e le voci del Registro di sistema ai percorsi accessibili ad altri utenti e richiede al sistema di visualizzare le richieste di controllo dell'account utente per le credenziali.
Linee guida per lo sviluppo
Rispettare le seguenti linee guida per la creazione di pacchetti singoli per assicurarsi che il pacchetto possa essere installato nel contesto per utente o per computer. Seguire queste linee guida per consentire all'utente di scegliere in fase di installazione un'installazione per utente o per computer e rimuovere le richieste di controllo dell'account utente dalle installazioni per utente.
L'installazione per utente richiede Windows Installer 5.0 in Windows 7 o Windows Server 2008 R2. È necessario informare l'utente che il pacchetto supporta l'installazione per computer dell'applicazione nelle versioni precedenti del sistema.
Inizializzare i valori per le proprietà ALLUSERS e MSIINSTALLPERUSER nella tabella delle proprietà del pacchetto a doppio scopo. Usare il valore ALLUSERS 2 e un valore MSIINSTALLPERUSER pari a 1 come valori iniziali. Specifica l'installazione per utente come impostazione predefinita per il pacchetto a doppio scopo.
Prendere in considerazione la creazione di una finestra di dialogo per l'interfaccia utente del pacchetto a doppio scopo che consente all'utente di scegliere il contesto in fase di installazione. Creare i controlli in questa finestra di dialogo personalizzata per impostare i valori delle proprietà ALLUSERS e MSIINSTALLPERUSER . Per il valore ALLUSERS pari a 2, impostare MSIINSTALLPERUSER su un valore pari a 1 per specificare un'installazione per utente e impostare MSIINSTALLPERUSER su una stringa vuota ("") per specificare un'installazione per computer. Gli utenti possono anche impostare ALLUSERS e MSIINSTALLPERUSER nella riga di comando se installano il pacchetto dalla riga di comando.
Convalidare il pacchetto usando gli analizzatori di coerenza interna - ICEs. Il pacchetto deve essere in grado di superare la convalida da ICE105 per essere un pacchetto a doppio scopo valido.
Utilizzare la tabella del Registro di sistema e la tabella RemoveRegistry per reindirizzare le voci del Registro di sistema alle parti per utente del Registro di sistema durante le installazioni per utente. In un'installazione per utente le voci del Registro di sistema con -1 nella colonna Radice vengono reindirizzate a HKEY_CURRENT_USER e in un'installazione per computer vengono indirizzate a HKEY_LOCAL_MACHINE. In un'installazione per utente le voci del Registro di sistema con msidbRegistryRootClassesRoot (0) nella colonna Radice vengono reindirizzate alleclassisoftware\HKCU\ e, in un'installazione per computer, queste vengono indirizzate alleclassisoftware\HKLM\.
Utilizzare la proprietà ProgramFilesFolder nella tabella Directory dei pacchetti windows Installer a 32 bit per specificare i percorsi delle directory contenenti componenti a 32 bit non condivisi tra le applicazioni. Quando un utente installa il pacchetto a doppio scopo usando il contesto per computer, questi componenti vengono salvati nella cartella Programmi nelle versioni a 32 bit di Windows e nella cartella Programmi (x86) nelle versioni a 64 bit del sistema. È possibile accedere ai componenti in queste directory da tutti gli utenti. Quando un utente installa il pacchetto a doppio scopo in Windows 7 o Windows Server 2008 R2 usando il contesto per utente, questi componenti vengono salvati nella cartella Programmi dell'utente corrente (ad esempio in %LocalAppData%\Programmi) e sono accessibili solo da tale utente.
Utilizzare la proprietà CommonFilesFolder nella tabella Directory dei pacchetti di Windows Installer a 32 bit per specificare i percorsi delle directory contenenti componenti a 32 bit condivisi tra le applicazioni. Quando un utente installa il pacchetto a doppio scopo usando il contesto per computer, questi componenti vengono salvati nella cartella File comuni e sono accessibili a tutti gli utenti. Quando un utente installa il pacchetto a doppio scopo in Windows 7 o Windows Server 2008 R2 usando il contesto per utente, questi componenti vengono salvati nella cartella Comune dell'utente corrente ,ad esempio in %LocalAppData%\Programmi\Common) e sono accessibili solo da tale utente.
Utilizzare la proprietà ProgramFiles64Folder nella tabella Directory dei pacchetti di Windows Installer a 64 bit per specificare i percorsi delle directory contenenti componenti a 64 bit non condivisi tra le applicazioni. Quando un utente installa il pacchetto a doppio scopo usando il contesto per computer, questi componenti vengono salvati nella cartella Programmi. È possibile accedere ai componenti in queste directory da tutti gli utenti. Quando un utente installa il pacchetto a doppio scopo in Windows 7 o Windows Server 2008 R2 usando il contesto per utente, questi componenti vengono salvati nella cartella Programmi dell'utente corrente (ad esempio in %LocalAppData%\Programmi) e sono accessibili solo da tale utente. Per altre informazioni sulla creazione di un pacchetto per installare un'applicazione nei sistemi operativi a 64 bit, vedere Windows Installer nei sistemi operativi a 64 bit.
Utilizzare la proprietà CommonFiles64Folder nella tabella Directory dei pacchetti windows Installer a 64 bit per specificare i percorsi delle directory contenenti componenti a 64 bit condivisi tra le applicazioni. Quando un utente installa il pacchetto a doppio scopo usando il contesto per computer, questi componenti vengono salvati nella cartella File comuni e sono accessibili a tutti gli utenti. Quando un utente installa il pacchetto a doppio scopo in Windows 7 o Windows Server 2008 R2 usando il contesto per utente, questi componenti vengono salvati nella cartella Comune dell'utente corrente ,ad esempio in %LocalAppData%\Programmi\Common) e sono accessibili solo da tale utente.
Utilizzare le proprietà ProgramFilesFolder e CommonFilesFolder nella tabella Directory dei pacchetti windows Installer a 64 bit per specificare il percorso delle directory contenenti componenti a 32 bit. Usare nomi diversi per le versioni a 32 bit e a 64 bit di tutti i componenti forniti con lo stesso nome o, in alternativa, salvare le versioni in cartelle diverse. Ad esempio, aggiungere informazioni alla tabella Directory per specificare il percorso della directory contenente la versione a 32 bit come [ProgramFilesFolder]\ISV Name\Application Name\x86 e il percorso della directory contenente la versione a 64 bit come [Program64FilesFolder]\ISV Name\Application Name\x64. Un'installazione per computer salva quindi la versione a 32 bit in Programmi(x86)\ISV NameApplication Name\\x86 e salva la versione a 64 bit in Program Files\ISV NameApplication Name\\x64. Un'installazione per utente salva la versione a 32 bit in %LocalAppData%\Programs\ISV NameApplication Name\\x86 e installa la versione a 64 bit in %LocalAppData%\Programs\ISV NameApplication Name\\x64.
Archiviare i dati di configurazione per utente per l'applicazione in \Users\username\AppData.
Archiviare modelli e file generati dall'applicazione nelle sottocartelle in \Users\username.
Se l'applicazione usa le estensioni della shell, è consigliabile usare i punti di estendibilità della shell per utente disponibili a partire da Windows 7 o Windows Server 2008 R2.
Non usare azioni personalizzate nel pacchetto che richiedono privilegi elevati per l'esecuzione. La tabella CustomAction non deve contenere azioni personalizzate contrassegnate per l'esecuzione con privilegi elevati. Per altre informazioni sulle azioni personalizzate con privilegi elevati, vedere Sicurezza delle azioni personalizzate.
Non scrivere in alcuna cartella di sistema globale. La tabella Directory non deve contenere un riferimento a una delle proprietà della cartella di sistema seguenti.
AdminToolsFolder
CommonAppDataFolder
FontsFolder
System16Folder
System64Folder
SystemFolder
TempFolder
WindowsFolder
WindowsVolume
- Non installare un assembly Common Language Runtime nella Global Assembly Cache (GAC). Per altre informazioni sull'installazione di assembly nella Global Assembly Cache, vedere Aggiunta di assembly a un pacchetto e installazione di assembly Common Language Runtime.
- Non installare origini dati ODBC. Non utilizzare la tabella ODBCDataSource per installare un'origine dati.
- Non installare alcun servizio. Non usare la tabella ServiceInstall per installare un servizio.
Esempio
Un esempio di pacchetto a doppio scopo viene fornito nei componenti di Windows SDK per sviluppatori di Windows Installer come file PUASample1.msi. Se si dispone dell'SDK corrente, è possibile accedere a tutti gli strumenti e i dati necessari per riprodurre il pacchetto di installazione di esempio. Per altre informazioni su questo esempio, vedere Esempio di creazione di pacchetti singoli.