2013-07-24 10 views
5

Provo a scrivere un programma di installazione MSI usando WIX. Durante la disinstallazione ho bisogno di eseguire un'azione personalizzata specializzata che prima interrompa i miei servizi e poi chiuda l'applicazione. Lo faccio dopo InstallInitialize evento utilizzando il seguente mark-up:Come evitare il messaggio "Le seguenti applicazioni devono essere chiuse" durante la disinstallazione con WIX?

<CustomAction Id='myCustomAction' BinaryKey='myDll' DllEntry='msiUninstallInitialize' Execute='deferred' Impersonate='no' /> 

<InstallExecuteSequence> 
    <Custom Action='myCustomAction' After='InstallInitialize'></Custom> 
</InstallExecuteSequence> 

Il problema è che se una versione precedente della mia applicazione era in esecuzione prima di provare ad effettuare l'aggiornamento a una più recente usando il mio MSI, mi è stato sempre un Restart Manager spuntando questo messaggio:

enter image description here

e allora questo:

enter image description here

per impedirgli di farlo, ho aggiunto la seguente proprietà:

<Property Id="MSIRESTARTMANAGERCONTROL" Value="Disable" /> 

Ma ora il programma di disinstallazione mostra questa finestra:

enter image description here

Quindi ero curioso, c'è un modo per disabilitare controlla se la mia app è in esecuzione (lo chiuderò personalmente durante l'elaborazione dell'azione personalizzata)?

risposta

5

Hai disattivato l'interazione di Gestore riavvio con il programma di installazione di Windows in modo che Windows Installer torni al suo vecchio comportamento, finestra di dialogo FileInUse. Questo comportamento è documentato con MSIRESTARTMANAGERCONTROL Property.

Non ho mai provato, ma la teoria dice che è possibile rendere nascosta la finestra di dialogo FilesInUse (Dialog/@Hidden='yes') per impedire la visualizzazione della finestra di dialogo.

+0

Grazie per il suggerimento. Sfortunatamente sono passati 6 mesi come ho chiesto. Quindi, se scrivo un altro programma di installazione Wix, proverò a provarlo .... – c00000fd

+0

Se è utile, puoi contrassegnare la domanda risposta in modo che non risponda alle mie domande di "domande senza risposta senza risposta". :) –

+0

Solo per ragioni di accuratezza, ho bisogno di assicurarmi che risolva il mio problema prima di farlo. Mi dispiace, se ti incasina. A questo punto posso solo prevederlo. Anche se apprezzo il tuo aiuto e in generale quello che stai facendo con Wix! – c00000fd

0

La soluzione a questo è quello di spostare l'azione personalizzata che ferma i propri servizi & processi prima della Preparazione passo nella tua Installare Esecuzione Fase.

documenti di Per AdvancedInstaller (sottolineatura mia):

preparazione - verifica tutti i volumi per lo spazio sufficiente per l'installazione. Verifica e notifica all'utente se sono in uso file di installazione. È possibile impostare il contrassegno posticipato, rollback o di commit per le azioni dopo questo gruppo. Questi vengono eseguiti dal gruppo di azioni Finish Execution. È possibile eseguirli elevati utilizzando i flag "senza impersonificazione".

È importante notare che non è possibile utilizzare i flag "senza imitazione" su queste azioni personalizzate, tuttavia.

Problemi correlati