none
MSI Installer Error, problem with VSTO file RRS feed

  • Pregunta

  • Tengo creado un instalador MSI para un Add-In de Outlook. El mismo lo genere desde visual studio agregando todos los archivos de la publicación del proyecto Add-In y agregando una custom action que ejecute el .Exe en la instalación del MSI (El .Exe se encuentra en la carpeta de instalación que crea el MSI). El MSI ejecute el .Exe  para iniciar la instalación del Add-In pero me salta el siguiente error:

    Name: 
    From: file:///C:/Program Files (x86)/Default Company Name/SetupAddin/AddInTicketsMP.vsto

    ************** Exception Text **************
    System.IO.FileNotFoundException: The system cannot find the file specified. (Exception from HRESULT: 0x80070002)

    Lo raro es que dentro de la carpeta si existe el archivo, incluso si después de terminar la instalación del MSI ejecuto manualmente el .Exe la instalación se hace sin problemas. En pocas palabras el problema salta solo cuando el MSI ejecuta el Exe.



    • Editado Enzzzz viernes, 20 de septiembre de 2019 13:00
    viernes, 20 de septiembre de 2019 12:58

Respuestas

  • Ojo con los temas de "x86". Acuérdate de la virtualización de carpetas que hacen las versiones modernas de Windows, de manera que los programas de 32 bits "ven" distintas carpetas que los programas de 64 bits. Si tu .exe es un programa de .Net compilado como "Any CPU", puede ser que se esté ejecutando en 32 bits cuando lo lanza msiexec, y que ruede en 64 bits cuando lo ejecutas a mano (o a la inversa). Esto haría que no siempre vea los mismos ficheros en disco.
    • Propuesto como respuesta Pablo RubioModerator viernes, 20 de septiembre de 2019 14:34
    • Marcado como respuesta Enzzzz lunes, 23 de septiembre de 2019 13:46
    viernes, 20 de septiembre de 2019 13:41

Todas las respuestas

  • Ojo con los temas de "x86". Acuérdate de la virtualización de carpetas que hacen las versiones modernas de Windows, de manera que los programas de 32 bits "ven" distintas carpetas que los programas de 64 bits. Si tu .exe es un programa de .Net compilado como "Any CPU", puede ser que se esté ejecutando en 32 bits cuando lo lanza msiexec, y que ruede en 64 bits cuando lo ejecutas a mano (o a la inversa). Esto haría que no siempre vea los mismos ficheros en disco.
    • Propuesto como respuesta Pablo RubioModerator viernes, 20 de septiembre de 2019 14:34
    • Marcado como respuesta Enzzzz lunes, 23 de septiembre de 2019 13:46
    viernes, 20 de septiembre de 2019 13:41
  • Creo que viene por ahi el problema. Como podria controlar esto? Deberia cambiar el compilado de 'Any CPU'?

    Muchas gracias por tu respuesta.

    viernes, 20 de septiembre de 2019 17:39
  • La última vez que me pasó esto, el problema era que tenía marcada la casilla de "Prefer 32 bits" y entonces el programa se ejecutaba en 32 bits pese a que compilaba para AnyCPU y el sistema era de 64 bits, y entonces no me encontraba los ficheros en la ruta de 64. En tu caso el problema puede que sea el contrario, si es que los ficheros los tienes en la ruta de 32. En cualquier caso, es fácil hacer las dos pruebas, cambiándolo para que compile en x86 o en x64.
    viernes, 20 de septiembre de 2019 19:52