[GELÖST] Erweiterte *.exe-Installation

Teilen Sie hier Ihre Tipps oder Probleme bezüglich der WAPT-Konsole oder des WAPT-Agenten mit
Forumregeln
Community-Forumregeln
* Englischer Support auf www.reddit.com/r/wapt
* Französischer Community-Support ist in diesem Forum verfügbar.
* Bitte kennzeichnen Sie gelöste Themen mit [GELÖST].
* Bitte bearbeiten Sie keine Themen, die mit [GELÖST] markiert sind. Erstellen Sie stattdessen ein neues Thema und verweisen Sie auf das alte.
* Geben Sie die installierte WAPT-Version, die vollständige Versionsnummer und die Build-Nummer (2.2.1.11957 / 2.2.2.12337 / usw.) sowie die Enterprise-/Discovery-Edition an.
* Versionen 1.8.2 und älter werden nicht mehr unterstützt. Fragen zu Version 1.8.2 werden nur beantwortet, wenn sie sich auf ein Upgrade auf eine unterstützte Version (2.1, 2.2 usw.) beziehen.
* Geben Sie das Server-Betriebssystem (Linux/Windows) und die Version (Debian Buster/Bullseye – CentOS 7 – Windows Server 2012/2016/2019) an.
* Geben Sie gegebenenfalls das Betriebssystem des Administrations-/Paketerstellungsrechners und des Rechners mit dem problematischen Agenten an (Windows 7/10/11/Debian 11/etc.).
* Vermeiden Sie es, mehrere Fragen in einem Thema zu stellen, da diese sonst möglicherweise ignoriert werden. Falls mehrere Themen relevant sind, erstellen Sie bitte separate Themen, vorzugsweise nacheinander und nicht gleichzeitig (d. h. vermeiden Sie Spam im Forum).
* Fügen Sie Code-Snippets, Screenshots und andere Bilder direkt in Ihren Beitrag ein. Links zu Pastebin, Bitly und anderen Drittanbieterseiten werden systematisch entfernt.
* Wie in jedem Community-Forum erfolgt die Unterstützung freiwillig durch die Mitglieder. Für kommerziellen Support kontaktieren Sie bitte den Vertrieb von Tranquil IT unter +44 2 40 97 57 55.
Mitarbeiter
Nachrichten: 79
Anmeldung: 15. Januar 2018 – 20:59 Uhr

18. April 2018 – 14:15 Uhr

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')
Zuletzt bearbeitet von embilly am 25. April 2018 um 13:38 Uhr, 1 Mal bearbeitet.
Benutzeravatar
htouvet
WAPT-Experte
Nachrichten: 436
Anmeldung: 16. März 2015 - 10:48 Uhr
Kontakt:

18. April 2018 – 16:02 Uhr

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'))
Ruhige IT
Mitarbeiter
Nachrichten: 79
Anmeldung: 15. Januar 2018 – 20:59 Uhr

18. April 2018 – 16:56 Uhr

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"'))
Benutzeravatar
htouvet
WAPT-Experte
Nachrichten: 436
Anmeldung: 16. März 2015 - 10:48 Uhr
Kontakt:

18. April 2018 – 17:35 Uhr

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...
Ruhige IT
Mitarbeiter
Nachrichten: 79
Anmeldung: 15. Januar 2018 – 20:59 Uhr

19. April 2018 - 00:34 Uhr

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.
Mitarbeiter
Nachrichten: 79
Anmeldung: 15. Januar 2018 – 20:59 Uhr

19. April 2018 – 17:43 Uhr

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
Benutzeravatar
htouvet
WAPT-Experte
Nachrichten: 436
Anmeldung: 16. März 2015 - 10:48 Uhr
Kontakt:

19. April 2018 – 19:26 Uhr

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!')
Ruhige IT
Mitarbeiter
Nachrichten: 79
Anmeldung: 15. Januar 2018 – 20:59 Uhr

20. April 2018 – 13:34 Uhr

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?
Mitarbeiter
Nachrichten: 79
Anmeldung: 15. Januar 2018 – 20:59 Uhr

23. April 2018 – 16:03 Uhr

Gibt es Rückmeldungen zu meiner letzten Frage?
Benutzeravatar
htouvet
WAPT-Experte
Nachrichten: 436
Anmeldung: 16. März 2015 - 10:48 Uhr
Kontakt:

23. April 2018 - 23:05 Uhr

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 …“
Ruhige IT
Gesperrt