[архив] Inno Setup .:[все вопросы]:.

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

Re: [архив] Inno Setup .:[все вопросы]:.

Сообщение mityafm »

mityafm, подойдет?


читать дальше »




Код:

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

[Setup]
AppName=NETFramewrok
AppVerName=NETFramewrok
DefaultDirName={pf}\NETFramewrok
DisableStartupPrompt=true
InternalCompressLevel=none
Compression=none
[_Code]
function InitializeSetup(): Boolean;
var
    ErrorCode: Integer;
    NetFrameWorkInstalled : Boolean;
    Result1 : Boolean;
begin
           NetFrameWorkInstalled := RegKeyExists(HKLM,'SOFTWARE\Microsoft\.NETFramework\policy\v1.0');
           if NetFrameWorkInstalled =true then
           begin
              Result := true;
           end;
           if NetFrameWorkInstalled = false then
           begin
               NetFrameWorkInstalled := RegKeyExists(HKLM,'SOFTWARE\Microsoft\.NETFramework\policy\v1.1');
               if NetFrameWorkInstalled =true then
               begin
                  Result := true;
               end;
               if NetFrameWorkInstalled =false then
               begin
                         Result1 := MsgBox('This setup requires the .NET Framework. Please download and install the .NET Framework and run this setup again. Do you want to download the framwork now?',
                              mbConfirmation, MB_YESNO) = idYes;
                         if Result1 =false then
                         begin
                            Result:=false;
                         end
                         else
                         begin
                              Result:=false;
                                ShellExec('open', 'http://download.microsoft.com/download/a/a/c/aac39226-8825-44ce-90e3-bf8203e74006/dotnetfx.exe','','',SW_SHOWNORMAL,ewNoWait,ErrorCode);
                        end;
               end;
          end;
end;
Аватара пользователя
Serega

Re: [архив] Inno Setup .:[все вопросы]:.

Сообщение Serega »

Цитата Drongo:



Так тож я ничего не правил, как было.
[архив] Inno Setup .:[все вопросы]:.




бывает... Изображение




Цитата x-net:



Подскажите пожалуйста как такой инсталл сделать, чтоб было такое оформление
[архив] Inno Setup .:[все вопросы]:.




Здесь использовано скинирование -
ISSkin
, плюс все компоненты переписаны заново.


Цитата x-net:



и были функции удалений сохраненй и игр?
[архив] Inno Setup .:[все вопросы]:.




не поленитесь, почитайте где-то страниц тридцать назад, я приводил пример скрипта с удалением сохранений.


Цитата x-net:



я вытаскивал код, скомпилировал, а картинка сужается.
[архив] Inno Setup .:[все вопросы]:.




Покажите скрипт, так тяжело сказать где поправить.


Цитата user_123:



1. В программе удаления сделать список дополнительных задач (как [tasks] в программе установки; нужно для удаления определённого каталога со все его содержимым) . Показ стандартного (системного) диалога с запросом меня не очень устраивает, т.к. я делаю многоязычный инсталлятор, а в секции

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

 {cm:*} не работает... [url=viewtopic.php?p=2808407#p2808407]»[/url]
		
	
	
Покажите пример, как делаете.


				Цитата [b]user_123[/b]:
	
	
		
				2. На черточке внизу диалогового окна написать текст (копирайт). [url=viewtopic.php?p=2808407#p2808407]»[/url]
		
	
	
 
[url=#]Пример[/url]


 
 Код: [url=#][/url]
 [code][Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes
[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[Messages]
BeveledLabel=forum OSzone.net
[Code]
procedure InitializeWizard;
begin
  WizardForm.BeveledLabel.Left:= 20;
end;









Цитата user_123:



3. Во всех диалоговых окнах инсталлятора и деинсталлятора (кроме заголовка окна) сделать отображаение AppVerName вместо AppName.
[архив] Inno Setup .:[все вопросы]:.




Не совсем понятен вопрос, но насколько я понял напишите в скрипте соответственно AppName равным AppVerName и тогда обязательно используйте AppId.




Цитата Drongo:



Или прокатит и предыдущая запись?
[архив] Inno Setup .:[все вопросы]:.




Ну а куда она родимая денется, обязательно прокатит...


Цитата из Справки:



Pos(subs,s) - возвращает позицию первой подстроки subs в строке s (или 0 если подстрока не найдена)




Цитата A1EXXX:



вот только я не знаю, что писать вместо того, что я выделил....
[архив] Inno Setup .:[все вопросы]:.




Вы скрипт покажите, проще будет общаться, а то на пальцах тяжело объяснять.
Аватара пользователя
Drongo

Re: [архив] Inno Setup .:[все вопросы]:.

Сообщение Drongo »

Привет. Только что опять друг попросил слегка переделать тот скрипт. Два нюанса:

1. Добавить строку, чтобы инсталятор проверял систему Windows 7, тоесть работал

2. При любом раскладе, если любой параметр, видеокарта, процессор, система, звуковая, озу. не соответствует минимальному значению, всё равно чтобы кнопка далее была активна.



С первым пунктом мне кажется можно так, но я не уверен:


читать дальше »




Код:

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

...
if //(Pos('2000 Service Pack 4', SystemVersionPanel.Text) = 0) and  // Windows 2000 SP4
     //(Pos('XP Service Pack 1', SystemVersionPanel.Text) = 0) and  // Windows XP SP1
     (Pos('XP Service Pack 2', SystemVersionPanel.Text) = 0) and  // Windows XP SP2
     (Pos('XP Service Pack 3', SystemVersionPanel.Text) = 0) and  // Windows XP SP3
     (Pos('Vista', SystemVersionPanel.Text) = 0) then  // Windows Vista (c любым SP или без него)
     (Pos('Windows 7', SystemVersionPanel.Text) = 0) then  // Windows 7
     begin
      SystemVersionPanel.Color := $CCCCFF
      ChangeText := True
     end
...





А вот со вторым пунктом, чтобы сделать активную кнопку при любом раскладе, не знаю где... Возможно здесь




читать дальше »




Код:

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

...
if ChangeText = True then
    begin
      TopText.Top := 0
      TopText.Caption := 'Не все компоненты удовлетворяют минимальным требованиям программы.' #13
                         'Пожалуйста, проверьте позиции, выделенные красным цветом.'
      TopText.Font.Color := clRed
      WizardForm.NextButton.Enabled := False // Сменить на True ???
    end
  else
    begin
      TopText.Caption := 'Все компоненты соответствуют минимальным требованиям программы.'
      TopText.Font.Color := clGreen
      TopText.Top := 8
      WizardForm.NextButton.Enabled := True
    end
end;
...
Аватара пользователя
Drongo

Re: [архив] Inno Setup .:[все вопросы]:.

Сообщение Drongo »

Цитата Serega:



Pos(subs,s) - возвращает позицию первой подстроки subs в строке s (или 0 если подстрока не найдена)
[архив] Inno Setup .:[все вопросы]:.




Ааа, понял, функция для работы со строками. Спасибо.
Аватара пользователя
Serega

Re: [архив] Inno Setup .:[все вопросы]:.

Сообщение Serega »

Цитата Rosich:



чтобы перед началом повторной установки программы сначала запускался деинсталлятор в тихом режиме, а затем уже шел сам процесс установки.
[архив] Inno Setup .:[все вопросы]:.





Пример




Код:

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

[Setup]
AppID={{C05D8CDB-417D-4335-A38C-A0659EDFD6B8}
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes
[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[Code]
//проверка устанавливалась ли программа ранее
var
  Error: Integer;
  ResultStr: String;
function InitializeSetup: Boolean;
begin
  Result := True;
    begin
      if RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{C05D8CDB-417D-4335-A38C-A0659EDFD6B8}_is1', 'DisplayName', ResultStr) then
       if ResultStr = 'My Program v 1.5' then
        begin
          if RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{C05D8CDB-417D-4335-A38C-A0659EDFD6B8}_is1', 'UninstallString', ResultStr) then
          ResultStr:= RemoveQuotes(ResultStr);
          if not Exec(ResultStr, '/silent', '', SW_SHOWNORMAL, ewWaitUntilTerminated, Error) then
          MsgBox('Ошибка удаления. ' #13#13 '' + SysErrorMessage(Error) + '.' #13#13 'Вероятно, деинсталлятор был перемещен, удален или переименован.', mbError, MB_OK);
        end;
    end;
end;









Цитата A1EXXX:



вот мой скрипт...
[архив] Inno Setup .:[все вопросы]:.





Пример




Код:

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

[Code]
var
  LogoImage: TBitmapImage;
  LogoLabel: TLabel;
  LogoPanel: TPanel;
procedure LogoOnClick(Sender: TObject);
var
  ReturnCode: Integer;
begin
  ShellExec('open', 'http://......', '', '', SW_SHOWNORMAL, ewNoWait, ReturnCode)
end;
procedure InitializeWizard();
begin
  ExtractTemporaryFile('logo.bmp');
  LogoPanel := TPanel.Create(WizardForm);
  with LogoPanel do
    begin
      Parent := WizardForm;
      Left := ScaleX(5);
      Top := ScaleY(320);
      Width := ScaleX(165);
      Height := ScaleY(35);
      BevelOuter := bvNone;
    end;
  LogoImage := TBitmapImage.Create(WizardForm);
  with LogoImage do
    begin
      Parent := LogoPanel;
      Left := ScaleX(0);
      Top := ScaleY(0);
      AutoSize:=true;
      ReplaceColor:=clFuchsia;
      ReplaceWithColor:=clBtnFace;
      Bitmap.LoadFromFile(ExpandConstant('{tmp}\logo.bmp'));
    end;
  LogoLabel := TLabel.Create(WizardForm);
  with LogoLabel do
    begin
      Parent := LogoPanel;
      Width := LogoPanel.Width;
      Height := LogoPanel.Height;
      Transparent:=True;
      Cursor := crHand;
      OnClick:=@LogoOnClick;
    end;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
  LogoPanel.Visible:= True;
  LogoImage.Visible:= True;
  LogoLabel.Visible:= True;
  if CurPageID = wpInstalling then
    begin
      LogoPanel.Visible:= False;
      LogoImage.Visible:= False;
      LogoLabel.Visible:= False;
    end;
end;
[Files]
Source: C:\logo.bmp; DestDir: {tmp}; Flags: dontcopy
Аватара пользователя
A1EXXX

Re: [архив] Inno Setup .:[все вопросы]:.

Сообщение A1EXXX »

Ребята, у меня такой вопрос: я подставляю картинку в левый нижний угол, но можно ли как нибудь сделать, чтобы она отображалась на всех страницах, кроме страницы распаковки??? (использую слайд-шоу, и картинка выглядывает из-под прогресс-бара). И как вручную указать требуемое свободное место на диске
здесь
(своё число mb указать)
Аватара пользователя
Drongo

Re: [архив] Inno Setup .:[все вопросы]:.

Сообщение Drongo »

Цитата user_123:



Во всех диалоговых окнах инсталлятора и деинсталлятора (кроме заголовка окна) сделать отображаение AppVerName вместо AppName



Проблема заключается в том, что у программы достаточно длинное название и внутри диалоговых окон оно смотрится не очень красиво, а если написать сокращённо, то - в заголоке. Данную проблему я решил так: в секции [Messages] написал полное название для заголока, без "%1", а в appname - сокращённое.
Цитата Serega:



[Messages]

BeveledLabel=forum OSzone.net

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


procedure InitializeWizard;

begin

 WizardForm.BeveledLabel.Left:= 20;

end; [url=viewtopic.php?p=2808412#p2808412]»[/url]
		
	
	
Спасибо.
				Цитата [b]Serega[/b]:
	
	
		
				В программе удаления сделать список дополнительных задач (как [tasks] в программе установки; нужно для удаления определённого каталога со все его содержимым) [url=viewtopic.php?p=2808412#p2808412]»[/url]
		
	
	
В программе установки можно сделать доп. задачи, например, создание ярлыка на рабочем столе / в меню быстрого запуска, добавление доп. ключей в реестр и др... А в программе удаление так сделать (чтобы врезультате уставки флага (галочки) удалился определённый каталог), если я не ошибаюсь, нельзя... Конечно, можно что-то в сецию [code] написать, но... я не знаю высокоуровневых языков программирования... если вижу готовый код, то примерно понимаю, о чём речь идёт, а сам написать не могу...
Аватара пользователя
x-net

Re: [архив] Inno Setup .:[все вопросы]:.

Сообщение x-net »

Подскажите пожалуйста как такой инсталл сделать, чтоб было такое оформление, и были функции удалений сохраненй и игр?

Сделано классно, я вытаскивал код, скомпилировал, а картинка сужается.

Сделать отдельно такую тему отдельно.
Аватара пользователя
user_123

Re: [архив] Inno Setup .:[все вопросы]:.

Сообщение user_123 »

Цитата Rosich:



Но он, почему то не работает, как должен работать, может, кто посмотрит. Этот скрипт в идеале должен запускать "тихий деинсталлятор", но не сразу при запуске инсталлятора, а после странице выбора компонентов.
[архив] Inno Setup .:[все вопросы]:.




Записал в процедуре CurPageChanged, которую привёл ниже...


Цитата Rosich:



Как убрать вот это табличку:
[архив] Inno Setup .:[все вопросы]:.




Добавьте в секции [Components] ко всем компонентам флаг disablenouninstallwarning


Цитата Rosich:



Как правильно срастить вот этот скрипт
[архив] Inno Setup .:[все вопросы]:.




1. Берете вашу процедуру:



Код:

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

procedure ComponentOnClick(Sender: TObject);
begin
  if WizardSelectedComponents(False) = '' then
    WizardForm.NextButton.Enabled:= False
  else WizardForm.NextButton.Enabled:= True;
end;

и добавляете её в свой скрипт, в любое место, главное перед процедурой InitializeWizard.

2. Добавляете эту строку:



Код:

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

  WizardForm.ComponentsList.OnClick := @ComponentOnClick;

в самое начало процедуры InitializeWizard, после begin.


Цитата Rosich:



Мне на том же форуме, в моем скрипте, изменили процедуру CurPageChanged
[архив] Inno Setup .:[все вопросы]:.





исправил




Код:

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

procedure CurPageChanged(CurPageID: Integer);
var
  ResultCode: Integer;
  UnInstallPath: string;
begin
  PageNameLabel.Caption:= WizardForm.PageNameLabel.Caption;
  PageDescriptionLabel.Caption:= WizardForm.PageDescriptionLabel.Caption;
  PageNameLabel1.Caption:= 'Апаратное Обеспечение';
  PageDescriptionLabel1.Caption:= 'Программа установки обнаружила следуюшие необходимые компоненты';
  PageNameLabel2.Caption:= WizardForm.PageNameLabel.Caption;
  PageDescriptionLabel2.Caption:= WizardForm.PageDescriptionLabel.Caption;
  PageNameLabel3.Caption:= WizardForm.PageNameLabel.Caption;
  PageDescriptionLabel3.Caption:= WizardForm.PageDescriptionLabel.Caption;
  PageNameLabel4.Caption:= WizardForm.PageNameLabel.Caption;
  PageDescriptionLabel4.Caption:= WizardForm.PageDescriptionLabel.Caption;
  PageNameLabel5.Caption:= WizardForm.PageNameLabel.Caption;
  PageDescriptionLabel5.Caption:= WizardForm.PageDescriptionLabel.Caption;
  PageNameLabel6.Caption:= WizardForm.PageNameLabel.Caption;
  PageDescriptionLabel6.Caption:= WizardForm.PageDescriptionLabel.Caption;
  PageNameLabel7.Caption:= WizardForm.PageNameLabel.Caption;
  PageDescriptionLabel7.Caption:= WizardForm.PageDescriptionLabel.Caption;
  PageNameLabel8.Caption:= WizardForm.PageNameLabel.Caption;
  PageDescriptionLabel8.Caption:= WizardForm.PageDescriptionLabel.Caption;
  if CurPageID = wpSelectComponents then
    begin
      RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{C05D8CDB-417D-4335-A38C-A0659EDFD6B8}_is1','UninstallString', UnInstallPath);
      UnInstallPath:= RemoveQuotes(UnInstallPath);
      Exec(UnInstallPath, '/verysilent','', SW_HIDE, ewWaitUntilTerminated, ResultCode);
    end;
  if CurPageID = wpSelectDir then
    begin
      GetNeedSpaceCaption;
      if FreeMB < NeedSize then
      WizardForm.NextButton.Enabled:= False;
    end;
  if CurPageID = wpReady then
    WizardForm.BackButton.Enabled:= False;
  if CurPageID = wpFinished then
    begin
      WizardForm.Width:= 497;
      WizardForm.Height:= 358;
      WizardForm.Position:= poScreenCenter;
    end
end;
Аватара пользователя
Drongo

Re: [архив] Inno Setup .:[все вопросы]:.

Сообщение Drongo »

Привет! У меня есть скрипт авторана на Inno Setup Script.

В нём есть кнопка:



Код:

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

  btn2:= TButton.Create(AutoRun);
  with btn2 do begin
    Parent:= AutoRun;
    Left := 280;
    Top := 185;
    Width := 270;
    Height := 22;
    Caption:= 'Начать игру';
    Cursor:= crHand;
    OnClick := @btn2Click;
  end;

Эта кнопка запускает процедуру:



Код:

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

procedure btn2Click(Sender: TObject);
var
  CurPageID: Integer;
begin
  Exec(ExpandConstant('{src}\Setup.exe'),'','',SW_SHOW,ewNoWait,ResultCode)
  AutoRun.Close;
  PostMessage(WizardForm.CancelButton.Handle, BM_CLICK, 0, 0);
end;

Как сделать чтоб эта кнопка была неактивная при отсутствии {src}\Setup.exe ?



P.S. Я знаю что это делается процедурой:



Код:

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

begin 
btn2.Enabled := False; 
end

Но как сделать проверку наличия файла {src}\Setup.exe ?
Ответить

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