Jump to content
Korean Random
EvilAlex

Создание инсталляторов для модпаков на базе Inno Setup

Recommended Posts

Хотя одно и тоже почти

Почти.

В моём варианте сохранится набор выбранных компонентов прошлой установки. Здесь оговаривалось.

Edited by Kotyarko_O
  • Upvote 2

Share this post


Link to post

Short link
Share on other sites


[Code]
Procedure CurStepChanged(CurStep: TSetupStep);
var
 Reg, UninstallPath: String;
 ResultCode: Integer;
begin
 if CurStep = ssInstall then
 begin
  Reg := ExpandConstant('Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{#emit SetupSetting("AppID")}_is1');
  if RegValueExists(HKLM, Reg, 'UninstallString') then
   RegQueryStringValue(HKLM, Reg, 'UninstallString', UninstallPath);
  if Length(UninstallPath) > 0 then
  begin
   case MsgBoxEx(WizardForm.Handle, 'Рекомендуется удалить ранее установленную версию сборки.' + #13#10 + 'Хотите сделать это сейчас?', '...', MB_YESNO or MB_ICONQUESTION, 0, 0) of
    IDYES: Exec(RemoveQuotes(ExpandConstant(UninstallPath)), '/SILENT /SUPPRESSMSGBOXES', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
    IDNO: Exit;
   end;
  end;
 end;
end;

Пробуй.

p.s. немного подправил.

 

С П А С И Б О! Я так и хотел! Ранее выбранные элементы сохраняються как активные!!!!!!!!

Тогда ещё : "Рекомендуется удалить ранее .... и т.д" как отредактировать текст?

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites
Тогда ещё : "Рекомендуется удалить ранее .... и т.д" как отредактировать текст?

Здесь текст, который будет отображаться в диалоговом окне:

'Рекомендуется удалить ранее установленную версию сборки.' + #13#10 + 'Хотите сделать это сейчас?',

Здесь текст заголовка окна:

'...',
Edited by Kotyarko_O
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

 

Здесь текст, который будет отображаться в диалоговом окне:



'Рекомендуется удалить ранее установленную версию сборки.' + #13#10 + 'Хотите сделать это сейчас?',

Здесь текст заголовка окна:



'...',

Блин сорри не увидел! Ещё раз Спасибо!

Share this post


Link to post

Short link
Share on other sites

Почти.

В моём варианте сохранится набор выбранных компонентов прошлой установки. Здесь оговаривалось.

ну или так  :ok:

procedure CurPageChanged(CurPageID: Integer);
var
 Reg, UninstallPath: String;
 ResultCode: Integer;
begin
 if CurPageID = 1 then
 begin
  Reg := ExpandConstant('Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{#emit SetupSetting("AppID")}_is1');
  if RegValueExists(HKLM, Reg, 'UninstallString') then
   RegQueryStringValue(HKLM, Reg, 'UninstallString', UninstallPath);
  if Length(UninstallPath) > 0 then
  begin
   case MsgBoxEx(WizardForm.Handle, 'Рекомендуется удалить ранее установленную версию сборки.' + #13#10 + 'Хотите сделать это сейчас?', '...', MB_YESNO or MB_ICONQUESTION, 0, 0) of
    IDYES: Exec(RemoveQuotes(ExpandConstant(UninstallPath)), '/SILENT /SUPPRESSMSGBOXES', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
    IDNO: Exit;
   end;
  end;
 end;
end;
Edited by ♫♫♫Dark_Knight_MiX♫♫♫

Share this post


Link to post

Short link
Share on other sites

Можно ещё, убрать это окно, что-бы не появлялось или автоматом говорила "Да"?

post-31076-0-58557100-1427107880_thumb.jpg
 
т.к. появляется: если запускаешь второй раз и компонент не выбираешь, а выбираешь другой. Хотя уже всё удалил ранее..
Edited by sergey spb

Share this post


Link to post

Short link
Share on other sites

 

Можно ещё, убрать это окно, что-бы не появлялось или автоматом говорила "Да"?

 
 
т.к. появляется: если запускаешь второй раз и компонент не выбираешь, а выбираешь другой. Хотя уже всё удалил ранее..

 

Flags:  disablenouninstallwarning;

Share this post


Link to post

Short link
Share on other sites

 

 

Можно ещё, убрать это окно, что-бы не появлялось?
Flags: disablenouninstallwarning

Каждому компоненту.

  • Upvote 2

Share this post


Link to post

Short link
Share on other sites


Flags: disablenouninstallwarning

Каждому компоненту.

 

Благодарю! Всё получилось, главное каждому компоненту!

.... всё спать.

Share this post


Link to post

Short link
Share on other sites

Добрый день! Проблема в установки шрифта в систему Win7:

 

Source: "dynamic.otf"; DestDir: "{fonts}"; Flags: onlyifdoesntexist uninsneveruninstall fontisnttruetype; FontInstall: "dynamic"; Components: Sh;

 

Проблема такая-же и так делал.

 

Сделал, вроде работает:

Source: "dynamic.otf"; DestDir: "{fonts}"; Flags: fontisnttruetype; FontInstall: "dynamic"

Edited by sergey spb

Share this post


Link to post

Short link
Share on other sites

Добрый день!

Не подскажите, как убрать это окно?

 

post-31076-0-81422600-1427373537_thumb.jpg

 

Спасибо!

 

 

Разобралcя: DirExistsWarning=no

Edited by sergey spb

Share this post


Link to post

Short link
Share on other sites

@sergey spb,

[Setup]
DirExistsWarning=no

Обо всех параметрах секции [setup] написано в справке.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

@sergey spb,







[Setup]
DirExistsWarning=no

Обо всех параметрах секции [setup] написано в справке.

Спасибо уже нашёл!

А не подскажешь как  поменять надпись:

 

post-31076-0-79193300-1427374546_thumb.jpg

 

 

Взято от сюда:

 

#define SourceDir "res_mods";

#define BackupDir "old_res_mods";

[setup]

AppName=Test

AppVersion=1.5

DefaultDirName={pf}\Test

OutputDir=.

var

  BackupCheck: TCheckBox;

procedure CopyFiles(FromPlace, ToPlace: String);

var

    ResultCode: Integer;

begin

    Exec('xcopy.exe', '/E /C /H /R /Y /F /I ' + AddQuotes(FromPlace) + ' ' + AddQuotes(ToPlace), ExpandConstant('{app}'), SW_HIDE, ewWaitUntilTerminated, ResultCode);

end;

procedure BackupCheckCreate();

begin

  BackupCheck:=TCheckBox.Create(WizardForm);

    with BackupCheck do

      begin

        Parent:=WizardForm.SelectDirPage;

        SetBounds(ScaleX(WizardForm.DirEdit.Left), ScaleY(WizardForm.DirEdit.Top + 40), ScaleX(WizardForm.DirEdit.Width), ScaleY(15));

        Caption:='Сохранить резервную копию перезаписываемых файлов';

        Checked:=True;

      end;

end;

procedure BackUp(CurStep: TSetupStep);

var

    ThereIsFolders: Boolean;

begin

  if BackupCheck.Checked then

  begin

    ThereIsFolders:=(DirExists(AddBackslash(WizardDirValue()) + '{#SourceDir}') and (not DirExists(AddBackslash(WizardDirValue()) + '{#BackupDir}')) );

    if ThereIsFolders then

    if CurStep=ssInstall then

      begin

        WizardForm.ProgressGauge.Hide;

        WizardForm.StatusLabel.Caption:='Создание резервных копий файлов...';

        CopyFiles(ExpandConstant('{app}') + '\{#SourceDir}\*.*', ExpandConstant('{app}') + '\{#BackupDir}');

        WizardForm.ProgressGauge.Show;

        WizardForm.StatusLabel.Caption:=SetupMessage(msgStatusExtractFiles);

      end;

  end;

end;

procedure InitializeWizard();

begin

  BackupCheckCreate();

end;

procedure CurStepChanged(CurStep: TSetupStep);

begin

   BackUp(CurStep);

end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);

begin

    if CurUninstallStep = usPostUninstall then

      begin

        CopyFiles(ExpandConstant('{app}') + '\{#BackupDir}\*.*', ExpandConstant('{app}') + '\{#SourceDir}');

        DelTree(ExpandConstant('{app}') + '\{#BackupDir}', True, True, True);

      end;

end;

Share this post


Link to post

Short link
Share on other sites

 

 

А не подскажешь как поменять надпись
Caption:='Сохранить резервную копию перезаписываемых файлов';

Share this post


Link to post

Short link
Share on other sites




Caption:='Сохранить резервную копию перезаписываемых файлов';

 

Не то, делал!

Там написано: 

post-31076-0-79193300-1427374546_thumb.jpg

Share this post


Link to post

Short link
Share on other sites

@sergey spb, значит кусок кода, который ты привёл, к этому чекбоксу не относится.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

@sergey spb, значит кусок кода, который ты привёл, к этому чекбоксу не относится.

Спасибо!!!!

Может в "Messages.iss" прописать, или хотя бы, где искать?

Share this post


Link to post

Short link
Share on other sites
Может в "Messages.iss" прописать, или хотя бы, где искать?

Не знаю, я же не вижу код. Ctrl + F поможет.

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

Не знаю, я же не вижу код. Ctrl + F поможет.

Ок, если что, завтра скину всё (если не трудо взгляни)!

А пока сам попробую.

 

Спасибо! Всё поменялось.

Edited by sergey spb

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...