Inno Setup (создание инсталяционных пакетов). Часть 1

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

Snoopak96

Старожил
Нужна подсказка:
Как из инно выключить анимацию при перемещении окна [DragFullWindows] ?
 

Sten

Новичок
Дайте пожалуйста отдельный код на замену стандартных чекбоксов через bmp))
как вот тут:
 

Sten

Новичок
Спасибо)
А вот как для одного созданного чекбокса сделать? )))[hr]
А вот это никак, данная функция работает только на чекбокслистах. Только создавать чекбокс через ботву, например.
Gnom.
 
Последнее редактирование модератором:

nik1967

Old Men
Проверенный
shidow,
Код:
[Setup]
AppName=Приложение
AppVerName=Приложение
DefaultDirName={pf}\123
DirExistsWarning=no

[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl

[_Code]
var
Button: TNewButton;
ResultCode: Integer;

procedure ButtonOnClick(Sender: TObject);
begin
  Exec(ExpandConstant('{sys}\calc.exe'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
end;
  
procedure InitializeWizard();
begin
Button:= TNewButton.Create(WizardForm);
  with Button do begin
    SetBounds(ScaleX(7), WizardForm.NextButton.Top, WizardForm.NextButton.Width, WizardForm.NextButton.Height);
    Caption:= 'Запустить';
    OnClick:= @ButtonOnClick;
    Parent:= WizardForm;
  end;
end;
 

LexBell

Борода
Супер модератор
какбэ работает ;)

через Exec тоже можно :)
Не все. Через Exec запускаются только *.ехе - файлы. Все остальное(bat, cmd, msu и тп), запускается только через ShellExec (команда, которая ищет программу, которая запустит файл) либо через Exec, но запуская программу, которая выполнит файл, который нужно запустить, с именем этого файла в параметрах.
Пример для msu:
нужно выполнить KB917607-x86.msu с параметрами /quiet /norestart. Для Exec:
запускаем системную утилиту, которая исполняет эти пакеты: {sys}\wusa.exe - в запуске, {tmp}\KB917607-x86.msu /quiet /norestart - в параметрах. Воркдир будет место положения пакета KB917607-x86.msu, тоесть в данном случае {tmp}.
Для ShellExec:
В запуске: {tmp}\KB917607-x86.msu, в парамерах: /quiet /norestart. Но я не на 100% уверен, что второй вариант сработает. Первый вариант работает в моей сборке InnoUltra.
 

nik1967

Old Men
Проверенный
dvd4el, ага, ты меня ещё учить будешь, как использовать Exec и ShellExec.
Для Exec: "Executes the specified executable or batch file, using the same credentials as Setup/Uninstall. Use the ShellExec function instead if you need to launch a file that is not an executable or batch file."
Для ShellExec: "Opens the specified file or performs another action specified by Verb, using the same credentials as Setup/Uninstall. The filename can be an executable file, a document file, a folder, or a URL."
 

LexBell

Борода
Супер модератор
Всетаки нужно учитывать реалии жизни:) Не уверен в том, как работает выполнение батников, но сталкивался с ситуацией, когда путь к системным утилитам приходилось указывать вручную, поэтому батники для перестраховки лучше тоже в ShellExec запускать. А еще лучше в екзек, параметром к cmd.exe, с указанием пути к этому cmd.exe ({sys}\cmd.exe) - на всякий случай :)
 

Avangard

Участник
Как загрузить в DirEdit свое изображение через ботву?

Как создать трак-бар через ботву, но чтобы при этом лейбы опускались-поднимались? У меня не получается повернуть кнопку (чтобы она двигалась не влево-вправо, а вверх-вниз).
 
Последнее редактирование модератором:

Atari

Новичок
Дайте пожалуйста скрипт с выбором приоритета установки на странице выбора задач
 

Avangard

Участник
Atari,
#define GameName "name"

[setup]
AppName={#GameName}
AppVersion=1.0
DefaultDirName={pf}\{#GameName}

Код:
const
  NORMAL_PRIORITY_CLASS           = $00000020;
  IDLE_PRIORITY_CLASS             = $00000040;
  HIGH_PRIORITY_CLASS             = $00000080;
  REALTIME_PRIORITY_CLASS         = $00000100;

function SetPriorityClass(hProcess: THandle; dwPriorityClass: DWORD): BOOL;
  external 'SetPriorityClass@kernel32';

function GetCurrentProcess: THandle;
  external 'GetCurrentProcess@kernel32';

procedure InitializeWizard();
begin
  SetPriorityClass(GetCurrentProcess, IDLE_PRIORITY_CLASS);     //установка приоритета для инсталлятора.
end;


[/SPOILER]
 

Atari

Новичок
dvd4el, спасибо, конечно, за ответ, но код который вы выложили выше у меня есть. Я всего лишь хотел добавить туда возможность выбора уровня приоритета на страницу выбора задач.

Добавлено через 1 минуту
Уже сам разобрался.

Добавлено через 37 секунд
Правильно ли я сделал?
[Setup]
AppName=App
AppVersion=1.0
DefaultDirName={pf}\App

Код:
 const 
 NORMAL_PRIORITY_CLASS = $00000020; 
 IDLE_PRIORITY_CLASS = $00000040; 
 HIGH_PRIORITY_CLASS = $00000080; 
 REALTIME_PRIORITY_CLASS = $00000100; 

 function SetPriorityClass(hProcess: THandle; dwPriorityClass: DWORD): BOOL; external 'SetPriorityClass@kernel32'; 
 function GetCurrentProcess: THandle; external 'GetCurrentProcess@kernel32'; 

 procedure InitializeWizard(); 
  begin
  if IsTaskSelected('Prt') then begin 
 //Дальше установка приоритета 
 SetPriorityClass(GetCurrentProcess, HIGH_PRIORITY_CLASS); 
 end;
 end;

[Languages]
Name: rus; MessagesFile: "C:\Program Files\Inno Setup 5\Languages\Russian.isl";

[Tasks]
Languages: rus; Name: Prt; Description: "Высокий приоритет установки"; 
[/SPOILER]
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху