2013-01-15 18 views
5

Sto utilizzando InstallJammer per la creazione dell'installazione della mia applicazione. Voglio verificare se l'applicazione è in esecuzione prima di procedere con la procedura di disinstallazione.Verifica se l'applicazione è in esecuzione - InstallJammer

set program <%Company%><%AppName%>.exe 
set pids [twapi::get_process_ids -name $program] 
foreach pid $pids { 
    catch {twapi::end_process $pid -force} 
} 

Sopra indicato è lo script TCL che ho provato. Ma lo script non restituisce alcun valore. Come risolvere questo?

+0

Questo script tenta di eliminare qualsiasi applicazione in esecuzione che ha un nome corrispondente; in senso stretto, non * controlla * nulla, quindi non c'è niente da restituire. Direi che dovrebbe essere chiaro dall'invocazione di qualcosa chiamato "end_process" ... – kostix

+0

D'altra parte, non è chiaro cosa intendi con "restituire un valore" - come si suppone che il codice chiamante possa accedervi valore? Un riferimento al bit rilevante di tale documentazione "InstallJammer" potrebbe aiutare a comprendere i requisiti. – kostix

+1

@kostix C'è un modo per verificare se l'applicazione è in esecuzione? Nella ricerca di questa domanda, ho ottenuto lo script sopra come soluzione. http://installjammer.com/forums/viewtopic.php?f=5&t=2261 – Gapchoos

risposta

2

Presumo che si sta utilizzando il execute script condition, mentre potrebbe essere più facile utilizzare solo il script condition

Se si utilizza la condizione di script, basta usare il espr data dal kostix:

[llength [twapi::get_process_ids -name <%Company%><%AppName%>.exe]] > 0 

Se devi davvero utilizzare la condizione di script di esecuzione, quindi racchiudere tutto in expr { e } e ottieni lo stesso risultato della condizione di script (Oppure: una condizione di script è solo una condizione di script di esecuzione con expr { all'inizio e } a fine).

expr {[llength [twapi::get_process_ids -name <%Company%><%AppName%>.exe]] > 0} 
Problemi correlati