Condividi tramite


Distribuzione di Windows Installer in Windows Vista

Aggiornamento: novembre 2007

La tecnologia Windows Installer supporta l'installazione di software nel sistema operativo Windows Vista. L'utente finale che installa applicazioni in Windows Vista riceve prompt solo per le installazioni di componenti che richiedono l'elevazione, anche quando il computer dell'utente è in esecuzione nel controllo dell'account utente (UAC, User Account Control). Per informazioni su come impostare il controllo dell'account utente, vedere Windows Vista e Visual Studio.

Elevazione delle applicazioni

In genere, Setup.exe (anche denominato programma di avvio automatico) non viene eseguito come elevato, ma al livello di autorizzazione dell'utente corrente. Pertanto, l'installazione non richiede l'elevazione al momento dell'avvio dell'installazione dell'applicazione finale. Tuttavia, un file con estensione msi generalmente informa l'utente, a differenza di Setup.exe.

Nel manifesto di controllodell'account utente incorporato del programma di avvio automatico, il nodo requestedExecutionLevel specifica che l'installazione viene eseguita come utente corrente (asInvoker):

<requestedExecutionLevel level="asInvoker" />

È tuttavia possibile elevare l'installazione dell'applicazione, se necessario. Ad esempio, la modifica delle impostazioni di Internet Information Services (IIS) in un progetto di installazione Web richiede privilegi amministrativi, analogamente all'installazione di assembly nella Global Assembly Cache. La richiesta di elevazione ha luogo dopo l'installazione dei prerequisiti, ma prima dell'installazione dell'applicazione.

Per elevare le autorizzazioni per un'installazione, aprire il file del progetto (vdproj). Nella sezione MsiBootstrapper del file del progetto, impostare la proprietà RequiresElevation su True. Questa proprietà non viene resa disponibile tramite l'ambiente di sviluppo integrato (IDE) di Visual Studio. Pertanto, è necessario utilizzare il file del progetto. Per ulteriori informazioni, vedere Proprietà RequiresElevation.

Elevazione assistita dall'amministratore

Windows Installer supporta l'elevazione assistita dall'amministratore in Windows Vista. In questo scenario, all'utente vengono richieste le credenziali di amministratore e l'amministratore immette la password per l'utente. Per supportare questo scenario, il programma di avvio automatico imposta la proprietà AdminUser su True quando sul computer viene eseguito Windows Vista o una versione successiva di Windows.

Nota:

Se si esegue Windows Vista su un computer che non utilizza il controllo dell'account utente e l'utente non è un amministratore, la proprietà AdminUser verrà comunque impostata su True. Di conseguenza, i programmi di installazione con estensione exe (ad esempio SQLExpress32.exe) devono essere scritti in modo da rilevare le autorizzazioni appropriate e generare un codice di uscita specifico in caso di autorizzazioni insufficienti. È necessario creare Setup.exe per intercettare questo codice di uscita e visualizzare un messaggio che indica la necessità di un amministratore.

Elevazione dei prerequisiti

Windows Vista eleva l'installazione dei componenti dei prerequisiti quando necessario. Lo stesso programma di avvio automatico non esegue l'elevazione; quando Windows Vista è in esecuzione con controllo dell'account utente, viene generato un prompt per ogni componente dei prerequisiti da elevare, a meno che non sia già installato. Se un'elevazione del package ha esito negativo, anche l'avvio automatico ha esito negativo e viene visualizzato un messaggio di errore appropriato.

Elevazione dell'azione personalizzata

Le azioni personalizzate create nell'Editor delle azioni personalizzate vengono eseguite come elevate. Le azioni personalizzate non devono accedere ai dati specifici dell'utente, ad esempio il Registro di sistema o il file system, poiché l'azione personalizzata non viene eseguita nell'account dell'utente che richiama l'azione.

Per impostazione predefinita, le azioni personalizzate vengono eseguite elevate poiché l'impostazione predefinita della proprietà NoImpersonate è True nell'Editor delle azioni personalizzate. L'impostazione di NoImpersonate su False costringerebbe l'azione personalizzata a rappresentare l'utente che richiama l'azione, il quale potrebbe disporre di autorizzazioni ridotte.

Differenze tra le versioni di Visual Studio

Si noti inoltre che vi sono differenze nel modo in cui vengono eseguiti i progetti di installazione di Visual Studio 2005 e quelli di Visual Studio 2008 nel controllo dell'account utente di Windows Vista.

La funzione di rilevamento del programma di installazione incorporato di Windows Vista richiede il consenso quando l'esecuzione avviene nel controllo dell'account utente. Un programma di avvio automatico (Setup.exe) generato con Visual Studio 2005 richiede sempre il consenso, indipendentemente da ciò che viene installato. Poiché Setup.exe e i relativi processi vengono eseguiti con un token di amministratore in Windows Vista, l'installazione dell'applicazione finale verrà eseguita con privilegi elevati. Se un utente esegue Setup.exe con elevazione assistita dall'amministratore, l'applicazione verrà installata nel profilo dell'utente elevato e non nel profilo dell'amministratore.

In Visual Studio 2008, il comportamento di Setup.exe cambia; non viene richiesta l'elevazione al momento dell'avvio. Per impedire la richiesta di elevazione, il manifesto incorporato del programma di avvio automatico specifica che Setup.exe venga eseguito con un livello di esecuzione obbligatorio di asInvoker. In questo modo è possibile sfruttare il vantaggio derivante dal fatto che l'installazione dell'applicazione finale non viene eseguita come elevata, consentendo comunque all'installazione dei componenti dei prerequisiti essenziali di essere elevata in base alle esigenze. Il programma di avvio automatico chiama ShellExecute per avviare i prerequisiti. Windows Vista riceve questa chiamata, esegue il rilevamento dell'installazione e genera un prompt per l'utente prima dell'installazione.

Lo svantaggio di questa modifica è che viene generato un prompt per ogni componente dei prerequisiti da installare, oltre che per l'applicazione stessa. Tuttavia, se tutti i prerequisiti sono già presenti sul computer, l'installazione non genera alcun prompt. Inoltre, non vi sono controlli esterni che richiedono l'elevazione. I controlli esterni funzionano, ma l'utente riceve numerosi prompt di elevazione per ogni controllo esterno, oltre ai prompt per il programma di installazione.

Vedere anche

Concetti

Distribuzione di Windows Installer in Windows Vista

Windows Vista e Visual Studio

Diritti utente e Visual Studio

Altre risorse

Concetti sulla distribuzione con Windows Installer