Installazione di assembly Win32 per la condivisione side-by-side

Di seguito viene descritto come creare un pacchetto di Windows Installer per installare un assembly Win32. Il pacchetto installa un assembly side-by-side nella cartella Winsxs per l'uso condiviso dell'applicazione. Dopo aver installato il 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 a livello globale l'assembly side-by-side nel sistema.

Si noti che è possibile installare assembly side-by-side condivisi usando moduli di merge.

Prima di continuare, è necessario comprendere come creare un pacchetto di Windows Installer senza assembly. Per un esempio di come creare un'installazione semplice, vedere Esempio di installazione.

Per installare un assembly condiviso side-by-side

  1. Definire un componente di Windows Installer che include l'assembly Win32. Questo componente può contenere altre risorse che devono essere sempre installate o rimosse con l'assembly. Tutti gli altri componenti dell'applicazione possono essere creati proprio come per un'installazione senza assembly. Aggiungere una riga alla tabella Component 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 chiave per questo componente.
  2. Aggiungere una riga alla tabella FeatureComponents che lega il componente a una funzionalità di Windows Installer. Per informazioni, vedere Componenti e funzionalità. Una funzionalità di Windows Installer deve essere una parte della funzionalità dell'applicazione riconoscibile per un utente. L'assembly viene attivato quando questa funzionalità viene selezionata da un utente o da un errore in da un'applicazione. Se l'assembly definisce una funzionalità aggiuntiva, aggiungere una riga aggiuntiva alla tabella Funzionalità per gli attributi della funzionalità. Questo passaggio non è necessario quando si crea un modulo di merge.
  3. Per gli assembly side-by-side, le informazioni di associazione e attivazione, ad esempio classi COM, interfacce e librerie di tipi, vengono archiviate nei file manifesto anziché nel Registro di sistema. Gli assembly condivisi archiviano queste informazioni in un manifesto dell'assembly. Nei sistemi che supportano assembly side-by-side, il programma di installazione ignora l'elaborazione di eventuali informazioni sul componente immesso nella tabella Estensione, tabella Verbo, tabella TypeLib, tabella MIME, tabella Classe, tabella ProgId e tabella AppId. Le informazioni di associazione e attivazione possono essere immesse in queste tabelle per l'uso da parte dei sistemi che non supportano la condivisione di assembly side-by-side.
  4. L'installazione side-by-side non registra a livello globale 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.
  5. Aggiungere qualsiasi altra informazione del Registro di sistema, esclusiva dell'associazione e dell'attivazione o della registrazione automatica del componente, alla tabella Registro di sistema, alla tabella RemoveRegistry e alla tabella Environment.
  6. Poiché si tratta di un assembly condiviso non genera un file locale. 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 vuole che l'assembly sia privato nei sistemi che supportano i file locali.
  7. Per abilitare la condivisione side-by-side, l'assembly Win32 deve essere installato nella cartella Winsxs. Questa operazione viene eseguita 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 un 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.
  8. 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 Tabella MsiAssemblyName.