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

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

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

Ветеран


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


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

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


Изменения
Автор: Serega
Дата: 13-08-2011
Вложения
Тип файла: 7z Inno Setup [все вопросы] часть 1.7z
(1.34 Mb, 898 просмотров)
Тип файла: 7z Inno Setup [все вопросы] часть 2.7z
(3.12 Mb, 796 просмотров)
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


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

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

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы.
    Последняя версия: 2.0.8 [12.11.2006] - Скачать;
    Примечание: Родной сайт http://isfd.kaju74.de/index.php?isfd более недоступен, поэтому здесь расположены сторонние ссылки.

  • 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.4 [13.03.2010] - Скачать;


Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:
Inno Setup [все вопросы] часть 1
Inno Setup [все вопросы] часть 2

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


Отправлено: 00:28, 04-11-2010

 

Пользователь


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

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


Несколько тонких вопросов :
1. Как можно настроить, чтобы отдельные папки/файлы сохранялись в отдельные .bin-файлы ?
2. Как можно сделать, чтобы в зависимости от версии Windows (32/64 бита) ключи реестра создавались соответственно в HKLM/Software/... и HKLM/Software/Wow6432Node/...
3. Подскажите нормальный вариант для сплэша. Хочу сделать следующее: сначала появляется лого Mass Effect (появление плавное, т.е. со сменой прозрачности), а потом так же плавно появляестся 2 (это цифра, для Mass Effect 2 всё делается )и спустя некоторое врмя они плавно исчезают. isgsg.dll у меня не работает вообще (Win 7 x64), вариант через sleep мне не нравится тем, что при наведении на сплэш курсор меняется на со стрелки на кружок. С картинками поработать смогу (в Photoshop).
Спасибо за помощь.

Отправлено: 17:42, 17-04-2011 | #1361



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

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


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

Ветеран


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

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


Цитата murlakatamenka:
2. Как можно сделать, чтобы в зависимости от версии Windows (32/64 бита) ключи реестра создавались соответственно в HKLM/Software/... и HKLM/Software/Wow6432Node/... »
стандартная функция IsWin64 и Check: ()
Check: (not IsWin64); Root: HKLM; Subkey: SOFTWARE\Gabest\Media Player Classic;...
Check: IsWin64; Root: HKLM; Subkey: Software\Wow6432Node\Gabest\Media Player Classic...
не забудь
[Setup]
ArchitecturesInstallIn64BitMode=x64

и вообще в справке почитай про небольшие отличия между х86 и х64

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

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

Отправлено: 18:13, 17-04-2011 | #1362


Аватара для YURSHAT

Старожил


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

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


LordSP,
Цитата LordSP:
Лександер, Я уже и в шапке искал и в скриптах смотрел,не нашел к сожалению.
Еще такое ты случаем не обладаешь скриптом,который корректно без ошибок заменяет стандартное окно "О программе".. у меня был один,но после выхода из инсталлятора,либо завершения его работы,слышен звук ошибки. »
скрипт
Код: Выделить весь код
[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

[Code_]
function AppendMenu(hMenu: HMENU; uFlags, uIDNewItem: UINT; lpNewItem: PChar): BOOL;
  external 'AppendMenuA@user32.dll stdcall';
function GetSystemMenu(hWnd: HWND; bRevert: BOOL): HMENU; external 'GetSystemMenu@user32.dll stdcall';

const
  WM_SYSCOMMAND = $0112;
  MF_DELETE     = $200;
  MF_SEPARATOR  = $800;
  MF_BYPOSITION = $400;

var
  Menu: TMenuItem;

procedure AppOnMessage(var Msg: TMsg; var Handled: Boolean);
begin
  if Msg.message = WM_SYSCOMMAND then
    if Msg.wParam = Menu.Handle then
      MsgBox('Здесь могла бы быть ваша реклама... ', mbInformation, MB_OK);;
end;

procedure InitializeWizard();
begin
  // попытаемя удалить родное меню 'О программе'
  if not AppendMenu(GetSystemMenu(Wizardform.Handle, True), MF_DELETE, 0, SetupMessage(msgAboutSetupMenuItem)) then
    WizardForm.Position:= poScreenCenter;
  // создаём сепаратор
  AppendMenu(GetSystemMenu(Wizardform.Handle, False), MF_SEPARATOR, 0, '');
  Menu:= TMenuItem.Create(WizardForm); // создаём ссылку на менюшку
  // добавляем свой пункт в системное меню 'О программе'
  AppendMenu(GetSystemMenu(Wizardform.Handle, False), MF_BYPOSITION, Menu.Handle, SetupMessage(msgAboutSetupMenuItem));
  Application.OnMessage:= @AppOnMessage;
end;
для ResTools'овской инно

-------
Если я знаю, что знаю мало, я добьюсь того, чтобы знать больше... В.И. Ленин
Krinkels.org - сжатие данных и создание инсталляторов

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

Отправлено: 18:58, 17-04-2011 | #1363


Старожил


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

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


помогите пожалуйста скрепить 2 скрипта.В одном игра со скином и скартинкой во весь инстал,а в другом вставка логотипа и у меня не получается их скрепить.Помогите пожалуйста.Зарание спасибо

Вот скрипт http://rghost.ru/5225030

-------
Стремись не к тому, чтобы добиться успеха, а к тому, чтобы твоя жизнь имела смысл.(Альберт Эйнштейн)


Отправлено: 20:03, 17-04-2011 | #1364


Аватара для Gnom_aka_Lexander

Ветеран


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

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


R.i.m.s.k.y., еще проще, задается стандартный для х32 ключ, в х64 он автоматом поправляется как нужно - лично проверил. А также обращения к ключу идут с этой поправкой - тоже проверено.
LinkOFF, прикрепил соединенный скрипт, ты энд один пропустил.

-------
Я люблю помогать. Но не путайте: "Помогите мне" и "Сделайте за меня" - это совершенно разные понятия.


Последний раз редактировалось Gnom_aka_Lexander, 10-05-2011 в 14:36.


Отправлено: 20:20, 17-04-2011 | #1365


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

Ветеран


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

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


Цитата Лександер:
R.i.m.s.k.y., еще проще, задается стандартный для х32 ключ, в х64 он автоматом поправляется как нужно - лично проверил. А также обращения к ключу идут с этой поправкой - тоже проверено. »
Типа HKCU32/HKCU64? это да, но ...Software\Wow6432Node\... оно не учитывает, тоже проверил

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


Отправлено: 20:31, 17-04-2011 | #1366


Аватара для Gnom_aka_Lexander

Ветеран


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

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


Цитата R.i.m.s.k.y.:
Wow6432Node\. »
оно учитывает, я-же говорю - проверял неоднократно, все вписывается правильно, и обращение, например из авторана, идет без Wow6432Node, но оно учитывается.Вот, для проверки - удали строчки распаковки исдоне, чтоб не было ошибок, и установи, потом запусти еще раз. И обрати внимание на реестр.

-------
Я люблю помогать. Но не путайте: "Помогите мне" и "Сделайте за меня" - это совершенно разные понятия.


Отправлено: 20:34, 17-04-2011 | #1367


Аватара для YURSHAT

Старожил


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

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


LinkOFF,
Цитата LinkOFF:
помогите пожалуйста скрепить 2 скрипта.В одном игра со скином и скартинкой во весь инстал,а в другом вставка логотипа и у меня не получается их скрепить.Помогите пожалуйста.Зарание спасибо »
держите
Код: Выделить весь код
#define MyAppName "Mass Effect"
#define MyAppVersion "1.0"
#define MyAppPublisher "BioWare"
#define MyAppURL "http://www.torrent-games.net/"
#define MyAppExeName "MassEffectLauncher.exe"

[Setup]
AppId={{D9C5ACA8-A99E-4431-AC50-236359DA74F8}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
OutputDir=out
OutputBaseFilename=setup
WizardImageFile=img\WizardImage.bmp
WizardSmallImageFile=img\WizardSmallImage.bmp
SetupIconFile=img\setup.ico
DisableReadyPage=yes
AllowNoIcons=yes
Compression=lzma
SolidCompression=no
DiskSpanning=yes
DiskSliceSize=727000000
PrivilegesRequired=poweruser

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

[Files]
Source: "skin\isskin.dll"; DestDir: "{app}"; Flags: dontcopy
Source: "skin\tiger_v2.cjstyles"; DestDir: "{tmp}"; Flags: dontcopy
Source: "img\papka.bmp"; DestDir: "{tmp}"; Flags: dontcopy nocompression
Source: "img\img.bmp"; DestDir: "{tmp}"; Flags: dontcopy nocompression
Source: "img\logo.bmp"; DestDir: "{tmp}"; Flags: dontcopy nocompression
;Source: "D:\Games\Fallout New Vegas\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

[Icons]
Name: "{group}\Начать игру"; Filename: "{app}\{#MyAppExeName}";
Name: "{group}\Удалить игру"; Filename: "{uninstallexe}";
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}";


[Code_]
procedure LoadSkin(lpszPath: String; lpszIniFileName: String);
external 'LoadSkin@files:isskin.dll stdcall';
procedure UnloadSkin();
external 'UnloadSkin@files:isskin.dll stdcall';
function ShowWindow(hWnd: Integer; uType: Integer): Integer;
external 'ShowWindow@user32.dll stdcall';

var
WLabel1, WLabel2,
FLabel1, FLabel2: TLabel;
PageNameLabel, PageDescriptionLabel: TLabel;
BmpFile: TBitmapImage;
LogoImage:TBitmapImage;
LogoLabel: TLabel;
LogoPanel: TPanel;

procedure LogoOnClick(Sender: TObject);
var ReturnCode: Integer;
begin
ShellExec('open', 'http://сайт.ру', '', '', SW_SHOWNORMAL, ewNoWait, ReturnCode)
end;

procedure InitializeWizard1();
begin
WizardForm.BorderStyle:= bsDialog;
WizardForm.Bevel.Hide
WizardForm.Bevel1.Hide

WizardForm.PageNameLabel.Font.Color:=clwhite;
WizardForm.LicenseAcceptedRadio.Font.Color:=clwhite;
WizardForm.LicenseNotAcceptedRadio.Font.Color:=clwhite;
WizardForm.Font.Color:=clwhite;

ExtractTemporaryFile('papka.bmp');
WizardForm.SelectDirBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\papka.bmp'));
WizardForm.SelectDirBitmapImage.AutoSize:=true;
WizardForm.SelectGroupBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\papka.bmp'));
WizardForm.SelectGroupBitmapImage.AutoSize:=true;

ExtractTemporaryFile('img.bmp');
BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\img.bmp'));
BmpFile.SetBounds(0, 0, 497, 313);
BmpFile.Stretch:= true
BmpFile.Parent:= WizardForm.WelcomePage;

WizardForm.WelcomeLabel1.Hide;
WizardForm.WelcomeLabel2.Hide;
WizardForm.FinishedHeadingLabel.Hide;
WizardForm.FinishedLabel.Hide;
WizardForm.WizardBitmapImage.Width := 497;
WizardForm.WizardBitmapImage.Height := 313;
WizardForm.WizardSmallBitmapImage.Left:=0;
WizardForm.WizardSmallBitmapImage.Width:=497;
WizardForm.WizardSmallBitmapImage.Height:=58;
WizardForm.PageDescriptionLabel.Width:=300;
WizardForm.PageNameLabel.Width:=300;
WizardForm.FileNameLabel.Visible:=False;
WizardForm.ProgressGauge.Top:=ScaleY(100);
WizardForm.StatusLabel.Top:=ScaleY(80);
WLabel1 := TLabel.Create(WizardForm);
WLabel1.Left := ScaleX(176);
WLabel1.Top := ScaleY(80);
WLabel1.Width := ScaleX(301);
WLabel1.Height := ScaleY(54);
WLabel1.AutoSize := False;
WLabel1.WordWrap := True;
WLabel1.Font.Size := 11;
WLabel1.Font.Style := [fsBold];

WLabel1.Caption := WizardForm.WelcomeLabel1.Caption;
WLabel1.Transparent := True;
WLabel1.Parent := WizardForm.WelcomePage;
WLabel2 :=TLabel.Create(WizardForm);
WLabel2.Top := ScaleY(130);
WLabel2.Left := ScaleX(176);
WLabel2.Width := ScaleX(301);
WLabel2.Height := ScaleY(234);
WLabel2.AutoSize := False;
WLabel2.WordWrap := True;

WLabel2.Caption := WizardForm.WelcomeLabel2.Caption;
WLabel2.Transparent := True;
WLabel2.Parent := WizardForm.WelcomePage;
WizardForm.WizardBitmapImage2.Width := 497;
WizardForm.WizardBitmapImage2.Height := 313;
FLabel1 := TLabel.Create(WizardForm);
FLabel1.Left := ScaleX(176);
FLabel1.Top := ScaleY(80);
FLabel1.Width := ScaleX(301);
FLabel1.Height := ScaleY(54);
FLabel1.AutoSize := False;
FLabel1.WordWrap := True;
FLabel1.Font.Size := 11;
FLabel1.Font.Style := [fsBold];

FLabel1.Caption := WizardForm.FinishedHeadingLabel.Caption;
FLabel1.Transparent := True;
FLabel1.Parent := WizardForm.FinishedPage;
FLabel2 :=TLabel.Create(WizardForm);
FLabel2.Top := ScaleY(130);
FLabel2.Left := ScaleX(176);
FLabel2.Width := ScaleX(301);
FLabel2.Height := ScaleY(53);
FLabel2.AutoSize := False;
FLabel2.WordWrap := True;

FLabel2.Caption := '{#MyAppName} установлена на Ваш компьютер.' #13#13
'Нажмите «Завершить», чтобы выйти из программы установки.';
FLabel2.Transparent := True;
FLabel2.Parent := WizardForm.FinishedPage;
begin
PageNameLabel := TLabel.Create(WizardForm);
with PageNameLabel do
begin
Left := ScaleX(10);
Top := ScaleY(10);
Width := ScaleX(300);
Height := ScaleY(14);
AutoSize := False;
WordWrap := True;
Font.Style := [fsBold];
Transparent := True;
Parent := WizardForm.MainPanel;
end;

PageDescriptionLabel := TLabel.Create(WizardForm);
with PageDescriptionLabel do
begin
Left := ScaleX(15);
Top := ScaleY(25);
Width := ScaleX(400);
Height := ScaleY(30);
AutoSize := False;
WordWrap := True;
Transparent := True;
Parent := WizardForm.MainPanel;
end;

with WizardForm do
begin
PageNameLabel.Hide;
PageDescriptionLabel.Hide;
with MainPanel do
begin
with WizardSmallBitmapImage do
begin
Left := ScaleX(0);
Top := ScaleY(0);
Width := Mainpanel.Width;
Height := MainPanel.Height;
end;
end;
end;
end;
end;

procedure InitializeWizard2();
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;

function InitializeSetup(): Boolean;
begin
	ExtractTemporaryFile('tiger_v2.cjstyles');
	LoadSkin(ExpandConstant('{tmp}\tiger_v2.cjstyles'), '');
	Result := True;
end;

procedure InitializeWizard();
begin
InitializeWizard1();
InitializeWizard2();
end;

procedure DeinitializeSetup();
begin
  ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0);
  UnloadSkin();
end;

procedure CurPageChanged(CurPageID: Integer);
begin
begin
PageNameLabel.Caption := WizardForm.PageNameLabel.Caption;
PageDescriptionLabel.Caption := WizardForm.PageDescriptionLabel.Caption;
end;
end;

-------
Если я знаю, что знаю мало, я добьюсь того, чтобы знать больше... В.И. Ленин
Krinkels.org - сжатие данных и создание инсталляторов


Отправлено: 20:40, 17-04-2011 | #1368


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

Ветеран


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

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


Цитата R.i.m.s.k.y.:
Типа HKCU32/HKCU64? это да, но ...Software\Wow6432Node\... оно не учитывает, тоже проверил »
Цитата Лександер:
оно учитывает, я-же говорю »
SEREGA!!! рассуди нас, скудоумных, как правильно?

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


Отправлено: 20:48, 17-04-2011 | #1369


Старожил


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

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


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

-------
Стремись не к тому, чтобы добиться успеха, а к тому, чтобы твоя жизнь имела смысл.(Альберт Эйнштейн)


Отправлено: 20:50, 17-04-2011 | #1370



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Утилиты - [addon] Inno Setup CrOsP Наборы обновлений для Windows XP/2003/Windows 7 33 11-05-2011 16:03
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] Serega Автоматическая установка приложений 2651 08-11-2010 18:34
Inno Setup 5.3.6 OSZone Software Новости программного обеспечения 0 15-11-2009 17:30
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59
Inno Setup tradeukraine Вебмастеру 3 13-06-2006 20:39




 
Переход