OCX-Registrierung

Fragen zu WAPT-Paketen / Anfragen und Hilfe bezüglich WAPT-Paketen.
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.
Gesperrt
Idaho
Nachrichten: 1
Anmeldung: 8. März 2018 - 9:15 Uhr

8. März 2018 - 09:47 Uhr

Hallo zusammen,

Ich habe WAPT in meiner Firmenumgebung installiert, um Software remote zu installieren, und bin sehr zufrieden. Mein Ziel ist es, Pakete für die gesamte von uns verwendete Software zu erstellen; allerdings gibt es sehr viele Programme, und einige sind sehr schlecht verpackt. Derzeit bereite ich ein Paket für SRIM 2013 vor ( http://www.srim.org/SRIM/SRIMLEGL.htm Die Software hat keinen Installer, benötigt aber dennoch registrierte OCX-Dateien, installierte DLLs und eine Schriftart, um korrekt zu funktionieren. Ich habe Lösungen für die Schriftart und die DLLs gefunden, aber die Registrierung der OCX-Dateien funktioniert – aus unbekannten Gründen – nicht mit dem Befehl `Regsvr32 /s`. Daher wende ich mich an Sie, um zu erfahren, ob jemand anderes das gleiche Problem mit der Registrierung von OCX-Dateien hatte und eine Lösung kennt. Meine Software startet zwar, aber einige Funktionen lassen sich aufgrund der fehlenden OCX-Dateien nicht ausführen



- WAPT Version 1.3.13 installiert
- Server-Betriebssystem: Linux Debian 9
- Betriebssystem des Administrations-/Paketerstellungsrechners: Windows 7

Ich teste folgenden Code, der leider nicht funktioniert. Die OCX-Dateien befinden sich korrekt im Stammverzeichnis des Pakets. Ich habe auch zuvor den Befehl Regsvr32 separat getestet, allerdings ohne Erfolg. :/

Code: Alle auswählen

r# -*- coding: utf-8 -*-
from setuphelpers import *

uninstallkey = []

targetdir = makepath(programfiles64,'SRIM 2013')
exename = 'SRIM.exe'

def install():
    print('installing pgip-srim2013')
    run(r'install.cmd')
    run(r'IF EXIST C:\Windows\SysWOW64 (C:\Windows\SysWOW64\regsvr32.exe /S COMCTL32.OCX) ELSE (C:\Windows\System32\regsvr32.exe  /S COMCTL32.OCX)')
    run(r'IF EXIST C:\Windows\SysWOW64 (C:\Windows\SysWOW64\regsvr32.exe /S COMDLG32.OCX) ELSE (C:\Windows\System32\regsvr32.exe /S COMDLG32.OCX)')
    run(r'IF EXIST C:\Windows\SysWOW64 (C:\Windows\SysWOW64\regsvr32.exe /S MSFLXGRD.OCX) ELSE (C:\Windows\System32\regsvr32.exe /S MSFLXGRD.OCX)')
    run(r'IF EXIST C:\Windows\SysWOW64 (C:\Windows\SysWOW64\regsvr32.exe /S TABCTL32.OCX) ELSE (C:\Windows\System32\regsvr32.exe /S TABCTL32.OCX)')
    run (r'IF EXIST C:\Windows\SysWOW64 (C:\Windows\SysWOW64\regsvr32.exe /S  RICHTX32.OCX) ELSE (C:\Windows\System32\regsvr32.exe /S RICHTX32.OCX)')
    register_windows_uninstall(control)

def uninstall():
    print('uninstalling pgip-srim2013')
    killalltasks(exename)
    killalltasks('SR.exe')
    if isdir(targetdir):
        remove_tree(targetdir)
    remove_file(r'C:\ProgramData\Microsoft\Windows\Start Menu\Programs\SRIM 2013.lnk')
    unregister_uninstall('pgip-srim2013')
Der Code für das Installationsskript (falls ich selbst eine Verknüpfung erstelle und nicht die von WAPT bereitgestellte Funktion verwende, liegt das daran, dass beim Starten der Software ein Fehler auftrat, der bei dieser Vorgehensweise nicht auftritt; ich verstehe ehrlich gesagt nicht, warum):

Code: Alle auswählen

@ECHO OFF
ECHO INSTALLING SRIM 2013
xcopy SRIM_2013 "C:\Program Files\SRIM 2013" /S /I
CLS
xcopy "SRIM 2013.lnk" "C:\ProgramData\Microsoft\Windows\Start Menu\Programs" /S /I
CLS
ECHO ADDING FONTS
addfonts.cmd
CLS
ECHO DONE
Der Code für das Schriftarten-Hinzufügeskript, den ich online gefunden habe, durchsucht im Grunde das Verzeichnis und fügt die darin enthaltenen Schriftartdateien im Hintergrund hinzu (schade, dass es so etwas nicht auch für diese verdammten OCX-Dateien gibt). Ich poste ihn hier hauptsächlich, weil er vielleicht einigen Leuten helfen könnte, die Pakete zur Installation von Schriftarten erstellen möchten

Code: Alle auswählen

REM http://www.msfn.org/board/topic/119612-how-to-install-a-font-via-the-command-line/

@ECHO OFF
TITLE Adding Fonts..
REM Filename: ADD_Fonts.cmd
REM Script to ADD TrueType and OpenType Fonts for Windows
REM By Islam Adel
REM 2012-01-16

REM How to use:
REM Place the batch file inside the folder of the font files OR:
REM Optional Add source folder as parameter with ending backslash and dont use quotes, spaces are allowed
REM example "ADD_fonts.cmd" C:\Folder 1\Folder 2\

IF NOT "%*"=="" SET SRC=%*
ECHO.
ECHO Adding Fonts..
ECHO.
FOR /F %%i in ('dir /b "%SRC%*.*tf"') DO CALL :FONT %%i
REM OPTIONAL REBOOT
REM shutdown -r -f -t 10 -c "Reboot required for Fonts installation"
ECHO.
ECHO Done!
EXIT

:FONT
ECHO.
REM ECHO FILE=%~f1
SET FFILE=%~n1%~x1
SET FNAME=%~n1
SET FNAME=%FNAME:-= %
IF "%~x1"==".otf" SET FTYPE=(OpenType)
IF "%~x1"==".ttf" SET FTYPE=(TrueType)

ECHO FILE=%FFILE%
ECHO NAME=%FNAME%
ECHO TYPE=%FTYPE%

COPY /Y "%SRC%%~n1%~x1" "%SystemRoot%\Fonts\"
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /v "%FNAME% %FTYPE%" /t REG_SZ /d "%FFILE%" /f
GOTO :EOF
Abschließend folgt hier der Inhalt des Paketverzeichnisses:

Code: Alle auswählen

 Répertoire de C:\waptdev\pgip-srim2013-wapt

08/03/2018  10:24    <REP>          .
08/03/2018  10:24    <REP>          ..
06/03/2018  15:53             1ÿ133 addfonts.cmd
23/05/2000  00:58           608ÿ448 ComCtl32.ocx
23/05/2000  00:58           140ÿ488 ComDlg32.ocx
08/03/2018  09:55               255 install.cmd
20/03/1996  06:00            80ÿ008 Linedraw.ttf
22/05/2000  22:58           244ÿ416 MSFlxGrd.ocx
09/03/2004  23:45           212ÿ240 RichTx32.ocx
07/03/2018  10:56             1ÿ322 setup.py
07/03/2018  10:57             1ÿ767 setup.pyc
06/03/2018  16:58             1ÿ331 SRIM 2013.lnk
06/03/2018  14:28    <REP>          SRIM_2013
30/08/2001  22:43           209ÿ192 TabCtl32.ocx
07/03/2018  08:48    <REP>          WAPT
              11 fichier(s)        1ÿ500ÿ600 octets
               4 R‚p(s)   1ÿ215ÿ844ÿ352 octets libres
Vielen Dank im Voraus für Ihre Antworten :)
Benutzeravatar
htouvet
WAPT-Experte
Nachrichten: 436
Anmeldung: 16. März 2015 - 10:48 Uhr
Kontakt:

9. März 2018 – 16:47 Uhr

Das Problem hängt höchstwahrscheinlich mit der automatischen Umschreibung von Systempfaden durch Windows im Falle einer 32-Bit-Anwendung auf einem 64-Bit-Windows-System zusammen.

WAPT ist 32-Bit, daher präsentiert Windows standardmäßig eine 32-Bit-„Sicht“ des Systems.
Um die Umleitung zu deaktivieren, müssen Sie den Kontext-Helper verwenden

Code: Alle auswählen

disable_file_system_redirection

Code: Alle auswählen

def install():
    with disable_file_system_redirection():
        run(r'...')
Damit OCX-Dateien registriert werden können, muss die setuphelpers-Funktion register_dll() funktionieren

Code: Alle auswählen

import winshell

def install():
    filecopyto('MY.OCX',makepath(winshell.get_folder_by_name('SYSTEMX86'),'MY.OCX'))
    register_dll(makepath(winshell.get_folder_by_name('SYSTEMX86'),'MY.OCX'))
        
Ruhige IT
Gesperrt