Seite 1 von 2
[GELÖST] Erweiterte *.exe-Installation
Veröffentlicht: 18. April 2018 – 14:15 Uhr
von Empbilly
Hallo Web-Nutzer,
Ich verwende eine benutzerdefinierte setup.py-Datei für die Installation der MikTeX-Software, kann sie aber nach der Installation nicht über wapt deinstallieren.
Ist für den unten stehenden Code eine zusätzliche Konfiguration erforderlich?
Code: Alle auswählen
# -*- coding: utf-8 -*-
from setuphelpers import *
uninstallkey = []
def install():
print('installing miktex v.2.9')
install_exe_if_needed("basic-miktex-2.9.6643-x64.exe",
silentflags="--shared --unattended"
key='MiKTeX 2.9')
Betreff: Erweiterte *.exe-Installation
Veröffentlicht: 18. April 2018 – 16:02 Uhr
von htouvet
Nach der Installation Ihres Pakets, was ist die Ausgabe des cmd-Befehls?
Betrachten wir
https://tex.stackexchange.com/questions ... miktex-2-9Es sieht so aus, als ob die Deinstallation mit folgender Methode möglich ist:
Befehl.
Sie könnten diesen Befehl also in einer uninstall()-Funktion in Ihrem Paket verwenden.
Etwa so:
Code: Alle auswählen
def uninstall():
run(makepath(programfilesx86,r'MiKTeX 2.9\miktex\bin\x64\internal\uninstall_admin.exe --unattended'))
Betreff: Erweiterte *.exe-Installation
Veröffentlicht: 18. April 2018 – 16:56 Uhr
von Empbilly
Nach der Installation Ihres Pakets, was ist die Ausgabe des cmd-Befehls?
Code: Alle auswählen
C:\Users\carinha>wapt-get list-registry miktex
UninstallKey Software
Version Uninstallstring
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
---------------------------------------
MiKTeX 2.9 MiKTeX 2.9
2.9 "C:\Program Files\MiKTeX 2.9\mi
ktex/bin/x64/internal\copystart_admin.exe" "C:\Program Files\MiKTeX 2.9\miktex/b
in/x64/internal\uninstall_admin.exe"
Bei der Deinstallation von MikTeX wird angezeigt, dass alles in Ordnung ist, aber in der „Zusammenfassung“ erscheint
und auf dem Client-Rechner lässt sich Miktex nicht deinstallieren.
Wenn ich den Befehl manuell ausführe:
Code: Alle auswählen
C:\Program Files\MiKTeX 2.9\miktex\bin\x64\internal\uninstall_admin.exe --unattended
Das Fenster für die manuelle Deinstallation erscheint weiterhin und es passiert nichts Automatisches.
Es könnte so sein
Code: Alle auswählen
def uninstall():
run(makepath(programfilesx86,r'"MiKTeX 2.9\mi
ktex/bin/x64/internal\copystart_admin.exe" "C:\Program Files\MiKTeX 2.9\miktex/b
in/x64/internal\uninstall_admin.exe"'))
Betreff: Erweiterte *.exe-Installation
Veröffentlicht: 18. April 2018 – 17:35 Uhr
von htouvet
Sie müssen den passenden unbeaufsichtigten Schalter finden, an den Sie anhängen können
Code: Alle auswählen
C:\Program Files\MiKTeX 2.9\miktex\bin\x64\internal\uninstall_admin.exe
Damit es im Hintergrund läuft. Es könnte /s /SILENT --quiet -q sein oder vielleicht war es gar nicht für den Hintergrundbetrieb vorgesehen ...
Der registrierte Befehl scheint fehlerhaft zu sein, da Backslashes und Forward Slashes durcheinandergeraten sind...
Betreff: Erweiterte *.exe-Installation
Veröffentlicht: 19. April 2018 - 00:34 Uhr
von Empbilly
Laut dem Entwickler von MikTeX gibt es beim Installationsprogramm selbst nur die Möglichkeit zur Deinstallation über die Befehlszeile.
Morgen werde ich versuchen, es zu entfernen, indem ich wmic über cmd.exe ausführe oder rmdir in "C:\Program Files\MiKTeX 2.9" verwende.
Betreff: Erweiterte *.exe-Installation
Veröffentlicht: 19. April 2018 – 17:43 Uhr
von Empbilly
Ich habe es mit dem unten stehenden Code versucht, erhalte aber folgende Fehlermeldung:
Code: Alle auswählen
Coping miktexsetupx64.exe and miktexsetup.exe to MiKTeX 2.9 folder...
NameError: global name 'programfilesx86' is not defined
Code: Alle auswählen
# -*- coding: utf-8 -*-
from setuphelpers import *
uninstallkey = []
def install():
print('Coping miktexsetupx64.exe and miktexsetup.exe to MiKTeX 2.9 folder...')
filecopyto('miktexsetupx64.exe',makepath(programfilesx86,'MiKTeX 2.9'))
filecopyto('miktexsetup.exe',makepath(programfilesx86,'MiKTeX 2.9'))
if isfile(makepath(programfilesx86,'MiKTeX 2.9','miktexsetupx64.exe')):
print('Files copied successfully!')
print('Installing MiKTeX 2.9')
install_exe_if_needed("basic-miktex-2.9.6643-x64.exe", silentflags="--shared --unattended")
def uninstall():
print(u'Starting miktex uninstall...')
if iswin64():
print('Uninstalling x64 version')
run(makepath(programfilesx86,r'MiKTeX 2.9\miktexsetupx64.exe uninstall'))
else:
print('Uninstalling x86 version')
run(makepath(programfilesx86,r'MiKTeX 2.9\miktexsetup.exe uninstall'))
print(u'Uninstallation of MiKTeX 2.9 completed!')
Ich weiß nicht, ob der "filetocopy"-Teil so funktioniert, wie ich denke.
Ich habe die beiden Dateien miktexsetupx64.exe und miktexsetup.exe in den Paketordner kopiert, wie ich im folgenden Bild zeige:
https://image.ibb.co/k22rU7/wapt_pkg.png (Das img-Tag funktioniert nicht?!)
Ist das so?
Wie lässt sich das beheben? Wenn der Code fehlerhaft ist, können Sie dazu beitragen!

Betreff: Erweiterte *.exe-Installation
Veröffentlicht: 19. April 2018 – 19:26 Uhr
von htouvet
Das sieht gut aus
Ersetzen Sie einfach „programfilesx86“ in Ihrem Code durch „programfiles32“
Code: Alle auswählen
# -*- coding: utf-8 -*-
from setuphelpers import *
uninstallkey = []
def install():
print('Coping miktexsetupx64.exe and miktexsetup.exe to MiKTeX 2.9 folder...')
filecopyto('miktexsetupx64.exe',makepath(programfiles32,'MiKTeX 2.9'))
filecopyto('miktexsetup.exe',makepath(programfiles32,'MiKTeX 2.9'))
if isfile(makepath(programfiles32,'MiKTeX 2.9','miktexsetupx64.exe')):
print('Files copied successfully!')
print('Installing MiKTeX 2.9')
install_exe_if_needed("basic-miktex-2.9.6643-x64.exe", silentflags="--shared --unattended")
def uninstall():
print(u'Starting miktex uninstall...')
if iswin64():
print('Uninstalling x64 version')
run(makepath(programfiles32,r'MiKTeX 2.9\miktexsetupx64.exe uninstall'))
else:
print('Uninstalling x86 version')
run(makepath(programfiles32,r'MiKTeX 2.9\miktexsetup.exe uninstall'))
print(u'Uninstallation of MiKTeX 2.9 completed!')
Betreff: Erweiterte *.exe-Installation
Veröffentlicht: 20. April 2018 – 13:34 Uhr
von Empbilly
Ich habe das Skript ein wenig geändert.
Code: Alle auswählen
# -*- coding: utf-8 -*-
from setuphelpers import *
uninstallkey = []
destdir = makepath(programfiles32,'miktex_setup')
def install():
print('Coping miktexsetupx64.exe and miktexsetup.exe to MiKTeX 2.9 folder...')
mkdirs(destdir)
filecopyto('miktexsetupx64.exe',makepath(destdir,'miktexsetupx64.exe'))
filecopyto('miktexsetup.exe',makepath(destdir,'miktexsetup.exe'))
if isfile(makepath(programfiles32,'miktex_setup','miktexsetupx64.exe')):
print('Files copied successfully!')
print('Initializing installation of MiKTeX 2.9.')
install_exe_if_needed("basic-miktex-2.9.6643-x64.exe", silentflags="--shared --unattended")
def uninstall():
print(u'Starting miktex uninstall...')
if iswin64():
print('Uninstalling x64 version')
run(makepath(programfiles32,r'miktex_setup\miktexsetupx64.exe uninstall'))
remove_tree(destdir)
else:
print('Uninstalling x86 version')
run(makepath(programfiles32,r'miktex_setup\miktexsetup.exe uninstall'))
remove_tree(destdir)
print(u'Uninstallation of MiKTeX 2.9 completed!')
Beim Versuch, mkitex zu deinstallieren, treten die folgenden Fehler auf:
Starte MikTeX-Deinstallation...
Deinstallation der x64-Version
. Der 'ascii'-Codec kann Byte 0xc3 an Position 132 nicht dekodieren: Ordinalwert nicht im Bereich (128): Fehlerhafte Zeichenkette ist '"Command 'C:\\\\Program Files (x86)\\\\miktex_setup\\\\miktexsetupx64.exe uninstall' returned non-zero exit status 1.\nOutput:'C:\\Program' n\xc3\xa3o \xc3\xa9 reconhecido as an internal command\r\nou external, a program operation\xc3\xa1vel or an arquivo em lots.\r\n"'
Traceback (most recent call last):
File "c:\wapt\waptservice\waptservice.py", line 1151, in run
self.running_task.run()
File "c:\wapt\waptservice\waptservice_common.py", Zeile 405, in pwrapper
return func(*arg, **kwargs)
Datei "c:\wapt\waptservice\waptservice_common.py", Zeile 464, in run
self._run()
Datei "c:\wapt\waptservice\waptservice_common.py", Zeile 912, in _run
self.result = self.wapt.remove(self.packagename,force=self.force)
Datei "c:\wapt\common.py", Zeile 4377, in remove
logger.critical(u'Fehler beim Ausführen des Deinstallationsskripts: %s'%e)
UnicodeDecodeError: 'ascii'-Codec kann Byte 0xc3 an Position 132 nicht dekodieren: Ordinalwert nicht im Bereich (128)
Liegt der Fehler bei MikTeX oder bei Wapt?
Betreff: Erweiterte *.exe-Installation
Veröffentlicht: 23. April 2018 - 16:03 Uhr
von Empbilly
Gibt es Rückmeldungen zu meiner letzten Frage?
Betreff: Erweiterte *.exe-Installation
Veröffentlicht: 23. April 2018 - 23:05 Uhr
von htouvet
Hallo Empbilly,
Es gibt zwei Probleme...
Der erste Teil ist Ihr Code
Der zweite Code ist mein Code...
Da der Pfad des Programms, das Sie ausführen möchten, Leerzeichen enthält, erwartet cmd, dass Sie den Pfad in doppelte Anführungszeichen setzen.
Es erscheint also eine Meldung, die besagt, dass das Programm "c:\Program" nicht existiert.
So etwas wie...
Code: Alle auswählen
def uninstall():
print(u'Starting miktex uninstall...')
if iswin64():
print('Uninstalling x64 version')
run(ur'"%s" uninstall' % makepath(programfiles32,'miktex_setup','miktexsetupx64.exe'))
remove_tree(destdir)
else:
print('Uninstalling x86 version')
run(ur'"%s" uninstall' % makepath(programfiles32,'miktex_setup','miktexsetup.exe'))
remove_tree(destdir)
print(u'Uninstallation of MiKTeX 2.9 completed!')
könnte funktionieren.
Das zweite Problem ist, dass die Fehlermeldung nicht im Klartext-ASCII-Format vorliegt, sondern kodiert ist, und mein Code sie nicht korrekt dekodiert. Daher die Fehlermeldung: „Der 'ASCII'-Codec kann Byte 0xc3 nicht dekodieren …“