Скрипты Inno Setup. Помощь и советы [часть 6]

Ответить
 • Просмотры: 14
Аватара пользователя
Nordek

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение Nordek »

innot20,



Код:

Код: Выделить всё

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
[Files]
Source: ISTask.dll; DestDir: {app}; Flags: dontcopy
[Code]
function KillTask(ExeFileName: string): Integer;
external 'KillTask@files:ISTask.dll stdcall delayload';
function RunTask(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@files:ISTask.dll stdcall delayload';
//**************************************************//
function InitializeSetup(): Boolean;
begin
  If RunTask('WorldOfTanks.exe', false) then
    begin
      if MsgBox('Игра WorldOfTanks запущена. Закрыть и продолжить установку?', mbInformation, mb_YesNo) = idYes then
        begin
          KillTask('WorldOfTanks.exe');
          Result:= True;
        end else
          Exit;
    end;
Result:=True;
end;
Вложения
ISTask.7z
(30.15 КБ) 0 скачиваний
ISTask.7z
(30.15 КБ) 0 скачиваний
Аватара пользователя
Shkutu

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение Shkutu »

innot20, Если же в случае отсутствия файла допустить установку, то так:



Код:

Код: Выделить всё

[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
OutputDir=.
DirExistsWarning=no
[Code]
function FileVersion(const FilePath: String): String;
var
  oFS: Variant;
begin
  oFS:= CreateOleObject('Scripting.FileSystemObject');
    try
      Result:= oFS.GetFileVersion(FilePath);
    except
  end;
end;
function NextButtonClick(CurPageID: Integer): Boolean;
begin
    Result:= true;
    case CurPageID of
      wpSelectDir:
      begin
        if FileExists(ExpandConstant('{app}')+'\GameName.exe') then begin
          if FileVersion(ExpandConstant('{app}')+'\GameName.exe') < '2.0.0.1' then begin
            MsgBoxEx(WizardForm.Handle, 'На данную версию невозможно продолжить установку!', 'Не актуальная версия файла', MB_OK or MB_ICONWARNING, 0, 0);
            Result:= false;
          end;
        end;
      end;
    end;
end;


Цитата Gnom_aka_Lexander:



по версии файла встроенными функциями
Скрипты Inno Setup. Помощь и советы [часть 6]




Ну ты молодец, типа он понял что ты сказал.

Справка-то сила, но в пределах разумного.
Аватара пользователя
diman_21Ru

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение diman_21Ru »

делаю так чтобы удалить старые компоненты но выходит ошибка кто знает в чем проблема ?

[InstallDelete]

Type: filesandordirs; Name: "{app}\res_mods"; Check: IsChecked();

[Dirs]

Name: "{app}\res_mods"; Check: IsChecked();

Name: "{app}\res_mods\0.8.11 Common Test"; Check: IsChecked();

Код: Выделить всё



var

InfoPic: TBitmapImage;

LastIndex: Integer;

TempPath: String;

PicForm: TForm;

deleteChk: TCheckBox;

procedure InitializeWizard();

var

i, iCount: Integer;

begin

for i := iCount downto 0 do

WizardForm.ComponentsList.Checked[i]:= False;

deleteChk := TCheckBox.Create(nil);

with deleteChk do

begin

Parent := WizardForm.SelectDirPage;

SetBounds(ScaleX(0), ScaleY(115), ScaleX(400), ScaleY(15));

Caption := 'Удалить старые компоненты';

Checked := True;

function IsChecked(): Boolean;

begin

Result := deleteChk.Checked;

end;
Аватара пользователя
TAY50N

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение TAY50N »

Gnom_aka_Lexander



Цитата Gnom_aka_Lexander:



ты прям такой умный.
Скрипты Inno Setup. Помощь и советы [часть 6]




В пределах разумного. Я у вас мистер хлеб украл? Чего же тогда когда нужно вы мистер не пример предоставили а пытались своими нравоучениями поучить?

Может всего на один раз нужно сделать инсталлятор - а для этого ничего учить не обязательно как и справки всякие читать.

Если человек всерьёз возьмётся за это дело - тогда да, и справочную информацию почитает и у вас спрашивать ничего не будет.




Цитата Gnom_aka_Lexander:



делается это так:
Скрипты Inno Setup. Помощь и советы [часть 6]




Можешь когда хочешь - для вытягивания ответа, нет ничего лучше чем манипуляция, даже если при этом придётся специально допустить ошибку.
Аватара пользователя
diman_21Ru

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение diman_21Ru »

TAY50N ,т.е второй надо делать а не как на первом ?
Аватара пользователя
saurn

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение saurn »

Gnom_aka_Lexander



Цитата Gnom_aka_Lexander:



Я хочу сказать, что нужно заставлять людей думать и читать справки.
Скрипты Inno Setup. Помощь и советы [часть 6]




Gnom_aka_Lexander, Всех людей не переделаешь - с этим трудно не согласиться. Говорить про элитные функции и процедуры и давать советы типа "смотри в сторону GetVersionNumbers" - это как минимум глупо, исходя из того что человек даже не знает что такое функция в программном коде. Забудем на мгновение про литературу - т.к для лентяев это сверхчеловеческих возможностей и справки для них это миф. Ещё раз забудем на мгновение про литературу т.к ответы можно найти и здесь не заглядывая в книгу. Уже со счёта сбился сколько раз указал ссылку на
Скрипты Inno Setup. Помощь и советы [часть 6]
и это не единичный случай того, сколько раз здесь давались ответы на одни и те же вопросы. А если никто не ответит, создают одно и тоже сообщение за сообщением. Людям не то что лень что-то читать, но даже найти готовое.



Тем более здесь есть возможность не переходить со страницы на страницу что значительно упрощает поиск:

Inno Setup [все вопросы] часть 1


Скрипты Inno Setup. Помощь и советы [часть 2]


Скрипты Inno Setup. Помощь и советы [часть 3]


Скрипты Inno Setup. Помощь и советы [часть 4]


Скрипты Inno Setup. Помощь и советы [часть 5]


Скрипты Inno Setup. Помощь и советы [часть 6]
Аватара пользователя
saurn

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение saurn »

TAY50N


Ему нужен этот вариант. Обрезанный, с измененным родителем изображений.
читать дальше »


Код:

Код: Выделить всё

[code]
const
    UNDEF_INDEX = -777;
function GetCursorPos(var lpPoint: TPoint): BOOL; external 'GetCursorPos@user32.dll stdcall';
var
    InfoPic: TBitmapImage;
    LastIndex: Integer;
    TempPath: String;
procedure ShowPicHint(const PicFilePath: String);
var
    pt: TPoint;
begin
    if not GetCursorPos(pt) then Exit;
    InfoPic.Bitmap.LoadFromFile(PicFilePath);
    InfoPic.SetBounds(ScaleX(245), ScaleY(42), ScaleX(166), ScaleY(165));
    InfoPic.Show;
end;
procedure CompOnItemMouseMove(Sender: TObject; X, Y: Integer; Index: Integer; Area: TItemArea);
var
    UndefPic: String;
begin
    if Index = -1 then Exit;
    if Index = LastIndex then Exit;
    try
        case TNewCheckListBox(Sender).ItemCaption[Index] of
            'Half-Life 2': UndefPic := 'Wasteland_Scanner_con.bmp';
            'Half-Life 2 Episode One': UndefPic := 'Strider_early2.bmp';
            'Half-Life 2 Episode Two': UndefPic := 'Cremator_poster.bmp';
            'Portal': UndefPic := 'Portal.bmp';
        else
            begin
                LastIndex := UNDEF_INDEX;
                InfoPic.Hide;
                Exit;
            end;
        end;
        if not FileExists(TempPath + UndefPic) then ExtractTemporaryFile(UndefPic);
        ShowPicHint(TempPath + UndefPic);
    finally
        LastIndex := Index;
    end;
end;
procedure CompOnMouseLeave(Sender: TObject);
begin
    InfoPic.Hide;
    LastIndex := -1;
end;
procedure InitInfo();
begin
    WizardForm.TypesCombo.Hide;
    WizardForm.ComponentsList.SetBounds(ScaleX(0), ScaleY(37), ScaleX(225), ScaleY(176));
    WizardForm.ComponentsList.OnItemMouseMove := @CompOnItemMouseMove;
    WizardForm.ComponentsList.OnMouseLeave := @CompOnMouseLeave;
    TempPath := AddBackslash(ExpandConstant('{tmp}'));
    LastIndex := UNDEF_INDEX;
    with TBevel.Create(WizardForm) do
    begin
      Parent := WizardForm.SelectComponentsPage;
      SetBounds(ScaleX(240), ScaleY(37), ScaleX(177), ScaleY(176));
      Shape := bsFrame;
    end;
    InfoPic := TBitmapImage.Create(WizardForm)
    with InfoPic do
    begin
        Parent := WizardForm.SelectComponentsPage;
        AutoSize := True;
    end;
end;
procedure InitializeWizard();
begin
    InitInfo();
end;


Хотя, если посмотреть сколько раз вопрос на эту тему был задан, и сколько раз на него ответили...
Аватара пользователя
diman_21Ru

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение diman_21Ru »

TAY50N , у меня она выходит на середину как бы мне можно тут все поменять т.к расширить низ верх и сделать попопам как тут ?
Аватара пользователя
saurn

Re: Скрипты Inno Setup. Помощь и советы [часть 6]

Сообщение saurn »

Всем доброго времени суток!

А нет ли какого-нибудь примера по использованию эмуляции дефайнов/прагмы при компиляции из командной строки?

Надо передавать версию приложения через параметр в командной строке при компиляции, но не совсем понимаю, как это правильно сделать.
Ответить

Вернуться в «Автоматическая установка приложений»