Modifica del codice prodotto
Il codice prodotto è un GUID che rappresenta l'identificazione principale di un'applicazione o di un prodotto. Consulta i codici prodotto.
Un aggiornamento che soddisfa le linee guida seguenti in genere non richiede una modifica del codice prodotto e può essere gestito come piccolo aggiornamentoo se la versione è da modificare, come aggiornamento secondario:
- L'aggiornamento può ingrandire o ridurre l'albero delle funzionalità e dei componenti, ma non deve riorganizzare la gerarchia esistente di funzionalità e componenti descritta dalle tabelle Feature e FeatureComponents. Può aggiungere una nuova funzionalità all'albero dei componenti di funzionalità esistente. Se rimuove una funzionalità padre, deve anche rimuovere tutte le funzionalità figlie della funzionalità rimossa.
- L'aggiornamento può aggiungere un nuovo componente a una funzionalità nuova o esistente.
- L'aggiornamento non deve modificare il codice di nessun componente. Di conseguenza, un piccolo aggiornamento o un aggiornamento secondario non deve mai modificare il nome del file di chiave di un componente perché ciò richiederebbe la modifica del codice del componente.
- L'aggiornamento non deve modificare il nome del file di .msi del pacchetto di installazione. Invece, poiché modifica il pacchetto, deve modificare il codice del pacchetto. Si noti che questo significa che l'aggiornamento può modificare le tabelle, le azioni personalizzate e le finestre di dialogo nel file .msi senza modificare il nome del file.
- L'aggiornamento può aggiungere, rimuovere o modificare i file, le chiavi del Registro di sistema o i collegamenti dei componenti non condivisi da due o più funzionalità. Se l'aggiornamento modifica un file con versione, la versione del file deve essere incrementata nella tabella file. Se l'aggiornamento rimuove le risorse, deve anche aggiornare le tabelle RemoveFile e RemoveRegistry per rimuovere eventuali file, chiavi del Registro di sistema o collegamenti inutilizzati, già installati.
- L'aggiornamento di un componente condiviso da due o più funzionalità deve essere compatibile con tutte le applicazioni e le funzionalità che usano il componente. L'aggiornamento può modificare la risorsa di un componente condiviso, ad esempio file, voci del Registro di sistema e collegamenti, purché le modifiche siano compatibili con le versioni precedenti. Non è consigliato che l'aggiornamento aggiunga o rimuova file, voci del registro o collegamenti da un componente condiviso.
- Un piccolo aggiornamento viene fornito come pacchetto patch di Windows Installer . Solitamente, un prodotto completo CD-ROM non viene fornito insieme a un piccolo aggiornamento.
Il codice del prodotto deve essere modificato se per l'aggiornamento è valido uno dei seguenti casi:
- Le installazioni coesistenti di prodotti originali e aggiornati nello stesso sistema devono essere possibili.
- Il nome del file di .msi è stato modificato.
- Il codice del componente di un componente esistente è stato modificato.
- Un componente viene rimosso da una funzionalità esistente.
- Una funzionalità esistente è stata resa un elemento figlio di un'altra funzionalità esistente.
- Una funzionalità figlia esistente è stata rimossa dalla corrispondente funzionalità genitore.
Si noti che l'aggiunta di una nuova funzionalità figlio, costituita interamente di nuovi componenti, a una funzionalità esistente non richiede la modifica del codice prodotto.
È possibile creare nuove funzionalità figlie includendo msidbFeatureAttributesFollowParent e msidbFeatureAttributesUIDisallowAbsent nel campo Attributi della tabella delle Funzionalità . Se l'aggiornamento secondario aggiunge solo nuove sotto-funzionalità, allora REINSTALL=ALL è sufficiente per forzare l'installazione delle nuove sotto-funzionalità. Per altre informazioni, vedere Controllo degli stati di selezione delle funzionalità.
Una nuova funzionalità secondaria potrebbe essere nascosta all'utente. Per sincronizzare lo stato di installazione di una nuova funzionalità figlio con la relativa funzionalità padre, impostare i bit msidbFeatureAttributesFollowParent e msidbFeatureAttributesUIDisallowAbsent per la funzionalità figlio.
Argomenti correlati