Pagina 1 di 1
[Risolto] Spostamento del collegamento sul desktop
Pubblicato: 22 novembre 2015 - 08:43
di gaelds
Buongiorno,
Dopo aver installato Stellarium, vorrei spostare il collegamento predefinito sul desktop in una sottocartella (dopo aver verificato che esista già). Purtroppo, quando eseguo il comando build-upload, ricevo i seguenti messaggi: FATAL ERROR: IOError: [Errno 2] No such file or directory...
Ecco un estratto del codice:
Codice: Seleziona tutto
if isdir("c:\Users\Public\Desktop\Logiciels\Physique-Chimie\""):
if isfile("c:\Users\Public\Desktop\Stellarium.lnk"):
print ('Déplacement du raccourci Stellarium')
shutil.move("c:\Users\Public\Desktop\Stellarium.lnk","c:\Users\Public\Desktop\Logiciels\Physique-Chimie\Stellarium.lnk")
Il build-upload funziona se creo il file c:\Users\Public\Desktop\Logiciels\Physique-Chimie\Stellarium.lnk sul mio PC, ma è possibile evitare questo tipo di errore modificando il codice?
Re: Spostamento del collegamento sul desktop
Pubblicato: 22 novembre 2015 - 09:35
di gaelds
Un altro problema è che la scorciatoia non viene spostata quando testo il pacchetto. C'è un errore nel codice? Ho provato ad aggiungere una pausa di 30 secondi con `time.sleep(30)` prima di iniziare lo spostamento, ma anche questo non ha funzionato.
Re: Spostamento del collegamento sul desktop
Pubblicato: 23 novembre 2015 - 09:07
di htouvet
aggiungere caratteri "r" (stringa grezza) in modo che Python non interpreti \
Codice: Seleziona tutto
if isdir(r"c:\Users\Public\Desktop\Logiciels\Physique-Chimie"):
if isfile(r"c:\Users\Public\Desktop\Stellarium.lnk"):
print (u'Déplacement du raccourci Stellarium')
shutil.move(r"c:\Users\Public\Desktop\Stellarium.lnk",r"c:\Users\Public\Desktop\Logiciels\Physique-Chimie\Stellarium.lnk")
per migliorare la portabilità,
Codice: Seleziona tutto
if isdir(makepath(common_desktop(),'Logiciels','Physique-Chimie')) and isfile(common_desktop(),'Stellarium.lnk'):
print(u'Déplacement du raccourci Stellarium')
shutil.move(makepath(common_desktop(),'Stellarium.lnk'),makepath(common_desktop(),'Logiciels','Physique-Chimie','Stellarium.lnk'))
Re: Spostamento del collegamento sul desktop
Pubblicato: 23 novembre 2015 - 09:23
di gaelds
Grazie mille! Lo proverò presto. Il secondo codice dovrebbe funzionare anche su XP?
Re: Spostamento del collegamento sul desktop
Pubblicato: 23 novembre 2015 - 11:30
di gaelds
Mi dispiace, sembra che non funzioni; il collegamento rimane sul desktop. Il fatto che l'utente (studente) non abbia i permessi di scrittura sulla cartella dei collegamenti potrebbe causare l'errore seguente?

Re: Spostamento del collegamento sul desktop
Pubblicato: 23 novembre 2015 - 12:09
di htouvet
La procedura `install ext` è stata eseguita con l'account di sistema. Pertanto, non ci sono problemi di autorizzazioni.
La funzione `shutil.move` presuppone che la destinazione non esista.
Quindi, è necessario verificare che il file di destinazione non esista... (`isfile`).
Verificare inoltre che la cartella esista; in caso contrario, crearla (`mkdirs`).
Re: Spostamento del collegamento sul desktop
Pubblicato: 23 novembre 2015 - 12:39
di gaelds
Alla fine ci sono riuscito; il comando `makepath` mancava da `isfile`. Di seguito è riportato il codice che funziona su Windows 7 (non testato su XP). Non so se la parte di disinstallazione sia necessaria...?
Codice: Seleziona tutto
if iswin64():
uninstallkey = ["Stellarium_is1"]
print ("Fermeture de Stellarium")
killalltasks('Stellarium.exe')
print('installation de dst-stellarium 64bits')
run(r'"stellarium-0.14.0-win64.exe" /VERYSILENT')
print ("Pause de 15sec.")
time.sleep(15)
if isdir(makepath(common_desktop(),'Logiciels','Physique-Chimie')) and isfile(makepath(common_desktop(),'Stellarium.lnk')):
print(u'Déplacement du raccourci Stellarium')
shutil.move(makepath(common_desktop(),'Stellarium.lnk'),makepath(common_desktop(),'Logiciels','Physique-Chimie','Stellarium.lnk'))
else:
uninstallkey = ["Stellarium_is1"]
print ("Fermeture de Stellarium")
killalltasks('Stellarium.exe')
print('Installation de dst-stellarium 32bits')
run(r'"stellarium-0.14.0-win32.exe" /VERYSILENT')
print ("Pause de 15sec.")
time.sleep(15)
if isdir(makepath(common_desktop(),'Logiciels','Physique-Chimie')) and isfile(common_desktop(),'Stellarium.lnk'):
print(u'Déplacement du raccourci Stellarium')
shutil.move(makepath(common_desktop(),'Stellarium.lnk'),makepath(common_desktop(),'Logiciels','Physique-Chimie','Stellarium.lnk'))
def uninstall():
killalltasks('Stellarium.exe')
print ("Désinstallation de Stellarium")
if isfile(makepath(common_desktop(),'Logiciels','Physique-Chimie','Stellarium.lnk')):
remove_file(makepath(common_desktop(),'Logiciels','Physique-Chimie','Stellarium.lnk'))
if isfile(makepath(common_desktop(),'Stellarium.lnk')):
remove_file(makepath(common_desktop(),'Stellarium.lnk'))
return (0);
Grazie per l'aiuto!