Domanda

Recentemente, abbiamo aggiunto una caratteristica per il nostro programma di installazione che ha richiesto un paio di collegamenti sul desktop da rinominare un po '(il numero di versione è stato aggiunto al nome). Sto avendo problemi per ottenere il programma di installazione per sostituire le vecchie scorciatoie con quelli nuovi. Quando il problema è stato inizialmente riferito, i nuovi collegamenti sono stati installati, ma i vecchi non venivano rimossi. Dopo aver lavorato sul problema, sto avendo un problema mista: Uno dei vecchi tasti di scelta rapida è stato rimosso (finora, tutto bene), ma l'altro non è (non così buono), in entrambi i casi, i nuovi collegamenti non vengono installati (ancora peggio). Ho provato a cambiare il GUID su ciascuno dei componenti che installano queste scorciatoie, e ho anche, a un certo punto, provato a cambiare la proprietà ProductCode in ciascuno dei moduli di unione responsabili delle scorciatoie, ma nulla sembra ottenere il desiderato comportamento (fuori con il vecchio e dentro il nuovo caso di aggiornamento).

Con solo i componenti rilevanti ri-guidato, qui è che cosa gli spettacoli file di registro per gli stati di installazione (per aiutare con la messa a punto, ho rinominato i componenti leggermente in modo che vi posso dire quali sono dalla vecchia costruzione e che provengono dal nuovo):

...
MSI (s) (E0:70) [16:49:21:921]: Component: DesktopFolderX.04E48C43_FFCB_42AC_AC59_1D96BEC85C17; Installed: Absent;   Request: Local;   Action: Local
...
MSI (s) (E0:70) [16:49:21:921]: Component: DesktopFolderX.25696C3E_819B_4675_BEE2_C36D2B5CB521; Installed: Absent;   Request: Local;   Action: Local
...
MSI (s) (E0:C0) [17:02:18:390]: Component: DesktopFolder.25696C3E_819B_4675_BEE2_C36D2B5CB521; Installed: Local;   Request: Absent;   Action: Absent
...
MSI (s) (E0:C0) [17:02:18:390]: Component: DesktopFolder.04E48C43_FFCB_42AC_AC59_1D96BEC85C17; Installed: Local;   Request: Absent;   Action: Null
...

Come si può vedere nel registro, i nuovi collegamenti dovrebbe andare in in entrambi i casi, ma non lo sono. E io sono in perdita per spiegare il motivo per cui il programma di installazione sta facendo cose diverse con i due vecchi tasti di scelta rapida.

FYI:. Il mio ambiente dev è di installazione Wise Studio 7.0

Modifica Ho tutto quello di reset a quello che era in precedenza, fatta eccezione per il ProductVersion attuale e ProductCode. Dopo aver fatto questo, le foglie di installazione delle vecchie scorciatoie installati, ma non installa i nuovi. (Questo è un comportamento diverso da quanto originariamente riportato, e che sono stato in grado di duplicare, vale a dire, le vecchie scorciatoie sono stati lasciati installati, e sono stati anche installati i nuovi (rinominati) quelli.) Dopo la ri-guida i due componenti rilevanti, il programma di installazione rimuove le vecchie scorciatoie, ma ancora non installa i nuovi. (Questo è ciò che sta accadendo su XP.)

Le linee rilevanti nel log dopo la ri-guida i componenti sono i seguenti:

...
MSI (s) (80:EC) [10:48:31:091]: Component: DesktopFolder.25696C3E_819B_4675_BEE2_C36D2B5CB521; Installed: Absent;   Request: Local;   Action: Local
...
MSI (s) (80:EC) [10:48:31:091]: Component: DesktopFolder.04E48C43_FFCB_42AC_AC59_1D96BEC85C17; Installed: Absent;   Request: Local;   Action: Local
...
MSI (s) (80:0C) [11:04:22:882]: Component: DesktopFolder.25696C3E_819B_4675_BEE2_C36D2B5CB521; Installed: Local;   Request: Absent;   Action: Absent
...
MSI (s) (80:0C) [11:04:22:882]: Component: DesktopFolder.04E48C43_FFCB_42AC_AC59_1D96BEC85C17; Installed: Local;   Request: Absent;   Action: Absent
...

Le prime due righe sembrano indicare che i nuovi collegamenti vengono installati, ma non lo sono. A Riparazione poi installerà i nuovi collegamenti.

Quando la copia del programma di installazione in cui potrebbe essere duplicato il problema originale (esistono vecchi e nuovi collegamenti dopo un aggiornamento) è gestito, l'azione riferito in merito alle ultime due righe di cui sopra è Null invece assente.

Modifica 2: Il comportamento attuale è che le vecchie scorciatoie alloggia installati, e quelli nuovi non sono installati. Quando ho ri-guid loro componenti, le vecchie scorciatoie sono state rimosse, e quelli nuovi non sono ancora in fase di installazione. Ho provato le soluzioni di Christopher Painter, ma nessuno dei due sono andato da nessuna parte. (Vedi il mio commento su questa risposta.) Ci deve essere un modo per ottenere i nuovi collegamenti con versioni installate al posto di quelle vecchie senza versione. C'è qualcuno là fuori in grado di fornire una soluzione che funziona?

Modifica 3: Come si è visto, il nuovo comportamento in cui non sono stati sempre installati i nuovi collegamenti è dovuto a un errore che avevo fatto a ottenere i file di origine, e quelli che sono andati nell'installer non erano come fino ad oggi di quelli che dovevano essere sostituiti. Una volta che le più aggiornate dei file di data sono stati compilato nel programma di installazione, sono stato in grado di ottenere i risultati desiderati (vecchie scorciatoie fuori, di nuovi in). (Vedere la mia risposta per ulteriori informazioni.)

È stato utile?

Soluzione 2

Come abbiamo ri-versione tutto per ciascun fatturato (il numero di build è sempre in aumento), si tratta di un importante aggiornamento per quanto WI è interessato, così una volta ho avuto la più aggiornate ai file di data nella installazione, reGUIDing i componenti che contenere i collegamenti sul desktop che avrebbe dovuto essere sostituita raggiunto i risultati che mi è stato dopo.

Altri suggerimenti

Una scorciatoia è solo un file .lnk in una directory. Non si rinomina un collegamento, si elimina e crearne uno nuovo. Se fate un aggiornamento importante la rimozione / reinstallazione dovrebbe gestire questo, ma se si sta facendo un minore aggiornarlo lascerà quello vecchio dietro perché il nuovo MSI non sa su di esso.

Due possibilità:

1) Utilizzare la tabella RemoveFile di sbarazzarsi del vecchio collegamento.

2) mantenere il vecchio intorno componente con il vecchio file e utilizzare l'attributo transitiva con una condizione no-op (google come eliminare un file in minore aggiornamento alias puntura modello componente) a causa della componente e del file / scorciatoia per essere rimosso. Creare un nuovo componente con un nuovo nome di file e il nuovo nome del collegamento da installare per ottenere il nuovo collegamento.

Credo che mi piacerebbe provare 1 # prima. : -)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top