Вопрос Как прописать обработчик?

Статус
В этой теме нельзя размещать новые ответы.

YegorkaGor

Мимокрокодил
Ребята, помогите ещё пожалуйста...
Чего прописать, чтобы срастить
Код:
 [Code]
function NextButtonClick(CurPageID: Integer): Boolean;
var
ErrorCode: Integer;
if CurPageID = wpLicense then
begin
VBAInstalled : Boolean;
Result1 : Boolean;
begin
VBAInstalled := RegKeyExists(HKLM,'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{5545EEE1-FA36-4F76-B6BE-5696E7F4E2D6}');
if VBAInstalled = true then
begin
Result := true;
end;
if VBAInstalled = false then
begin
VBAInstalled := RegKeyExists(HKLM,'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{5545EEE1-FA36-4F76-B6BE-5696E7F4E2D6}');
if VBAInstalled =true then
begin
Result := true;
end;
if VBAInstalled = false then
begin
Result1 := MsgBox('В системе не найден Visual Basic, необходимый для работы макросов. #13#13 Скачать компонент после установки программы?', mbConfirmation, MB_YESNO) = idYes;
if Result1 =false then
begin
Result:=false;
????????????
end;
end;

YES-NO по-любому продолжаем работу, но! ежели YES

procedure CurStepChanged(CurStep: TSetupStep);
var
ErrorCode: Integer;
begin
if CurStep=ssPostInstall
then begin
if ?????? idYes(сюда, наверное)
then begin
ShellExec('open', 'http://kdl1.cache.wps.com/ksodl/download/vba_for_wps_1033.exe', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;
end;
end;
 

YegorkaGor

Мимокрокодил
Извиняюсь, думал понятно написано.
По клику "Next" в форме License функция ищет по ключу реестра установленный Visual Basic, нашла-не_нашла, программа будет выполняться дальше, а функция передаёт процедуру на клик. Если "Нет", то_и_ладушки, если "Да", передаёт на кнопку "Done".
Т.е. реально работает вот этот код
Код:
function InitializeSetup(): Boolean;
var
ErrorCode: Integer;
VBAInstalled : Boolean;
Result1 : Boolean;
begin
VBAInstalled := RegKeyExists(HKLM,'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{5545EEE1-FA36-4F76-B6BE-5696E7F4E2D6}');
if VBAInstalled =true then
begin
Result := true;
end;
if VBAInstalled = false then
begin
VBAInstalled := RegKeyExists(HKLM,'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{5545EEE1-FA36-4F76-B6BE-5696E7F4E2D6}');
if VBAInstalled =true then
begin
Result := true;
end;
if VBAInstalled =false then
begin
Result1 := MsgBox('В системе не найден Visual Basic, необходимый для работы макросов. #13#13 Скачать компонент?',
mbConfirmation, MB_YESNO) = idYes;
if Result1 =false then
begin
Result:=false;
end
else begin
Result:=false;
ShellExec('open', 'http://kdl1.cache.wps.com/ksodl/download/vba_for_wps_1033.exe','','',SW_SHOWNORMAL,ewNoWait,ErrorCode);
end;
end;
end;
end;
и вот этот
Код:
procedure CurStepChanged(CurStep: TSetupStep);
var
ErrorCode: Integer;
begin
if CurStep=ssPostInstall
then begin
if IsTaskSelected('patch')
then begin
ShellExec('open', '.....', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;
begin
if IsTaskSelected('load')
then begin
ShellExec('open', 'http://kdl1.cache.wps.com/ksodl/download/vba_for_wps_1033.exe', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;
end;
end;
//end;
begin
if CurStep = ssDone
then begin
MsgBox('Установка завершена! ' + ' Приятного пользования!', mbInformation, MB_OK);
end;
end;
end;
и вот надо их "срастить".
 
Последнее редактирование:

Kotyarko_O

Новичок
По клику "Next" в форме License функция ищет по ключу реестра установленный Visual Basic, нашла-не_нашла, программа будет выполняться дальше
Нет.
С вашим кодом программа сразу при запуске, без всяких кликов, будет искать установлен ли VB.

а функция передаёт процедуру на клик.
И снова я вас не понял.
 

Shegorat

Lord of Madness
Администратор
YegorkaGor
Привел ваш код из предыдущего поста в божеский вид. Но почему вас дважды ищется один и тот же ключ реестра?

Далее функция InitializeSetup при запуске инсталлятора будет искать VB, и, если не найдет, предложит его скачать и установить, при этом инсталлятор завершит свою работу.

В функции CurStepChanged, после основной установки если выбрана задача "load" опять же будет попытка скачать VB.

Так всё-таки дайте развёрнутый ответ что же вы хотите получить.

Код:
function InitializeSetup(): Boolean;
var
   ErrorCode: Integer;
begin
   Result:= true;
  
   if ( not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{5545EEE1-FA36-4F76-B6BE-5696E7F4E2D6}') ) then begin
     //if ( not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{5545EEE1-FA36-4F76-B6BE-5696E7F4E2D6}') ) then begin
         Result:= false;
         if ( MsgBox('В системе не найден Visual Basic, необходимый для работы макросов. #13#13 Скачать компонент?', mbConfirmation, MB_YESNO) = idYes ) then
           ShellExec('open', 'http://kdl1.cache.wps.com/ksodl/download/vba_for_wps_1033.exe', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
     //end;
   end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
var
   ErrorCode: Integer;
begin
   if CurStep=ssPostInstall then
   begin
     if IsTaskSelected('patch') then
       ShellExec('open', '.....', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
    
     if IsTaskSelected('load') then
       ShellExec('open', 'http://kdl1.cache.wps.com/ksodl/download/vba_for_wps_1033.exe', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
   end;
  
   if CurStep = ssDone then
     MsgBox('Установка завершена! ' + ' Приятного пользования!', mbInformation, MB_OK);
end;
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху