Seite 1 von 1

[Gelöst] Desktop-Verknüpfung verschieben

Veröffentlicht: 22. November 2015 - 8:43 Uhr
von den Gälen
Guten Morgen,

Nach der Installation von Stellarium möchte ich die Standard-Desktopverknüpfung in einen Unterordner verschieben (nachdem ich überprüft habe, ob dieser bereits existiert). Leider erhalte ich beim Ausführen des Befehls `build-upload` folgende Fehlermeldung: FATAL ERROR: IOError: [Errno 2] No such file or directory...

Hier ist der entsprechende Auszug aus dem Code:

Code: Alle auswählen

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")
Der Build-Upload funktioniert, wenn ich die Datei c:\Users\Public\Desktop\Logiciels\Physique-Chimie\Stellarium.lnk auf meinem PC erstelle. Lässt sich dieser Fehler durch eine Codeänderung vermeiden?

Betreff: Verschieben der Desktopverknüpfung

Veröffentlicht: 22. November 2015 - 09:35 Uhr
von den Gälen
Ein weiteres Problem ist, dass die Verknüpfung beim Testen des Pakets nicht verschoben wird. Liegt ein Fehler im Code vor? Ich habe versucht, vor dem Verschieben eine 30-sekündige Pause mit `time.sleep(30)` einzufügen, aber das hat auch nicht funktioniert.

Betreff: Verschieben der Desktopverknüpfung

Veröffentlicht: 23. November 2015 - 09:07 Uhr
von htouvet
Füge "r"-Zeichen (Rohstring) hinzu, damit Python den Backslash nicht als \ interpretiert

Code: Alle auswählen

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")
um die Tragbarkeit zu verbessern

Code: Alle auswählen

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'))

Betreff: Verschieben der Desktopverknüpfung

Veröffentlicht: 23. November 2015 - 09:23 Uhr
von den Gälen
Vielen Dank! Ich werde es bald testen. Der zweite Code sollte auch unter XP funktionieren?

Betreff: Verschieben der Desktopverknüpfung

Veröffentlicht: 23. November 2015 - 11:30 Uhr
von den Gälen
Es scheint leider nicht zu funktionieren; die Verknüpfung befindet sich weiterhin auf dem Desktop. Könnte der Fehler dadurch verursacht werden, dass der Benutzer (Student) keine Schreibberechtigung für den Verknüpfungsordner hat?
Bild

Betreff: Verschieben der Desktopverknüpfung

Veröffentlicht: 23. November 2015 - 12:09 Uhr
von htouvet
Die Prozedur `install ext` wurde unter dem Systemkonto ausgeführt. Daher bestehen keine Berechtigungsprobleme.
Die Funktion `shutil.move` geht davon aus, dass das Zielverzeichnis nicht existiert.

Prüfen Sie daher, ob die Zieldatei existiert (`isfile`).
Prüfen Sie außerdem, ob der Ordner existiert; falls nicht, erstellen Sie ihn (`mkdirs`).

Betreff: Verschieben der Desktopverknüpfung

Veröffentlicht: 23. November 2015 - 12:39 Uhr
von den Gälen
Ich habe es endlich zum Laufen gebracht; der Befehl `makepath` fehlte in `isfile`. Unten ist der Code, der unter Windows 7 funktioniert (nicht unter XP getestet). Ich weiß nicht, ob der Deinstallationsschritt notwendig ist …?

Code: Alle auswählen

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);
Ich danke Ihnen für Ihre Hilfe!