2009-09-29 66 views
9

Estoy haciendo una validación en mi instalador Inno Setup para verificar si hay una actualización de Microsoft instalada en la máquina; si no, mostraré un simple cuadro de mensaje que le dice al usuario que la actualización es obligatoria, esta es la código de mensaje:¿Cómo se muestra un hipervínculo en Inno Setup?

MsgBox(
    'Your system requires an update supplied by Microsoft. ' + 
    'Please follow this link to install it: ' + 
    'http://www.microsoft.com/downloads/details.aspx?FamilyID=1B0BFB35-C252-43CC-8A2A-6A64D6AC4670&displaylang=en', 
    mbInformation, MB_OK); 

Quiero hacer la URL de un hipervínculo a la página web, pero no he sido capaz de averiguar cómo, es posible que en la disposición de Inno para añadir texto como un hipervínculo?

Gracias.

Respuesta

13

La función MsgBox() en Inno Setup es un contenedor para la función estándar de Windows MessageBox(), que AFAIK no admite enlaces incrustados, por lo que no es posible mostrar simplemente el enlace allí.

Lo que podría hacer, sin embargo, es notificar al usuario que la actualización es necesaria y preguntarle si desea abrir el enlace en el navegador predeterminado. Algo así como:

function InitializeSetup(): Boolean; 
var 
    ErrCode: integer; 
begin 
    if MsgBox('Your system requires an update supplied by Microsoft. Would you like to visit the download page now?', mbConfirmation, MB_YESNO) = IDYES 
    then begin 
    ShellExec('open', 'http://www.microsoft.com/downloads/details.aspx?FamilyID=1B0BFB35-C252-43CC-8A2A-6A64D6AC4670&displaylang=en', 
     '', '', SW_SHOW, ewNoWait, ErrCode); 
    end; 
    Result := False; 
end; 

Este código se abortará la instalación, pero se puede crear una página personalizada en lugar que comprueba si la actualización se ha instalado, y por otra parte impide la navegación a la página siguiente. Sin embargo, esto solo funcionaría si la actualización se puede instalar sin un reinicio del sistema.

+1

La respuesta proporcionada funciona bien en Windows 7 pero no en Windows 8 (al menos no con mi configuración). Tuve que cambiar 'ShellExec' por' ShellExecAsOriginalUser'. –

+0

@JensHolstSchumacher: Gracias, también puedes editar la respuesta con esa información extar, que luego será aprobada por un usuario más experimentado. – Deanna

Cuestiones relacionadas