На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ Inno Setup
Пожалуйста, выделяйте текст инсталлятора написанного на Inno Setup тегом [сode=ins] ... [/сode]. Для этого используйте кнопку [code=ins] в форме ответа или выпадающего списка, если нужно вставить код из другой программы.


Обязательно указывать:

  • Программу, используемую для создания инсталлятора.



Если в ходе решения проблемы возникли дополнительные вопросы, по возможности задаем их в той же теме.


Выразить свое отношение к модераторам раздела можно здесь: Profi, Fester
Модераторы: Fester
  
> Установка BDE и создание алиаса , с помощью Inno Setup
    Здравствуйте.
    Скажите, пожалуйста, как с помощью Inno Setup установить BDE, какие файлы для этого нужны?
    Возможно ли при инсталяции создать алиас для базы данных, которую использует устанавливаемая программа? Как это сделать?
      1. Качаем MiniReg.exe.
      2. Находим BDEINST.CAB в Program Files\Common Files\Borland Shared\BDE и извлекаем из него BDEINST.DLL.
      3. Добавляем такие строчки в скрипт
      ExpandedWrap disabled
        [Files]
        Source: "MiniReg.exe"; DestDir: "{tmp}"
        Source: "BdeInst.dll"; DestDir: "{tmp}"
         
        [Run]
        Filename: "{tmp}\MiniReg.exe"; Parameters: """{tmp}\BdeInst.dll"""

      4. Пишем такой скрипт
      ExpandedWrap disabled
        procedure CreateAlias;
        const
          FDbDriver = 'PARADOX'; //Тип базы.
          SubDir = 'Data'; //Директория внутри папки установки программы.
        var
          FAlias: string;
          FAliasDir: string;
        begin
          FAlias := 'aLog2000'; //Название базы.
          Session.ConfigMode := cmPersistent;
          if not Session.IsAlias(FAlias) then
          begin
            FAliasDir := ExtractFilePath(ParamStr(0)) + SubDir;
            Session.AddStandardAlias(FAlias, FAliasDir, FDbDriver);
            Session.SaveConfigFile;
          end;
        end;
        Profi, спаисбо, очень выручил.
        Прош упрощения за наглость, а как узнать установленна ли BDE на машине и её версию?
        Сообщение отредактировано: Timof -
          Timof Ты узнал как проверить установлена ли BDE?
            Цитата Vince Carter @
            Timof Ты узнал как проверить установлена ли BDE?

            К сожалению, нет. :'(
            Знаю только что надо проверить наличие каких-то файлов, либо посмотреть где-то в реестре. Ничего конкретного.
              Timof
              на счёт инсталятора, метод Profi конечно хорош, но он при установке требует от пользователя установить саму BDE, как бы это правильно выразиться, что то своего рода получается инсталляор в инсталляторе, ни есть хорошо... так вот, я предлагаю сделать так
              ExpandedWrap disabled
                [Files]
                ; files for BDE
                Source: "BDE\*"; DestDir: "{cf}\Borland Shared\BDE\"; Flags: uninsneveruninstall replacesameversion onlyifdoesntexist

              список файлов, которые ты должен поместить в папку BDE
              Цитата

              bantam.dll
              blw32.dll
              charset.cvb
              idapi32.cfg
              idapi32.dll
              idasci32.dll
              idbat32.dll
              iddr32.dll
              idpdx32.dll
              idr20009.dll
              idsql32.dll
              other.btl

              и всё..
              да и ещё, метод Profi ещё тем плох, что при такой установке, заменяются все файлы и в реестре, а основной заменяется idapi32.cfg, где храняться все альянсы.. а это не очень хорошо для тех прог, которые при старте программы не проверяют наличие альянса... был такой случай, у моего клиента из за этого база рухнула... так что выбирать тебе...
              Цитата
              Ты узнал как проверить установлена ли BDE

              проверку этого можно сделать в самом приложении...
              например так
              ExpandedWrap disabled
                function CheckBDEInstalled: Boolean;
                begin
                 Result := (dbiInit(nil) = DBIERR_NONE)
                end;
                 
                  if CheckBDEInstalled then
                //тут что то твоё///
                  else
                    begin
                      if Application.MessageBox('На вашем компьютере не уставновлена BDE!!!' + #10#13 +
                       'Работа программы будет прервана!!!','Ошибка!!!',
                        MB_OK + MB_ICONERROR) = IDOK then halt;
                dron-s Так что если просто скопировать эти файлы так то в панели управления появится BDE Administrator?
                  И так, еще один вариант (дополненный вариант dron-s'а):
                  Качаем прикрепленный архив и извлекаем из него CheckBDE.dll, например, в MyDll. Копируем все указанные dron-s'ом файлы, а именно
                  ExpandedWrap disabled
                    bantam.dll
                    blw32.dll
                    charset.cvb
                    idapi32.cfg
                    idapi32.dll
                    idasci32.dll
                    idbat32.dll
                    iddr32.dll
                    idpdx32.dll
                    idr20009.dll
                    idsql32.dll
                    other.btl
                  в отдельный каталог, например BDE. Пишем такой скрипт:
                  ExpandedWrap disabled
                    [Files]
                    Source: BDE\*; DestDir: {cf}\Borland Shared\BDE; Flags: uninsneveruninstall replacesameversion onlyifdoesntexist; Check: InstallBDE
                    Source: MyDll\CheckBDE.dll; Flags: dontcopy
                     
                     
                    [Code]
                    Function CheckBDE:boolean;
                    external 'CheckBDEInstalled@files:CheckBDE.dll stdcall';
                     
                    var
                        First:boolean;
                        BDEInstall:boolean;
                     
                    function InitializeSetup(): Boolean;
                    begin
                        First:=true;
                        Result:=true;
                    end;
                     
                    Function InstallBDE:boolean;
                    begin
                        if First then begin
                            Result:=false;
                            if not CheckBDE then begin
                                if MsgBox('У вас не установлена BDE!'#13'Установить?',mbConfirmation,MB_YESNO)=IDYES then
                                    Result:=true;
                            end;
                            BDEInstall:=result;
                            First:=false;
                        end else
                            Result:=BDEInstall;
                    end;
                  Я еще подумываю над тем, чтобы сделать сохранение idapi32.cfg до установки первым методом и возвращения назад после.
                  Прикреплённый файлПрикреплённый файлCheckBDE.zip (57.77 Кбайт, скачиваний: 501)
                    Profi
                    архив битый!!!
                    перезалей ещё раз!!!
                    точно также можно проверять и версию BDE и версию копируемых файлов, и если версия копируемого файла ниже того что уже существует вывводить сообщение об этом, если выше или файлов вообще нет, то просто копировать или заменять файлы...
                      Цитата dron-s @
                      Profi
                      архив битый!!!
                      перезалей ещё раз!!!

                      Хм, у меня нормально качаеться и нормально извлекаеться.
                      Цитата dron-s @
                      точно также можно проверять и версию BDE и версию копируемых файлов, и если версия копируемого файла ниже того что уже существует вывводить сообщение об этом, если выше или файлов вообще нет, то просто копировать или заменять файлы...

                      В Inno Setup при помощи dll можно все!
                        Profi
                        вот я скачала архив, пытаюсь его разархивировать, а мне архиватор в ответ кричит
                        Цитата
                        Архив поврежден или имеет неизвестный формат

                        Цитата
                        В Inno Setup при помощи dll можно все!

                        а вот про это можно по подробнее?
                          Цитата dron-s @
                          а вот про это можно по подробнее?

                          А что тут может быть подробнее? Не можешь что-то сделать в Inno Setup? Делаешь в Delphi или C dll которая делает то, что тебе надо и все!
                            Цитата
                            Делаешь в Delphi или C dll которая делает то, что тебе надо и все!

                            оригинально!!!! ;)
                            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                            0 пользователей:


                            Рейтинг@Mail.ru
                            [ Script execution time: 0,0406 ]   [ 15 queries used ]   [ Generated: 28.04.24, 15:11 GMT ]