Página 1 de 2

[RESUELTO] Problema con install_msi_if_needed y el archivo msix

Publicado: 9 de noviembre de 2023 - 15:24
por t.heroult
Buen día
Quiero desarrollar un paquete para el nuevo MS-TEAMS que se proporciona como msix.

Pero cuando intento un simple install_msi_if_needed('MSTeams-x86.msix') en pyscripter, obtengo este resultado:

Código: Seleccionar todo

2023-11-09 15:13:13,714 CRITICAL Fatal error in install script: MSIError: open failed:
Traceback (most recent call last):
  File "C:\Program Files (x86)\wapt\common.py", line 4083, in install_wapt
    exitstatus = setup.install()
  File "c:\waptdev\ln-msteams-x86_0.0.0_Windows_PROD\setup.py", line 16, in install
    install_msi_if_needed('MSTeams-x86.msix')
  File "C:\Program Files (x86)\wapt\common.py", line 4033, in new_func
    return func(*args, **kwargs)
  File "C:\Program Files (x86)\wapt\setuphelpers_windows.py", line 1379, in install_msi_if_needed
    key = get_msi_properties(msi)['ProductCode']
  File "C:\Program Files (x86)\wapt\setuphelpers_windows.py", line 2825, in get_msi_properties
    db = msilib.OpenDatabase(msi_filename, msilib.MSIDBOPEN_READONLY)
_msi.MSIError: open failed

FATAL ERROR : MSIError: open failed
Exit code:  3
¿Alguna idea de lo que está pasando?

Re: Problema con install_msi_if_needed y el archivo msix

Publicado: 9 de noviembre de 2023 - 17:50
por dcardon
Hola Thomas,

me parece que el formato msix tiene muy poco que ver con el formato msi. La biblioteca msilib, que se usa subyacentemente a la función install_msi_if_needed, aparentemente no lo maneja.

Por ahora, tendremos que ejecutarlo con algo como run(), creo...

Denis

Re: Problema con install_msi_if_needed y el archivo msix

Publicado: 10 de noviembre de 2023 - 09:08
por t.heroult
Lo entiendo, pero lo inconsistente es que desde la consola, inicié el asistente para crear paquetes nuevos, la primera opción ofrecía msi, msix y exe, y después de seleccionar msix, PyScripter se abre con la línea `install_msi_if_needed` ya creada.
Esto debe revisarse si la función no puede manejar archivos msix.

Re: Problema con install_msi_if_needed y el archivo msix

Publicado: 10 de noviembre de 2023 - 10:54 a. m.
por t.heroult
Por lo tanto, no veo cómo instalar MSIX con WAPT.
La forma más sencilla normalmente sería usar PowerShell con Add-AppxPackage, excepto que esta operación no es posible con la cuenta LOCAL SYSTEM que usa WAPT...

Re: Problema con install_msi_if_needed y el archivo msix

Publicado: 10 de noviembre de 2023 - 11:01 a. m.
por sfonteneau
De hecho, acabo de ver que msix está codificado en waptconsole

Vamos a eliminar la referencia; es un error histórico

Mientras tanto, puedes probar algo como esto:

Código: Seleccionar todo


def install():
    filecopyto('MyApp.msix','c:\MyApp.msix')

def session_setup():
    run(r'powershell Add-AppPackage -path "c:\MyApp.msix"')

Re: Problema con install_msi_if_needed y el archivo msix

Publicado: 10 de noviembre de 2023 - 11:42 a. m.
por t.heroult
Hola Simon
, como mencioné en mi comentario anterior, no funciona.
Al menos, funciona en PyScripter, ya que se ejecuta con mi cuenta, pero el agente WAPT se ejecuta con la cuenta SYSTEM LOCAL, que no tiene permiso para ejecutar "PowerShell Add-AppxPackage". Esto está prohibido por Windows, y lo mismo ocurre con Add-AppPackage.

Re: Problema con install_msi_if_needed y el archivo msix

Publicado: 10 de noviembre de 2023 - 12:35 p. m.
por sfonteneau
Pero en mi ejemplo es un session_setup, por lo tanto no es un sistema, entonces tampoco funciona?

Re: Problema con install_msi_if_needed y el archivo msix

Publicado: 10 de noviembre de 2023 - 12:41
por t.heroult
No sé cuál sería el resultado en session_setup...
Lo probaré y veré.

¡Más información después!

Re: Problema con install_msi_if_needed y el archivo msix

Publicado: 10 de noviembre de 2023 - 15:04
por t.heroult
Comentarios negativos, no pasa nada.
El comando utilizado es: powershell Add-AppPackage -Path "C:\Software\bin\MSTeams-x64.msix"
Lanzado por session_setup: no pasa nada
Lanzado desde una ventana de PowerShell (usuario estándar): funciona...

Código: Seleccionar todo


def session_setup():
    cmd = 'powershell Add-AppPackage -Path "C:\Logiciels\bin\MSTeams-x64.msix"'
    run(cmd)

Re: Problema con install_msi_if_needed y el archivo msix

Publicado: 10 de noviembre de 2023 - 15:42
por sfonteneau
Hmm, ¿la 'r' antes de la cadena?

¿O debería usar la ruta completa:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe?