2009-09-29 5 views
9

Я делаю проверку в моем установщике Inno Setup, чтобы проверить, установлено ли на компьютере обновление Microsoft, если нет, я показываю простое окно с сообщением пользователю о необходимости обновления, это код сообщения:Как показать гиперссылку в 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); 

Я хочу, чтобы сделать URL гиперссылки на веб-странице, но я не был в состоянии понять это как можно в настройках Inno, чтобы добавить текст в качестве гиперссылки?

Спасибо.

ответ

13

Функция MsgBox() в Inno Setup - это оболочка для стандартной функции Windows MessageBox(), которая AFAIK не поддерживает встроенные ссылки, поэтому невозможно просто показать ссылку там.

Однако вы можете уведомить пользователя о необходимости обновления и спросить, следует ли открывать ссылку в браузере по умолчанию. Что-то вроде:

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; 

Этот код будет прервать установку, но вы можете создать пользовательскую страницу, вместо которой проверяет, установлен ли обновление, и иным образом предотвращает перемещение к следующей странице. Это будет работать, только если обновление может быть установлено без перезагрузки системы.

+1

Предоставленный ответ отлично работает в Windows 7, но не в Windows 8 (не с моей настройкой, по крайней мере). Мне пришлось изменить 'ShellExec' на' ShellExecAsOriginalUser'. –

+0

@JensHolstSchumacher: Спасибо, вы также можете отредактировать ответ с этой дополнительной информацией, которая затем будет одобрена более опытным пользователем. – Deanna