Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » [архив] Скрипты Inno Setup. Помощь и советы [часть 2]

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

Ветеран


Сообщения: 1133
Благодарности: 581


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: jameszero
Дата: 08-11-2010
Описание: тема закрыта
Лимит страниц.
Тема закрыта.
Продолжение по ссылке Скрипты Inno Setup. Помощь и советы [часть 3]




Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
  • ISTool - неплохой редактор скриптов Inno Setup.
    Последняя версия: 5.3.0.1 [29.09.2009] - Скачать | зеркало;
    Предыдущая версия: 5.3.0 [07.04.2009] - Скачать (зеркало) | Русификатор (зеркало);

  • Inno Script Generator - ещё один редактор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать;

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы. Официальный сайт - недоступен.
    Последняя версия: 2.0.8 [12.11.2006] - Страница с зеркалами;

  • Inno Setup GameScript Generator - программа генерирует скрипты для Inno Setup . С помощью GameScript Generator и Inno Setup вы сможете быстро создать простенький инсталляционный пакет для любой игры. В инсталлятор можно встроить музыку, слайдшоу и фоновый рисунок. Для специалистов созданный скрипт, возможно, будет неплохой заготовкой для дальнейшей модернизации;

  • ISSkin - Программа для создания и добавления в инсталлятор скинов. Инструкция.
    Последняя версия: 3.0.0.0 [19.01.2010] - Скачать;

  • InnoSetup Script Joiner - Программа для объединения нескольких скриптов InnoSetup в один;

  • Converter - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
    Последняя версия: 0.1.3 [11.09.2009] - Скачать;


Ссылка на архив предыдущей темы (также можно скачать из вложения)

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.


Отправлено: 22:06, 23-08-2009

 

Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


Как выполнить что-нибуть до распаковки файлов?
зачем нужно:
я распаковываю 1.exe файл, такой файл уже существует и запущен
в процессе установке произойдет ошибка

я же хочу до распаковки выполнить команду по убиению процесса 1.exe

[Run]
Filename: {sys}\cmd.exe; Parameters: /C taskkill /f /im 1.exe; Flags: runhidden; Languages: ; WorkingDir: {sys}; Components: program


только как это сделать?

Отправлено: 15:20, 11-09-2010 | #2321



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

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


Новый участник


Сообщения: 16
Благодарности: 0

Профиль | Отправить PM | Цитировать


Я скачал скрипт с установкой с 2х дисков

Код: Выделить весь код
#define NeedSize "5890"  ;Указываем размер игры,в байтах.
;#define precomp GetEnv("ProgramFiles") + "\FreeArc\PowerPack\Max\*"  ;если архивы созданы с PRECOMP, раскомментируйте строку и укажите папку с необходимыми для распаковки файлами (в общем случае это precomp04.exe, PPMonstr.exe, ecm.exe, unecm.exe, packjpg_dll.dll)
;Добавляем архивы
#define Archives "{src}\data1.bin;DestDir:{app}\;Disk:1;Components:Russian"
#define Archives Archives + "|" + "{src}\data3.bin;DestDir:{app}\;Disk:1"
;архивы указываются так {имя архива;DestDir:путь распаковки;Disk:диск на котором лежит}
;если есть компоненты то так {имя архива;DestDir:путь распаковки;Disk:диск на котором лежит;Components:название компонента}
;остальные архивы, где не указаны компоненты тоже будут распаковываться
И некак не пойму как сделать так что бы устанавливался с 1го диска(без запроса второго)

Отправлено: 15:50, 11-09-2010 | #2322


Аватара для R.i.m.s.k.y.

Ветеран


Сообщения: 1640
Благодарности: 536

Профиль | Отправить PM | Цитировать


Подскажите, пожалуйста, как сделать сообщение на странице копирования (там где "зеленая колбаса" ползет).
И как сделать его кликабельным (ссылка на сайт с изменением курсора на "руку")

Пытался делать через WizardFormDesigner, вот что он выдал
Код: Выделить весь код
[ISFormDesigner]
WizardForm=FF0A005456C73506572F7466C600

[_Code]
{ RedesignWizardFormBegin } // Don't remove this line!
// Don't modify this section. It is generated automatically.
var
  Label1: TLabel;

procedure RedesignWizardForm;
begin
  { Label1 }
  Label1 := TLabel.Create(WizardForm);
  with Label1 do
  begin
    Name := 'Label1';
    Parent := WizardForm.InstallingPage;
    Alignment := taCenter;
    Caption := 'Все программы в сборке бесплатные.' + #13#10 +
         'Кейгены, кряки, серийники, таблЭтки и т.п. не требуются.';
    Transparent := False;
    Left := ScaleX(8);
    Top := ScaleY(88);
    Width := ScaleX(400);
    Height := ScaleY(26);
  end;

{ ReservationBegin }
  // This part is for you. Add your specialized code here.

{ ReservationEnd }
end;
// Don't modify this section. It is generated automatically.
{ RedesignWizardFormEnd } // Don't remove this line!
В этом формдизайнере все есть, а не отображается при компиляции!
Заранее спасибо!

------------------------------------------------

Цитата Wave_is:
Как выполнить что-нибуть до распаковки файлов »
Код: Выделить весь код
[Components]
Name: kill; Description: наша прога;

[Files]
Components: kill; Source: tmp\1.txt; DestDir: {tmp}; BeforeInstall: KillEmAll; Flags: ignoreversion uninsrestartdelete setntfscompression
Components: kill; Source: уже нужные файлы...

[_Code]
procedure KillEmAll;
var Res : Integer;
Begin
  Exec('taskkill.exe', ' /f /im 1.exe ',ExpandConstant('{sys}'),SW_HIDE,ewWaitUntilTerminated,res);
end;
В секции Files процедура KillEmAll, означенная в параметре BeforeInstall, выполняется ПЕРЕД КОПИРОВАНИЕМ КАЖДОГО ФАЙЛА. Т.е. если в каталоге DestDir у вас кучка файлом - процедура KillEmAll будет выполняться перед копированием каждого файла, здорово замедляя установку. Поэтому разумно скопировать один левый файлик в папку {tmp}, а потом уже требуемое.

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Последний раз редактировалось jameszero, 08-11-2010 в 18:18. Причина: Тег [code]


Отправлено: 15:45, 14-09-2010 | #2323


Аватара для nik1967

Старожил


Сообщения: 440
Благодарности: 251

Профиль | Сайт | Отправить PM | Цитировать


R.i.m.s.k.y.,
Эээ..., а зачем через WizardFormDesigner? Так не проще?
читать дальше »

Код: Выделить весь код
procedure MyLabel1OnClick(Sender: TObject);
var
  ErrorCode: Integer;
begin
  ShellExec('open', 'http://forum.ru-board.com/topic.cgi?forum=5&topic=34344', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode); // Ваш URL
end;

procedure InitializeWizard;
var
  MyLabel1: TLabel;
begin
  MyLabel1 := TLabel.Create(WizardForm);
  with MyLabel1 do
  begin
    Parent := WizardForm.InstallingPage;
    Alignment := taCenter;
    Caption := 'Все программы в сборке бесплатные.' + #13#10 +
         'Кейгены, кряки, серийники, таблЭтки и т.п. не требуются.';
    Transparent := True;
    Left := ScaleX(28);
    Top := ScaleY(88);
    Width := ScaleX(400);
    Height := ScaleY(26);
    Cursor := crHand;
    OnClick:=@MyLabel1OnClick;
  end;
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:48, 14-09-2010 | #2324


Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


Доброго времени суток всем. Я новичок в этой программе, потому наверно вопросы, которые я задам покажутся вам глупыми.

1. У меня не получается, чтобы установщик включал в себя две и более папок (например я хочу в игре Сталкер упаковать отдельно папку bin и gamedata)
2. И как сделать просто фоновый рисунок сзади вместо BackColor? у меня не получается, я только находил про слайды.

[Setup]
DiskSpanning=no
DiskSliceSize=1500000000
AppName= S.T.A.L.K.E.R.
AppVerName=S.T.A.L.K.E.R. MeDVeD EDITION
AppPublisher=S.T.A.L.K.E.R. MeDVeD EDITION
AppPublisherURL=
AppVersion=
AppSupportURL=
AppUpdatesURL=
AppCopyright=Здесь закон - Тайга, а прокурор MeDVeD(С)
DefaultDirName={reg:HKLM\Software\GSC Game World\STALKER-SHOC,InstallPath|}\gamedata
DefaultGroupName=S.T.A.L.K.E.R. MeDVeD EDITION
DisableProgramGroupPage=yes
InfoAfterFile=D:\Games\S.T.A.L.K.E.R.\gamedata\описание.doc
LicenseFile=D:\12\лицензия.txt
OutputDir=C:\
OutputBaseFilename=S.T.A.L.K.E.R. MeDVeD EDITION
SetupIconFile=D:\12\иконка.ico
UninstallDisplayName=S.T.A.L.K.E.R. MeDVeD EDITION - удаление
Compression=lzma
SolidCompression=yes
WizardImageFile=D:\12\stsmall.bmp
WizardSmallImageFile=D:\12\st2.bmp
WindowVisible=yes
WindowShowCaption=no
BackColor=clBlack
BackColor2=clBlack
VersionInfoVersion=
VersionInfoCopyright=
UninstallDisplayIcon=D:\12\иконка.ico

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

[Files]
Source: "D:\Games\S.T.A.L.K.E.R.\gamedata\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\Games\S.T.A.L.K.E.R.\bin\XR_3DA.exe"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "BASS.dll"; DestDir: "{tmp}"; Flags: dontcopy noencryption nocompression
Source: "sound.mp3"; DestDir: "{tmp}"; Flags: dontcopy noencryption nocompression

[Icons]
Name: "{group}\{cm:UninstallProgram,AMК}"; Filename: "{uninstallexe}"

[code]
const
BASS_SAMPLE_LOOP = 4;

var
mp3Handle: HWND;
mp3Name: String;

function BASS_Init(device: Integer; freq, flags: DWORD; win: hwnd; CLSID: Integer): Boolean; external 'BASS_Init@files:BASS.dll stdcall delayload';
function BASS_StreamCreateFile(mem: BOOL; f: PChar; offset1: DWORD; offset2: DWORD; length1: DWORD; length2: DWORD; flags: DWORD): DWORD; external 'BASS_StreamCreateFile@files:BASS.dll stdcall delayload';
function BASS_Start: Boolean; external 'BASS_Start@files:BASS.dll stdcall delayload';
function BASS_ChannelPlay(handle: DWORD; restart: BOOL): Boolean; external 'BASS_ChannelPlay@files:BASS.dll stdcall delayload';
function BASS_Stop: Boolean; external 'BASS_Stop@files:BASS.dll stdcall delayload';
function BASS_Free: Boolean; external 'BASS_Free@files:BASS.dll stdcall delayload';

function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile('BASS.dll');
ExtractTemporaryFile('sound.mp3');
mp3Name := ExpandConstant('{tmp}\sound.mp3');
BASS_Init(-1, 44100, 0, 0, 0);
mp3Handle := BASS_StreamCreateFile(FALSE, PChar(mp3Name), 0, 0, 0, 0, BASS_SAMPLE_LOOP);
BASS_Start();
BASS_ChannelPlay(mp3Handle, False);
Result := True;
end;

procedure DeinitializeSetup();
begin
BASS_Stop();
BASS_Free();
end;

Можете подсказать, что и куда добавить?

Отправлено: 14:39, 16-09-2010 | #2325


Аватара для R.i.m.s.k.y.

Ветеран


Сообщения: 1640
Благодарности: 536

Профиль | Отправить PM | Цитировать


Цитата Cheatkiller:
У меня не получается, чтобы установщик включал в себя две и более папок (например я хочу в игре Сталкер упаковать отдельно папку bin и gamedata) »
Код: Выделить весь код
[Files]
Source: stalcker\*; DestDir: {app}\; Flags: ignoreversion recursesubdirs createallsubdirs
Флаги "recursesubdirs createallsubdirs" обрабатывают подкаталоги и создают их соответственно.
А по второму вопросу не скажу - я не делал фоновые изображения. Могу только указать на коллекцию скриптов в шапке темы, что-то подобное там есть. Вот пример оттуда
Код: Выделить весь код
[Files] 
Source: "C:\background.bmp"; DestDir: "{tmp}"; Flags: dontcopy 

[_Code] 
function GetSystemMetrics(nIndex:Integer):Integer; 
external 'GetSystemMetrics@user32.dll stdcall'; 

procedure InitializeWizard(); 
var 
BackgroundBitmapImage: TBitmapImage; 
s:string; 
width, height:Integer; 
bitmap:TBitmap; 
begin 
ExtractTemporaryFile('background.bmp'); 
WizardForm.Position:=poScreenCenter; 
MainForm.BORDERSTYLE:=bsNone; 
width:=GetSystemMetrics(61); 
height:=GetSystemMetrics(62); 
MainForm.Width:=width; 
MainForm.Height:=height; 
width:=MainForm.ClientWidth; 
height:=MainForm.ClientHeight; 
s:=ExpandConstant('{tmp}')+'\background.bmp'; 
BackgroundBitmapImage := TBitmapImage.Create(MainForm); 
BackgroundBitmapImage.Bitmap.LoadFromFile(s); 
BackgroundBitmapImage.Align := alClient; 
BackgroundBitmapImage.Parent := MainForm; 
BackgroundBitmapImage.Stretch:=True; 
MainForm.Visible:=True; 
end;

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:48, 16-09-2010 | #2326


Аватара для R.i.m.s.k.y.

Ветеран


Сообщения: 1640
Благодарности: 536

Профиль | Отправить PM | Цитировать


Сделал на инно поддержку параметров командной строки
Если ставлю /haaliavi /verysilent - работает, если /verysilent /haaliavi - не работает!
Код: Выделить весь код
procedure InitializeWizard();
...
  for i:= 1 to ParamCount do begin
    if (Pos(Lowercase('silent'), Lowercase(ParamStr(i))) > 0) then silent := 1 else silent := 0;
  end;
...
if (silent = 1) then begin 
//перебор различных параметров ком.строки
    for i:= 1 to ParamCount do begin
      if ( (Pos(Lowercase('/haaliavi'), Lowercase(ParamStr(i))) > 0) and haaliexists) then
      WizardForm.ComponentsList.Checked[WizardForm.ComponentsList.Items.IndexOf('{#haaliaviDesc}')]:=True;
    end;
end; // silent=1
...
[Registry]
Components: haaliavi...
WTF???

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Последний раз редактировалось R.i.m.s.k.y., 17-09-2010 в 11:21.


Отправлено: 11:08, 17-09-2010 | #2327


Новый участник


Сообщения: 29
Благодарности: 13

Профиль | Отправить PM | Цитировать


R.i.m.s.k.y.,

Код: Выделить весь код
  for i:=0 to ParamCount do begin
    s:= ParamStr(i);
    MsgBox(IntToStr(i)+#10#13+s, mbInformation, MB_OK);
  	if (Lowercase(ParamStr(i))='/silent') or (Lowercase(ParamStr(i))='/verysilent') then silent := 1 else silent := 0;
  end;
  
  if silent=1 then
    for i:= 1 to ParamCount do
      if (Lowercase(ParamStr(i))='/haaliavi') and haaliexists then MsgBox('haaliexists', mbInformation, MB_OK);;
      //WizardForm.ComponentsList.Checked[WizardForm.ComponentsList.Items.IndexOf('{#haaliaviDesc}')]:=True;

Отправлено: 12:51, 17-09-2010 | #2328


Аватара для R.i.m.s.k.y.

Ветеран


Сообщения: 1640
Благодарности: 536

Профиль | Отправить PM | Цитировать


South, спасибо, но я уже сделал проще - в InitializeSetup получаю строчку параметров целиком, а потом если требуемый параметр найден в этой строчке то...
Код: Выделить весь код
var GetCmdTail : string;
function InitializeSetup(): Boolean;
begin
  CMDLine := GetCmdTail;
  if ( Pos(Lowercase('/silent'),Lowercase(CMDLine)) > 0 ) then silent := 1 else silent := 0;

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Последний раз редактировалось R.i.m.s.k.y., 17-09-2010 в 13:14.


Отправлено: 13:04, 17-09-2010 | #2329


Новый участник


Сообщения: 29
Благодарности: 13

Профиль | Отправить PM | Цитировать


R.i.m.s.k.y., вот это вот
Код: Выделить весь код
if ( Pos(Lowercase('silent'),Lowercase(CMDLine)) > 0 ) then
не очень правильно, т.к. я могу запустить инсталл вот таким образом setup.exe -silent /tipasilent \silent и т.д. и получишь ты бяку

Отправлено: 13:10, 17-09-2010 | #2330



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » [архив] Скрипты Inno Setup. Помощь и советы [часть 2]

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58
[архив] Inno Setup .:[все вопросы]:. Mchik Автоматическая установка приложений 1329 23-08-2009 20:13
[архив - Часть 2] AutoIt скрипты Vadikan AutoIt 985 21-01-2008 09:58
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59
[Архив - Часть 1.1] AutoIt скрипты EgOrus AutoIt 335 04-02-2006 16:58




 
Переход