Installazione di assembly Win32 per la condivisione affiancata
Di seguito viene descritto come creare un pacchetto di Windows Installer per installare un assembly Win32. Il pacchetto installa un assembly affiancato nella cartella Winsxs per un utilizzo condiviso dell'applicazione. Dopo l'installazione del pacchetto, l'assembly condiviso è disponibile a livello globale per qualsiasi applicazione che specifica una dipendenza dall'assembly in un file manifesto dell'assembly. Il programma di installazione non registra globalmente l'assembly side-by-side nel sistema.
Si noti che è possibile installare assemblaggi condivisi side-by-side usando moduli di unione.
Prima di continuare, è necessario comprendere come creare un pacchetto di Windows Installer senza assembly. Per un esempio di creazione di una semplice installazione, vedere esempio di installazione.
Per installare un assembly condiviso affiancato
- Definire un componente Windows Installer che include l'assembly Win32. Questo componente può contenere altre risorse che devono essere sempre installate o rimosse con il pacchetto. Tutti gli altri componenti dell'applicazione possono essere creati esattamente come per un'installazione senza assembly. Aggiungere una riga alla tabella componente per il componente contenente l'assembly Win32. Immettere un GUID di Windows Installer valido per questo codice componente. Non usare il file manifesto come percorso della chiave per questo componente.
- Aggiungere una riga alla tabella FeatureComponents legare il componente a una funzionalità di Windows Installer. Per informazioni, vedere Componenti e funzionalità di . Una funzionalità di Windows Installer deve essere una parte delle funzionalità dell'applicazione riconoscibile per un utente. L'assembly viene attivato quando la funzionalità viene selezionata da un utente o attivata automaticamente in seguito a un malfunzionamento di un'applicazione. Se l'assembly definisce una funzionalità aggiuntiva, aggiungere una riga aggiuntiva alla tabella Feature per gli attributi della funzionalità. Questo passaggio non è necessario durante la creazione di un modulo di merge.
- Per gli assembly side-by-side, le informazioni di associazione e attivazione, ad esempio classi COM, interfacce e librerie dei tipi, vengono archiviate nei file manifesto anziché nel Registro di sistema. Gli assembly condivisi memorizzano queste informazioni in un manifesto dell'assembly. Nei sistemi che supportano assembly affiancati, il programma di installazione ignora l'elaborazione di tutte le informazioni sui componenti immessi nella tabella Extension , nella tabella Verb , nella tabella TypeLib , nella tabella MIME , nella tabella Class , nella tabella ProgId e nella tabella AppId . Le informazioni di associazione e attivazione possono essere immesse in queste tabelle per l'uso da parte di sistemi che non supportano la condivisione di assembly side-by-side.
- L'installazione parallela non registra globalmente l'assembly, il programma di installazione ignora la registrazione automatica del componente se sono state immesse informazioni di registrazione automatica nella tabella SelfReg . Le informazioni di registrazione automatica possono essere immesse nella tabella SelfReg per la registrazione automatica del componente nei sistemi che non supportano la condivisione di assembly side-by-side.
- Aggiungere qualsiasi altra informazione del Registro di sistema, esclusi l'associazione e l'attivazione o l'auto-registrazione del componente, alla tabella del Registro di sistema , alla tabella RemoveRegistry e alla tabella Environment .
- Poiché si tratta di un assembly condiviso, non generare un file .local. Non includere informazioni per questo componente nella tabella IsolatedComponent . Il programma di installazione ignora la tabella IsolatedComponent per questo componente nei sistemi operativi che supportano la condivisione side-by-side. Aggiungere informazioni alla tabella IsolatedComponent se si desidera che l'assembly sia riservato nei sistemi che supportano i file .local.
- Per abilitare la condivisione side-by-side, l'assembly Win32 deve essere installato nella cartella Winsxs. Questo viene realizzato lasciando la colonna File_Application della tabella MsiAssembly null per l'assembly. Questo indica al programma di installazione di installare l'assembly nella cartella WinSxS, anziché nella cartella del componente. Aggiungere una riga alla tabella msiAssembly per il componente che contiene l'assembly Win32. Immettere il valore 1 nel campo Attributi della tabella MsiAssembly per specificare che si tratta di un assembly Win32. Per un assembly condiviso, lasciare vuoto il campo File_Application. Aggiungere l'azione MsiPublishAssemblies alla tabella InstallExecuteSequence o alla tabella AdvtExecuteSequence. Aggiungere l'azione MsiUnpublishAssemblies alla tabella InstallExecuteSequence.
- Aggiungere righe alla tabella MsiAssemblyName per il componente. Aggiungere una riga per ogni nome e coppia di valori specificata nella sezione assemblyIdentity del manifesto. Per un esempio, vedere la tabella MsiAssemblyName.