Apri Excel su Jenkins CI

Sto lavorando su Windows 7 (connesso come sessione n. 1), il mio Jenkins CI è in esecuzione come servizio Windows nella sessione 0. Il mio problema è .. Voglio aprire un file Excel tramite CI Jenkins nella sessione 0, ma voglio mostra la sua GUI nella sessione 1.

So che la sessione 0 è isolata in Windows 7, ma è ansible eseguire un processo nella sessione 0 e quindi eseguire l’output in un’altra sessione? per favore aiuto.

Modificare:
Ci sono voluti un po ‘di prove ed errori, ma questo è quello che ha funzionato per me (Windows 7 64-bit).

  • Scarica PsTools dal sito di Microsoft
  • Abbiamo solo bisogno di psexec.exe , ma puoi estrarre tutto. Estrarre in qualche luogo accessibile da Jenkins, preferibilmente senza spazi nel percorso.
  • Aprire prompt dei comandi con cmd elevati: digitare cmd nella ricerca rapida di Start, fare clic con il pulsante destro del mouse su cmd.exe e selezionare Run as Administrator .
  • Digitare C:\path\to\psexec.exe -accepteula e premere C:\path\to\psexec.exe -accepteula .
  • Digitare C:\path\to\psexec.exe -i 1 cmd e premere C:\path\to\psexec.exe -i 1 cmd . (Se vedi apparire un prompt dei comandi, tutto va bene, chiudilo ora)
  • Nella configurazione del processo, configura il passaggio del comando Esegui Windows Batch
  • Scrivi quanto segue:
    C:\path\to\psexec.exe -accepteula && C:\path\to\psexec.exe -i 1 cmd /c start C:\PROGRA~2\MICROSO~1\path\to\excel.exe

Dove:

  • C:\path\to è il percorso completo per psexec.exe , a meno che non sia nel %path%
  • -i 1 è l’ID di sessione in cui desideri eseguire l’avvio.
  • C:\PROGRA~2\MICROSO~1\path\to è il percorso completo per excel.exe senza spazi . Dal momento che la maggior parte delle installazioni di Office saranno sottoposte a percorsi con spazi, come “Programmi (x86), è necessario calcolare il percorso breve o posizionarlo da qualche parte senza spazi.
  • Avere excel.exe sotto %path% e lavorare dalla riga di comando regolare non era abbastanza .

Una piccola spiegazione per coloro a cui importa:

  • psexec bisogno di installare prima un servizio. Per questo, è necessario eseguirlo dal prompt dei comandi con privilegi elevati per la prima volta. Questa è una fase di installazione una tantum.
  • Per far funzionare psexec , è necessario accettare il prompt EULA. Questo viene fatto per sessione / utente. Quindi, anche se si esegue psexec -accepteula nel prompt dei comandi, non aiuta quando il servizio Jenkins (in esecuzione come sistema locale nella sessione 0) tenta di utilizzarlo. Pertanto, devi metterlo nel lavoro di Jenkins, insieme al comando. Tecnicamente, ha solo bisogno di essere lì una volta, e può essere rimosso in seguito, ma sicuramente non fa male tenerlo lì.
  • Ho usato cmd /k ed eseguendo questo comando dal mio prompt cmd locale per eseguire il debug. Questo è quello che mi ha fatto capire che non riuscivo a trovare un modo per sfuggire agli spazi (ho provato varie citazioni), quindi ho dovuto ricorrere a nomi di file brevi. Nota che i nomi di file brevi non sono richiesti, questo è solo per scappare dagli spazi.

no non lo è-

più eventuali interazioni dell’interfaccia utente richiedono l’esecuzione di Jenkins come web start Java piuttosto che un servizio o non è ansible interagire con gli elementi dell’interfaccia utente.