2010-03-17 7 views
6

Usando el instalador Inno, distribuimos el VC++ redistributable con nuestra aplicación para que podamos ejecutarlo automáticamente. Descubrimos que ejecutarlo en un sistema donde ya está instalado nos pide que reparemos/deshagamos la instalación, lo que confundirá por completo a los usuarios.Distribuir VC++ Redist ... ejecutar el instalador cuando ya está instalado causa problemas

¿Hay alguna forma de evitar esto? Tal vez una bandera en el instalador o algo así?

Gracias.

Respuesta

4

Prueba el/q bandera http://support.microsoft.com/kb/227091 (asumiendo que usted está llamando a través de instalarlo en su msiexec.exe redistribuible)

+1

Estamos instalando vcredist_x86.exe desde aquí: http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en. ¿Tu respuesta aún es aplicable? –

+2

Si/q no lo hace, intente/Q: a /c:"msiexec.exe/qb/i vcredist.msi " Vea http://jrsoftware.innosetup.free-usenet.eu/Microsoft-Visual -C-2008-Redistributable-Files-via-Inno-setup_T46582950_S1 –

1

This thread resuelto mis problemas:

(tomado del comentario en la otra respuesta)

3

Por alguna razón, ninguna de las respuestas anteriores trabajó para mí. Esto hizo, sin embargo:

[Run] 
Filename: {tmp}\vcredist_x86.exe; Parameters: "/passive /Q:a /c:""msiexec /qb /i vcredist.msi"" "; StatusMsg: Installing 2010 RunTime... 
[Files] 
Source: vendor/vcredist_x86.exe; DestDir: {tmp} 

me dio la pista para que mediante la ejecución de vcredist_x86.exe/?, como se indica en la parte inferior de este hilo: http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/a8d4d5b4-7927-4c86-95e8-3cd8b3018ae8/

Como nota adicional, otra posible opción para la redistribución es solo un enlace estático en contra de (su versión de) el msvcrt ver comentarios en http://blogs.msdn.com/b/vcblog/archive/2007/10/12/how-to-redistribute-the-visual-c-libraries-with-your-application.aspx (aunque MS aparentemente frunce el ceño en este tipo de enlace estático, al menos no necesitará un dll).

Distributing the Visual C++ Runtime Libraries (MSVCRT) también puede ser útil.

También tenga en cuenta que si puede garantizar que tendrá el control, puede simplemente incluir msvcr100.dll en el mismo directorio que su ejecutable y que también funcionaría, aunque no es una solución muy estándar.

+0

¿no bastaría simplemente con 'vcredist_x86.exe/q/norestart'? (Eso es '/ quiet/norestart' para VS2012 por cierto) – stijn

Cuestiones relacionadas