Pregunta

Estoy usando el VS2008 instalador (más una costumbre Orca acción) para crear un instalador para mi .Producto NETO.

Hace poco me enteré de que uno de los terceros asambleas yo estaba usando es x86-específico (ya que incluye algunas código nativo);por lo tanto, x64 clientes estaban recibiendo se bloquea en el inicio con errores acerca de la asamblea a no ser apropiado para su plataforma.

He enviado un cliente una copia de la versión x 64 de esta tercera parte de la asamblea, y le dijo que se acaba de copiar por la existencia de x86.Se trabajó, dulce!Así que ahora sólo tengo que hacer el instalador de hacer esto por mí.

De hecho, esto parece trivial :(.Idealmente, sólo quiero que el instalador (que sería x86, ya que se pueden ejecutar en ambas plataformas) para incluir tanto a las versiones x86 y x64 de esta tercera parte de la asamblea, y instalar el apropiado.En otras palabras, quiero un solo instalador que hace mi la vida de los usuarios fácil.

Pensé que tenía esto, el uso de MSI instrucciones condicionales y todo eso.Pero al parecer no...el VS2008 proyectos de instalación no se compilará a menos que se especifique "x86" o "x64." Si especifica x86, da un error de compilación diciendo que no puede incluir el 64 asamblea.Si especifica x64, entonces el resultado no puede ser ejecutado en un ordenador x86.Maldita sea!

Alguien debe haber tenido este problema antes.Lamentablemente Google es ineficiente, por lo que me dirijo a StackOverflow!

¿Fue útil?

Solución

Si lo entiendo correctamente, usted desea hacer una copia de un archivo si usted está instalando en x86 y archivo diferente (con el mismo nombre) si se va a instalar en una plataforma x64.

Primero de todos, usted puede crear una MSI para 2 plataformas diferentes, desde una x64 MSI simplemente no se ejecuta en una plataforma x86 y x86 MSI será instalado usando WOW64 en una plataforma x64.

Por otro lado, PUEDE crear uno x86 MSI que contiene 2 diferentes versiones de un archivo y copie el adecuado archivo durante la instalación.

La forma más sencilla es usando WIX (V3) en lugar de la acumulación en VS2008 MSI generador.WIX te da un mayor control sobre lo que se instala en el equipo del cliente y donde, la capacidad para generar instaladores diferentes para diferentes plataformas y lleno de MSBuild de apoyo, como un bono adicional.(ver http://wix.sourceforge.net para obtener más información.)

En caso de que si usted se está preguntando que WIX está todavía en versión Beta, la que genera archivos MSI están perfectamente bien y nunca me encontré con un error todavía.(Y puedo desarrollar proyectos de instalación para vivir.)

Finalmente, se puede comprobar con el VersionNT64 propiedad si un x86 programa de instalación se ejecute en una plataforma x64.Si está presente, está ejecutando x64, de lo contrario se está ejecutando en un x86.

Espero que esto ayude.

Otros consejos

Cuando miré en esto hace un año, llegué a la conclusión de que no era posible.Vale la pena señalar que muchos suministrado por Microsoft MSI archivos vienen en diferentes x86 y x64 sabores-y, presumiblemente, que sólo había de entregar un solo archivo si es que eso fuera posible.

He tenido algo de éxito mediante el uso de dos funciones de forma selectiva incluyen los dos conjuntos de archivos (en componentes separados, por supuesto, con su plan individual de identificadores de archivo!).

La instalación debe ser marcado como x32 para instalar en ambos x32 y x64.Siempre instale el x32 directorios y en gran parte va a ser tratado como una aplicación de 32 bits que se ejecuta bajo WOW.

El uso de la VersionNT64 propiedad puede determinar si un Windows de 64 instalación está presente, y condicionalmente instalar los archivos que usted necesita.

No estoy seguro de cuánto de esta funcionalidad está disponible en VS2008 instalar proyectos - estoy utilizando algunas otras herramientas comerciales para configurar el instalador de esta manera.Por supuesto, usted puede utilizar Orca para hacerlo también, aunque no era trivial para llegar a trabajar con herramientas comerciales y de Orca es mucho más difícil.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top