Seite 1 von 2

[GELÖST] Erweiterte *.exe-Installation

Veröffentlicht: 18. April 2018 – 14:15 Uhr
von Empbilly
Hallo Web-Nutzer, :D

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?

Code: Alle auswählen

wapt-get list-registry miktex
Betrachten wir https://tex.stackexchange.com/questions ... miktex-2-9Es sieht so aus, als ob die Deinstallation mit folgender Methode möglich ist:

Code: Alle auswählen

uninstall_admin.exe
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

Code: Alle auswählen

Removed: cti_srt-miktexErrors: cti_srt-miktex
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.

Code: Alle auswählen

miktexsetup uninstall
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! :D

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 …“