Seite 2 von 2
Betreff: Mblock Setup.py
Veröffentlicht: 29. Dez. 2017 - 12:31 Uhr
von Sfonteneau
Code: Alle auswählen
sfonteneau, pour éviter de perdre du temps et faire ça bien, peux-tu nous aider dans la rédaction du session_setup STP?
Wenn Sie eine Methode haben, die immer funktioniert, ja, dann kann ich das..

Aber im Moment ist es noch etwas unklar
Die einfachste Lösung in diesem Fall wäre, einen Entwickler zu kontaktieren:
http://www.mblock.cc/contactus/
Meiner Meinung nach wird es letztendlich darauf hinauslaufen, dass die Software die Systemsprache beim ersten Start erkennt

und diese Sprache beim Systemstart als Standardsprache festlegen.
Ich habe diesbezüglich bereits einige Anwendungsentwickler kontaktiert, und diese sind recht aufgeschlossen.
Wie du willst !
Betreff: Mblock Setup.py
Veröffentlicht: 29. Dez. 2017 - 14:34 Uhr
von Myosotis
Dies beinhaltet das Kopieren einer in Französisch formatierten Datei aus dem Verzeichnis /com.makeblock.Scratch3.4.11/Local Store in das Verzeichnis AppData/Roming/ jedes Benutzers
und die Sicherstellung, dass sie auch für den interaktiven bzw. aktuellen Benutzer in Französisch funktioniert.
Betreff: Mblock Setup.py
Veröffentlicht: 29. Dez. 2017 - 17:18 Uhr
von Sfonteneau
myosotis schrieb: ↑29. Dez. 2017 - 14:34 Uhr
Es geht darum, eine in Französisch formatierte Datei namens /com.makeblock.Scratch3.4.11/Local Store in das Verzeichnis AppData/Roming/ jedes Benutzers zu kopieren
und sicherzustellen, dass sie auch für den aktuellen Benutzer auf Französisch funktioniert.
Zum Teil:
myosotis schrieb: ↑29. Dez. 2017 - 14:34 Uhr
Bitte stellen Sie außerdem sicher, dass es sowohl für interaktive als auch für aktuelle Benutzer auf Französisch funktioniert.
Ich verstehe das nicht ganz.
Andererseits können Sie tatsächlich eine funktionierende com.makeblock.Scratch3.4.11 erstellen, diese während der def install() in einen Ordner auf dem Rechner kopieren und sie dann während der session_setup in umgekehrter Richtung in den %appdata%-Ordner des Benutzers kopieren.
Die nächste Frage ist, was zu tun ist, wenn der Ordner „com.makeblock.Scratch3.4.11“ bei der Sitzungseinrichtung bereits existiert. Soll er überschrieben werden, auch wenn der Benutzer seine Einstellungen bereits konfiguriert hat? Oder soll er einfach überschrieben werden?
https://dev.tranquil.it/sphinxdocs/sour....copytree2
Betreff: Mblock Setup.py
Veröffentlicht: 29. Dez. 2017 - 18:12 Uhr
von Myosotis
Ich versuche, Ihnen meinen Code so schnell wie möglich zu kopieren. Vielen Dank für Ihre Hilfe.
Ich habe copytree2 bereits ausprobiert. Es funktioniert mit einem Pfad, der nicht relativ zum Benutzerpfad ist (ich mache das als Voraussetzung, da session setup() den Zugriff auf eine im Paket enthaltene Datei oder einen Ordner verhindert; daher kopiere ich meinen Quellcode aus dem Paket in einen Ordner in ProgramData und versuche dann darauf zuzugreifen ... bisher ohne Erfolg).
Das Überschreiben des persönlichen Ordners in AppData ist keine Option. In unserer Produktionsumgebung wird Benutzern nicht empfohlen, lokal zu speichern.
Beim erneuten Lesen Ihrer Nachricht habe ich den Eindruck, dass der Fokus nicht auf dem Benutzer, sondern auf AppData liegen sollte. Vielleicht liegt da mein Fehler ...?!
Betreff: Mblock Setup.py
Veröffentlicht: 31. Dez. 2017 - 16:06 Uhr
von Myosotis
Code: Alle auswählen
# -*- coding: utf-8 -*-
from setuphelpers import *
# Importation des fichiers de personalisation
copytree2(r'Perso',r'C:\ProgramData\mBlock') #Import du dossier fourni dans le paquet
filecopyto(r'Copy.cmd',r'C:\ProgramData\mBlock') #Import d'un fourni egalement avec le paquet
key = "{1E9DFEBB-4088-4693-A521-C755318BD492}_is1"
uninstallkey = ['{1E9DFEBB-4088-4693-A521-C755318BD492}_is1']
#Creation d'un targetdir en faisant usage de user_appdata qui selon la doc renvoit à /userX/appdata/roaming/
targetdir = makepath(user_appdata(),'com.makeblock.Scratch3.4.11')
print targetdir # ça c'est pour moi ;) - ca m'affiche bien le dossier souhaité... malheureusement l'exploit est nulle
#uninstallstring = [r' ""C:\Program Files (x86)\mBlock\unins000.exe" /SILENT {1E9DFEBB-4088-4693-A521-C755318BD492}_is1']
def install():
versionpaquet = control['version'].split('-',1)[0]
print('Importation de drivers')
with disable_file_system_redirection():
run('regedit.exe /s usbserial_arduino.reg')
run(r'"%s" /VERYSILENT' % makepath('drivers','Driver_for_Windows.exe'))
print('Installation de util-mblock')
install_exe_if_needed("mBlock_win_V"+versionpaquet+".exe",
silentflags="/VERYSILENT",
key=key,
min_version=versionpaquet,
killbefore="mBlock.exe")
#suppression de la clé de désinstallation pour pouvoir faire une désinstallation silencieuse. Voir def uninstall():
#uninstallkey.remove(key) # FONCTION pas dispo dans Setuphelpers v1.3.5
#suppression du raccourci bureau
#remove_desktop_shortcut('mBlock')
print "Post installation"
lang = makepath(targetdir)
if not isdir(lang):
os.makedirs(lang)
copytree2('Perso','targetdir') #Tentative d'import de com.makeblock.Scratch3.4.11 via fonction copytree2 + user_appdata() : Resultat non probant
session_setup()
def uninstall():
print('Désinstallation de util-mblock')
run(r'"%s\unins000.exe" /VERYSILENT' % install_location(key))
def session_setup():
targetdir = makepath(user_appdata(),'com.makeblock.Scratch3.4.11')
if not isdir(targetdir):
print('creation du dossier com.makeblock.Scratch3.4.11')
mkdirs(makepath(user_appdata(),'com.makeblock.Scratch3.4.11'))
#copytree2('C:\ProgramData\mBlock','targetdir')
run(r'C:\ProgramData\mBlock\Copy.cmd')
#ci-dessus vs avez mes 2 tentatives : (1) via copytree2;, l'autre via le run d'un cmd que j'ai essayé de runner pour injecter les fichiers adéquats. Ni l'une, ni l'autre des méthodes ne fonctionnent.
else:
#remove_file(makepath(user_appdata(),'com.makeblock.Scratch3.4.11'))
#copytree2('C:\ProgramData\mBlock','targetdir')
run(r'C:\ProgramData\mBlock\Copy.cmd')
#copytree2(r'C:\ProgramData\mBlock',r'%USERPROFILE%\AppData\Roaming')
#Personalisation de mblock pour l'interactive User - Alternative try
run(r'"Copy.cmd"')
+ Kopie meiner Befehlszeile
Code: Alle auswählen
if not exist C:\Users\%username%\AppData\Roaming\com.makeblock.Scratch3.4.11 mkdir C:\Users\%username%\AppData\Roaming\com.makeblock.Scratch3.4.11
xcopy C:\ProgramData\mBlock\com.makeblock.Scratch3.4.11 C:\Users\%username%\AppData\Roaming\com.makeblock.Scratch3.4.11 /E /C /Y
...es funktioniert nicht... genauso wenig wie mit %appdata%
:'( .... Können wir nicht auf die App-Daten des aktuellen Benutzers zugreifen, während ein Paket bereitgestellt wird?
Betreff: Mblock Setup.py
Veröffentlicht: 31. Dez. 2017 - 18:15 Uhr
von Sfonteneau
myosotis schrieb: ↑31. Dez. 2017 - 16:06 Uhr
Können wir nicht mit den App-Daten des aktuellen Benutzers interagieren, während ein Paket bereitgestellt wird?
Es ist möglich, aber komplizierter; die Einrichtung einer Sitzung vereinfacht die Sache:
Code: Alle auswählen
# -*- coding: utf-8 -*-
from setuphelpers import *
uninstallkey = []
key = "{1E9DFEBB-4088-4693-A521-C755318BD492}_is1"
profil_name = 'com.makeblock.Scratch3.4.11'
profil_mblock_appdata = makepath('c:','ProgramData','mblock',profil_name)
profil_mblock = makepath(application_data(),profil_name)
def install():
versionpaquet = control['version'].split('-',1)[0]
print('Importation des drivers')
with disable_file_system_redirection():
run('regedit.exe /s usbserial_arduino.reg')
run(r'"%s" /VERYSILENT' % makepath('drivers','Driver_for_Windows.exe'))
print('installing aiz-mblock')
install_exe_if_needed("mBlock_win_V"+versionpaquet+".exe",
silentflags="/VERYSILENT",
key=key,
min_version=versionpaquet,
killbefore="mBlock.exe")
#suppression de la clé de désinstallation pour pouvoir faire une désinstallation silencieuse. Voir def uninstall():
uninstallkey.remove(key)
#suppression du raccourci bureau
remove_desktop_shortcut('mBlock')
if isdir(profil_mblock_appdata):
remove_tree(profil_mblock_appdata)
copytree2(profil_name,profil_mblock_appdata)
def session_setup():
if isdir(profil_mblock):
remove_tree(profil_mblock)
copytree2(profil_mblock_appdata,profil_mblock)
def uninstall():
print('uninstalling aiz-mblock')
run(r'"%s\unins000.exe" /VERYSILENT' % install_location(key))
Das Profil "com.makeblock.Scratch3.4.11" wird beim nächsten Login überschrieben.
Auf diese Weise funktioniert es einwandfrei, selbst wenn das Benutzerprofil noch nicht existiert!
Vergessen Sie nicht, die Paketversionsnummer nach jeder Änderung an den Sitzungseinstellungen zu erhöhen!
Betreff: Mblock Setup.py
Veröffentlicht: 9. Januar 2018 - 16:11 Uhr
von Myosotis
Hallo sfonteneau,
nach mehreren Tests und Versuchen ist es uns immer noch nicht gelungen, auf die App-Daten des Benutzers zuzugreifen, der das Paket heruntergeladen hat; kurz gesagt, das ursprüngliche Ziel wurde nicht erreicht.
Der vorgeschlagene Mechanismus, implementiert über session_setup(), funktioniert jedoch, und daher ist die Software nach dem erneuten Öffnen der Sitzung auf Französisch.
Abschließend schlage ich eine kleine Änderung an Ihrem hervorragenden Skript vor: Ändern Sie die Variable profil_mblock_appdata. Da sie dann im Rohmodus verwendet wird, war es notwendig, sie wie folgt zu definieren: profil_mblock_appdata = makepath('c:\\', 'ProgramData', 'mblock', profil_name).
Beste Grüße! Vielen Dank für Ihre Hilfe. Meiner Meinung nach ist das Problem gelöst. Es wurden einige Einschränkungen erreicht.
Betreff: Mblock Setup.py
Veröffentlicht: 9. Januar 2018 - 19:20 Uhr
von Sfonteneau
myosotis schrieb: ↑9. Januar 2018 - 16:11 Uhr
Abschließend schlage ich eine kleine Änderung an Ihrem hervorragenden Skript vor: Die Variable `profil_mblock_appdata` sollte angepasst werden. Da sie im Rohformat verwendet wird, war es notwendig, sie wie folgt zu definieren: `profil_mblock_appdata = makepath('
c:\\','ProgramData','mblock',profil_name)`
Hier gibt es keine Probleme, welche Version von Wapt verwenden Sie?
myosotis schrieb: ↑9. Januar 2018 - 16:11 Uhr
Einige Grenzen wurden erreicht.
Wenn Sie diesen Ordner während der Installation wirklich kopieren möchten, müssen Sie etwa so vorgehen:
Code: Alle auswählen
for locprof in local_users_profiles():
if isdir(makepath(locprof,'AppData','Roaming',profil_name)):
remove_tree(makepath(locprof,'AppData','Roaming',profil_name))
copytree2(profil_name,makepath(locprof,'AppData','Roaming',profil_name))
Bedeutet das also, dass der aktuell laufende mblock gestoppt wird?