2010-04-12 7 views
6

Sto scrivendo un programma di installazione WIX e ho i seguenti requisiti:
Durante l'installazione, ho bisogno di passare un percorso assoluto a un file (chiamiamolo A) incluso nel mio programma di installazione per un componente COM, che già esiste sul disco rigido e fa parte di un altro programma. Ho già scritto un'azione personalizzata appropriata che prevede un percorso per il file A. Non voglio includere A come file installato nella cartella Programmi e rimosso durante il processo di disinstallazione. Invece, vorrei mettere un solo temporaneo sul disco rigido, chiamare la mia azione personalizzata che farà sì che il componente COM utilizzi il contenuto di A e quindi rimuova A dal disco. C'è un modo semplice per raggiungere questo obiettivo?WIX: utilizzo di un file temporaneo durante l'installazione

Ho provato a utilizzare la tabella binaria e memorizzare A lì, tuttavia non so come fare riferimento a A utilizzando il percorso assoluto. So che potrei inserire A al di fuori del file MSI, ma vorrei mantenere tutte le esigenze di installazione dei file in un singolo MSI.

Qualsiasi aiuto sarebbe apprezzato.

risposta

6

Vorrei prendere questo approccio.

Installare il file "A" in qualsiasi directory. Eseguire l'azione personalizzata necessaria per aggiornare il componente COM. Quindi eseguire un'altra azione personalizzata o modificare quella attualmente scritta per rimuovere il file dopo che non è più in uso. Ciò non lascerebbe alcuna traccia del file "A" e se si pianifica l'azione personalizzata da eseguire solo durante l'installazione, non ci si dovrà preoccupare della disinstallazione.

+1

Buona idea. Dire che installerò un file e lo cancellerò con la mia azione personalizzata alla fine del processo di installazione. Non ci sarebbe un problema con un file mancante durante la disinstallazione? Suppongo che il programma di disinstallazione non tratti i file mancanti come errori? – madbadger

+2

No, non ci sarà un errore durante la disinstallazione. Se il programma di disinstallazione non vede il file, viene semplicemente soffiato da esso. –

8

Eliminare un file installato da MSI significa che MSI lo considererà "danneggiato" e provare a ripararlo automaticamente se richiesto. Ciò accade automaticamente in diversi casi (ad es. Scorciatoie pubblicizzate e registrazione COM), quindi mi raccomando di non farlo. Lascia il file lì invece - ha fatto il suo lavoro e non c'è nulla di male a lasciarlo lì.

+1

Cosa succede se i file installati si trovano su una cartella virtuale IIS e non si desidera che le persone scarichino questo file? – guiomie

+0

Il file può essere installato con un GUID del componente vuoto, in questo modo non sarà mai possibile attivare l'autoriparazione se viene eliminato. D'altra parte sono d'accordo con l'idea che dovrebbe essere semplicemente lasciato sul disco in cui è stato installato. Un GUID del componente vuoto indica anche che il file non verrà disinstallato correttamente, a meno che non si sia autore di una voce RemoveFile. –

+1

La nozione di "file di installazione" è stata discussa per Wix? Questo è un concetto di Installshield in cui file di risorse come loghi, accordi di licenza, file audio e quant'altro vengono estratti nella cartella% TMP% e possono essere referenziati durante l'installazione tramite codice di azione personalizzato utilizzando macro di percorso. Ci sono casi in cui questo potrebbe aiutare - forse il concetto è già in Wix. –