Sto provando a creare un rapido auto-aggiornamento in Perl Windows. Ho notato che quando chiamo cpanp
per installare l'aggiornamento del pacchetto non riesce a installare una nuova versione dello script perché lo script è attualmente in esecuzione. Sto chiamando cpanp
con CORE::system()
attualmente. Se avessi chiamato cpanp
con exec()
, avresti rilasciato l'eseguibile per la sostituzione? Oppure, Windows lo tiene legato anche se l'esecuzione è stata interamente convertita in cpanp
?Aggiornamento automatico script di Windows che sostituisce l'eseguibile corrente con exec?
Attualmente, il mio flusso di processo simile a questa,
- Scarica META.yml dai server
- analizzare fuori la versione di META.yml
- confrontare con l'attuale
$VERSION
- Se la corrente la versione è inferiore, genera una stringa di versione utilizzando i dati in META.yml
- Ge nerare un URL al pacchetto utilizzando l'host/percorso per META.yml e la versione/informazioni
- Informare l'utente dell'aggiornamento
- Spawn
cpanp
eseguire l'aggiornamento con l'URL.
- Se la versione corrente è la stessa
- fare nulla
- Se la corrente la versione è inferiore, genera una stringa di versione utilizzando i dati in META.yml
Sarebbe system()
comportarsi in modo diverso rispetto exec()
su Win32 per quanto riguarda la sostituzione del file eseguibile? Su Linux funziona come progettato.
Stai parlando del ** Perl ** eseguibile? –