Eseguire il processo come utente normale da MSI (wix) in un contesto diverso
-
03-07-2019 - |
Domanda
Sto cercando di configurare un programma di installazione per alcuni software che utilizziamo all'interno dell'azienda.
L'installer viene inviato ai computer di destinazione tramite SMS ed esegue i seguenti passaggi:
- Termina qualsiasi istanza attualmente in esecuzione dell'app (l'app è un'utilità, quindi questo non ha alcun impatto sull'utente).
- Rimuovi la versione precedente.
- Installa la versione aggiornata.
Quello che vogliamo che faccia è lanciare l'eseguibile installato (come l'utente attualmente connesso, non l'account di sistema su cui viene eseguito il lavoro SMS) una volta completato il passaggio 3
Ho provato ad aggiungere un'azione personalizzata come segue:
<CustomAction Id="Relaunch" Impersonate="yes" Return="asyncNoWait" FileKey="AppExeFile" Execute="commit" ExeCommand="acm" />
E nell'elemento InstallExecuteSequence
ho il seguente:
<Custom Action="Relaunch" OnExit="success" />
Tuttavia, quando proviamo questo, sia come processo SMS che come amministratore non succede nulla (ad es. l'app non viene riavviata).
Qualche suggerimento?
Soluzione 2
Sfortunatamente sembra che ciò non sia possibile - suppongo che potrebbe essere un'opzione per scrivere un'estensione per l'MSI che fa quello che mi serve nel codice in qualche modo - anche se sembra un sacco di lavoro per una piccola ricompensa.
Quello che abbiamo deciso di fare è usare SMS per inviare un pacchetto incatenato, il principale che esegue la nostra applicazione, che dipende prima dall'installer in esecuzione.
Spero che questo aiuti qualcun altro :)
Altri suggerimenti
La soluzione che ho trovato è quella di avviare la nostra utility usando la chiave Esegui registro al login e di impedire l'avvio dell'utility durante l'installazione se l'utente corrente è "SYSTEM". - questo non era specificamente con SMS ma usando la distribuzione di AD / GPO. Tuttavia, alcuni dei nostri clienti utilizzano SMS e questa è stata la soluzione che ha funzionato per loro.
Problemi simili con Vista / Server 2008 UAC, l'unica soluzione affidabile che ho trovato è quella di pianificare un riavvio in modo che quando l'utente accede nuovamente all'utilità venga avviata nel contesto utente corretto.
Ho fatto un bel po 'di ricerche e ho consultato la documentazione MSI e sembra che non sia davvero possibile deselezionare i privilegi per lanciare un'utilità in background in quanto un altro utente.