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 che configurano un pacchetto con doppia funzione per l'applicazione possono offrire agli utenti una scelta del contesto di installazione durante il processo di installazione e possono rimuovere le richieste di credenziali UAC dalle installazioni per utente su 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 duplice scopo per Windows 7 e Windows Server 2008 R2 utilizzando Windows Installer 5.0, la proprietà MSIINSTALLPERUSER, la proprietà ALLUSERS e le cartelle note e le registrazioni per utente della Shell di Windows . 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 i file e le voci del Registro di sistema verso percorsi specifici 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 singolo computer, il programma di installazione indirizza i file e le voci del Registro di sistema a percorsi per il singolo computer e richiede le credenziali di UAC per verificare che l'utente disponga di privilegi sufficienti per installare il software per tutti gli utenti del computer. Dopo che 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 fa riferimento il ProgramFilesFolder, CommonFilesFolder, ProgramFiles64Folder, e le proprietà 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, i sistemi Windows Vista e versioni successive 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ò inviare i file e le voci del Registro di sistema ai percorsi accessibili ad altri utenti e richiedere al sistema di visualizzare le richieste UAC 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
Attenersi alle 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. Utilizzare il valore ALLUSERS pari a 2 e il 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 il ALLUSERS e MSIINSTALLPERUSER nella riga di comando se installano il pacchetto dalla riga di comando.
Convalidare il pacchetto usando analizzatori di coerenza interna - ices. Il pacchetto deve essere in grado di superare la convalida da parte di ICE105 per essere un pacchetto valido a duplice scopo.
Utilizzare il tabella del Registro di sistema e RemoveRegistry Table 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_USERe 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 a HKCU\Software\Classese in un'installazione per computer, queste vengono indirizzate a HKLM\Software\Classes.
Utilizzare la proprietà ProgramFilesFolder nella tabella directory di 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. I componenti in queste directory possono essere accessibili 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 possono essere accessibili solo da tale utente.
Utilizzare la proprietà CommonFilesFolder nella tabella Directory di 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 ed è possibile accedervi 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 Comune dell'utente corrente (ad esempio in %LocalAppData%\Programs\Common) e possono essere accessibili solo da tale utente.
Utilizzare la proprietàProgramFiles64Foldernella tabella directory di pacchetti 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. I componenti in queste directory possono essere accessibili 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 possono essere 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 applicazioni. Quando un utente installa il pacchetto a doppio scopo usando il contesto per computer, questi componenti vengono salvati nella cartella File comuni ed è possibile accedervi 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 Comune dell'utente corrente (ad esempio in %LocalAppData%\Programs\Common) e possono essere accessibili solo da tale utente.
Utilizzare le proprietà ProgramFilesFolder e CommonFilesFolder nella tabella directory di 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]\nome ISV\nome applicazione\x86 e il percorso della directory contenente la versione a 64 bit come [Program64FilesFolder]\nome ISV\nome applicazione\x64. Un'installazione a livello di computer salva quindi la versione a 32 bit in File di Programmi(x86)\Nome ISV\Nome Applicazione\x86 e salva la versione a 64 bit in File di Programmi\Nome ISV\Nome Applicazione\x64. Un'installazione per utente salva la versione a 32 bit in %LocalAppData%\Programs\NOME ISV\nome applicazione\x86 e installa la versione a 64 bit in %LocalAppData%\Programs\NOME ISV\Nome applicazione\x64.
Archiviare i dati di configurazione per utente per l'applicazione in \Users\nome utente\AppData.
Archiviare modelli e file generati dall'applicazione nelle sottocartelle in \Users\nome utente.
Se la tua applicazione usa estensioni della shell, dovresti usare i punti di estendibilità della shell per gli utenti 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 cartelle di sistema globali. La tabella directory non deve contenere un riferimento a una delle proprietà della cartella di sistema seguenti.
CartellaStrumentiAmministrazione
commonAppDataFolder
FontsFolder
System16Folder
System64Folder
SystemFolder
TempFolder
WindowsFolder
WindowsVolume
- Non installare un assembly Common Language Runtime nella Global Assembly Cache (GAC). Per ulteriori informazioni sull'installazione di assembly nella Global Assembly Cache, vedere Aggiunta di assembly a un pacchetto e Installazione degli 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 nel 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.