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

Компьютерный форум 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

 

Аватара для volk1234

Старовер


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

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


Пора создавать ветку - Стол заказов [скрипты]

-------

Ю-ху!


Отправлено: 23:41, 31-08-2009 | #41



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

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


Аватара для p3rf3ct1c

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


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

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


volk1234, неплохая идея, а в шапке выложить уже существующие скрипты какие есть.

Отправлено: 18:04, 01-09-2009 | #42


Аватара для volk1234

Старовер


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

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


про стол заказов - думаю не сильно будет популярная ветка - ибо желающих, чтобы сделали за них много, а чтобы сделать за других раз два и обчелся...
Я предлогал Serega сделать шаблоны тех случаев которые он уже решал.
Но перелопатить тему на 1350 страниц это не из весёлых занятий, так что это
по его желанию. Если хотите помогите всем сделайте свою сборку скриптов - выложим ее в шапке

-------

Ю-ху!


Отправлено: 18:17, 01-09-2009 | #43


Ветеран


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

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


Цитата Raf-9600:
А реально ли сделать так »
Сделал, не совсем как вы хотели, т.е. сделал отдельную страницу с выбором Steam или NoSteam.
Пример
Код: Выделить весь код
[Setup]
AppID={{9C9D1016-916D-40D5-B034-A0071759F1B7}
AppName=Half-Life 2
AppVerName=My Half-Life 2
DefaultDirName={pf}\Half-Life 2
DefaultGroupName=Half-Life 2
OutputDir=.
UninstallFilesDir={app}\UninstallDir

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

[CustomMessages]
INST_MODE=Режим установки
INST_MODE_CPT=Пожалуйста, выберите в каком режиме будет устанавливаться программа
INST_EXPR=Steam
INST_EXPR_STR=Установка программы с параметрами Steam.
INST_CUST=NoSteam
INST_CUST_STR=Установка программы с параметрами NoSteam.
NEXT=Нажмите «Далее», чтобы продолжить.

[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}; Flags: ignoreversion

[Icons]
Name: {group}\My Program; Filename: {app}\MyProg.exe; WorkingDir: {app}; Check: MyFuncIcons

[Code]
function GetModuleHandle(lpModuleName: LongInt): LongInt;
  external 'GetModuleHandleA@kernel32.dll stdcall';

function ExtractIcon(hInst: LongInt; lpszExeFileName: PChar; nIconIndex: LongInt): LongInt;
  external 'ExtractIconA@shell32.dll stdcall';

function DrawIconEx(hdc: LongInt; xLeft, yTop: Integer; hIcon: LongInt; cxWidth, cyWidth: Integer; istepIfAniCur, hbrFlickerFreeDraw, diFlags: LongInt): LongInt;
  external 'DrawIconEx@user32.dll stdcall';

var
  SupportPage: TWizardPage;
  Steam, NoSteam: TNewRadiobutton;
  
function MyFuncIcons: Boolean;
begin
  if Steam.Checked = True then
    Result:= False
  else Result:= True;
end;

procedure InitializeWizard();
var
  Str1, Str2, Str3: TNewStaticText;
  Rect: TRect;
  hIcon: LongInt;
begin
  SupportPage:= CreateCustomPage(wpWelcome, ExpandConstant('{cm:INST_MODE}'), ExpandConstant('{cm:INST_MODE_CPT}'));

  Steam:= TNewRadiobutton.Create(SupportPage);
  with Steam do
    begin
      SetBounds(ScaleX(20), ScaleY(40), ScaleX(200), ScaleY(16));
      Font.Style:= [fsBold];
      Caption:= ExpandConstant('{cm:INST_EXPR}');
      Checked:= True;
      Parent:= SupportPage.Surface;
    end;
  
  hIcon:= ExtractIcon(GetModuleHandle(0), ExpandConstant('{sys}\shell32.dll'), 118);
  with TBitmapImage.Create(SupportPage) do
    begin
      SetBounds(ScaleX(36), Steam.Top + ScaleY(20), ScaleX(32), ScaleY(32));
      with Bitmap do
        begin
          Width:= ScaleX(32);
          Height:= ScaleY(32);
          Rect.Right:= ScaleX(32);
          Rect.Bottom:= ScaleY(32);
          Rect.Left:= ScaleX(0);
          Rect.Top:= ScaleY(0);
          Canvas.Brush.Color:= clBtnFace;
          Canvas.FillRect(Rect);
          DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, 3);
        end;
      Parent:= SupportPage.Surface;
    end;

  Str1:= TNewStaticText.Create(SupportPage);
  with Str1 do
    begin
      SetBounds(ScaleX(78), Steam.Top + ScaleY(20), ScaleX(349), ScaleY(32));
      Autosize:= False;
      WordWrap:= True;
      Caption:= ExpandConstant('{cm:INST_EXPR_STR}');
      Parent:= SupportPage.Surface;
    end;
  
  NoSteam:= TNewRadiobutton.Create(SupportPage);
  with NoSteam do
    begin
      SetBounds(ScaleX(20), Str1.Top + ScaleY(52), ScaleX(200), ScaleY(16));
      Font.Style:= [fsBold];
      Caption:= ExpandConstant('{cm:INST_CUST}');
      Parent:= SupportPage.Surface;
    end;
  
  hIcon:= ExtractIcon(GetModuleHandle(0), ExpandConstant('{sys}\shell32.dll'), 119);
  with TBitmapImage.Create(SupportPage) do
    begin
      SetBounds(ScaleX(36), NoSteam.Top + ScaleY(20), ScaleX(32), ScaleY(32));
      with Bitmap do
        begin
          Width:= ScaleX(32);
          Height:= ScaleY(32);
          Rect.Right:= ScaleX(32);
          Rect.Bottom:= ScaleY(32);
          Rect.Left:= ScaleX(0);
          Rect.Top:= ScaleY(0);
          Canvas.Brush.Color:= clBtnFace;
          Canvas.FillRect(Rect);
          DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, 3);
        end;
      Parent:= SupportPage.Surface;
    end;
  
  Str2:= TNewStaticText.Create(SupportPage);
  with Str2 do
    begin
      SetBounds(ScaleX(78), NoSteam.Top + ScaleY(20), ScaleX(349), ScaleY(50));
      Autosize:= False;
      WordWrap:= True;
      Caption:= ExpandConstant('{cm:INST_CUST_STR}');
      Parent:= SupportPage.Surface;
    end;
    
  Str3:= TNewStaticText.Create(SupportPage);
  with Str3 do
    begin
      SetBounds(ScaleX(36), ScaleY(221), ScaleX(381), ScaleY(16));
      Autosize:= False;
      WordWrap:= True;
      Caption:= ExpandConstant('{cm:NEXT}');
      Parent:= SupportPage.Surface;
    end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpSelectDir then
    begin
      if Steam.Checked = True then
        WizardForm.DirEdit.Text:= ExpandConstant('{reg:HKLM\SOFTWARE\Valve\Steam,InstallPath|{pf}\ARPS}')
      else WizardForm.DirEdit.Text:= ExpandConstant('{pf}\Half-Life 2');
    end;
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
  if PageID = wpSelectProgramGroup then
    begin
      if Steam.Checked = True then
        Result:= True;
    end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssDone then
    begin
      if Steam.Checked = True then
        begin
          DelTree(ExpandConstant('{app}\UninstallDir'), True, True, True);
          RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{9C9D1016-916D-40D5-B034-A0071759F1B7}_is1');
        end;
    end;
end;

function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo,
    MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
var
  S: String;
begin
  S := S + ExpandConstant('{cm:INST_MODE}') + NewLine;
  if Steam.Checked = True then
    S := S + Space + ExpandConstant('{cm:INST_EXPR}') + NewLine + NewLine
  else
    S := S + Space + ExpandConstant('{cm:INST_CUST}') + NewLine + NewLine;
  S := S + MemoDirInfo + NewLine + Newline;
  S := S + MemoGroupInfo + NewLine + Newline;
  S := S + MemoTasksInfo + NewLine + NewLine;
  Result := S;
end;

{
 HINT: В режиме "Экспресс Режим" (Steam) может возникнуть ситуация, когда к примеру не хватает места
       на жестком диске, а страница выбора папки установки в "Экспресс Режиме" будет пропущена,
       в результате чего получится так, что установка сообщит о нехватке места уже в процессе
       копирования файлов.
}

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

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

Отправлено: 01:29, 02-09-2009 | #44


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


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

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


Как в диалоге выбора места установки прописать рекомендации? А то в Висте изза UAC-а не все пашет...

Отправлено: 21:42, 02-09-2009 | #45


Ветеран


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

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


Цитата pa60t9ra:
Как в диалоге выбора места установки прописать рекомендации? А то в Висте изза UAC-а не все пашет... »
Висту, не знаю, но вот пример, с запретом установки в корень системного диска.
Пример
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[Code]
var
  text: TLabel;

function NextButtonClick(CurPageID: Integer): Boolean;
var
  i, n: Integer;
  str: string;
begin
  Result:= True;
  if CurPageID = wpSelectDir then
    begin
      str:= WizardForm.DirEdit.Text;
      for i:= 1 to Length(str) do if str[i] = '\' then n:= n + 1;
      if (n = 1) and (Pos(ExpandConstant('{sd}'), WizardForm.DirEdit.Text) > 0) then
        begin
          text.Caption:= 'Внимание, в корень системного диска, устанавливать нельзя.';
          Result:= False;
        end
      else text.Caption:= '';
    end;
end;

procedure InitializeWizard();
begin
  text:= TLabel.Create(WizardForm);
  with text do
    begin
      SetBounds(WizardForm.DirEdit.Left,120,300,100);
      AutoSize:= True;
      Font.Style:= [fsBold];
      Font.Color:= clRed;
      Parent:= WizardForm.SelectDirPage;
    end;
end;

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


Отправлено: 23:36, 02-09-2009 | #46


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


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

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


Как сделать, чтобы пользователь выбирал что ему поставить? То есть 5 компонентов, и он хочет поставить и 1 и 3? А не только 1?

Отправлено: 19:32, 03-09-2009 | #47


Аватара для A1EXXX

Старожил


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

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


Вложения
Тип файла: 7z Ultimate Test Black.7z
(4.1 Kb, 915 просмотров)

Поправил скрипт Ultimate Test (проверка системных требований) для инсталла с чёрным фоном + теперь распознаёт XP SP3, может кому пригодится...

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

Отправлено: 13:51, 05-09-2009 | #48


Аватара для Krekerpro

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


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

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


Доброго времени суток,кто нибудь знает,как реализовать это http://clip2net.com/page/m0/1799727 http://clip2net.com/page/m0/1799737 http://clip2net.com/page/m0/1799740 ???

Отправлено: 03:10, 07-09-2009 | #49


Аватара для A1EXXX

Старожил


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

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


Krekerpro, репак BlackSelf'a ))) самому интересно, поэтому к вопросу могу только присоединиться!!!

Отправлено: 15:00, 07-09-2009 | #50



Компьютерный форум 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




 
Переход