Имя пользователя:
Пароль:
 | Правила  

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

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

Аватара для El Sanchez

Ветеран


Contributor


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


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

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


Изменения
Автор: El Sanchez
Дата: 16-02-2015
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
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] - Скачать;

  • ISSJoiner - Программа для объединения нескольких скриптов InnoSetup в один.
    Последняя версия: 3.0 [23.07.2009]

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


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

Отправлено: 03:49, 21-05-2012

 

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


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

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


Ivan_009,
Отправил в ЛС.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:21, 31-08-2012 | #781



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

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


Аватара для SatHan

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


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

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


Johny777, R.i.m.s.k.y., Спасибо.
R.i.m.s.k.y., да это было не важно что из окон открыто. Главное было параметры shutdown в инно узнать.
просто я прописывал перезагрузку как указала команда shutdown help
[Run]
Filename: shutdown.exe; Parameters: -r -t 5; Flags: runhidden nowait postinstall unchecked
что в конечном счете у меня перезагрузка не происходила. а оказалось что в инно параметры задаются совсем другим способом.

а так для надежности есть более радикальный и удобный способ. например
читать дальше »
Код: Выделить весь код
[#Code]
var
Res : integer;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep=usDone then
begin
if MsgBox('Перезагрузить компьютер?',mbconfirmation, mb_yesno) = IDYES then
begin
Exec('shutdown.exe ', ' /r /t 5', ExpandConstant('{sys}'), SW_HIDE, ewWaitUntilIdle, Res);
end;
end;
end;

Последний раз редактировалось SatHan, 31-08-2012 в 18:17.


Отправлено: 17:54, 31-08-2012 | #782


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

Ветеран


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

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


SatHan, есть глобальная функция NeedRestart - почитай про нее

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

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

Отправлено: 17:55, 31-08-2012 | #783


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


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

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


El Sanchez, в том варианте, который вы предложили, при компиляции пишет type mismatch
Вот код:

Код: Выделить весь код
var
   phMPQ: THandle;

function SFileSetAddFileCallback(hMpq: THandle; pfnAddFileCB, pvUserData: Longint): BOOL; external 'SFileSetAddFileCallback@files:stormlib.dll stdcall';

procedure AddFileCallback(pvUserData: Longint; dwBytesWritten, dwTotalBytes: DWORD; bFinalCall: BOOL);
begin
    //
end;

//
procedure CurStepChanged(CurStep: TSetupStep);
begin
    SFileSetAddFileCallback (phMPQ, @AddFileCallback, 0);
end;

А вот так пробовал я. В этом случае компилируется, но выходит ошибка в инсталляторе
"Exeption: Accsess violation at adress xxxxxxxx. Write of address xxxxxxxx


Код: Выделить весь код
var
   phMPQ: THandle;

type
  TCallback = procedure (pvUserData: Integer; dwBytesWritten, dwTotalBytes: DWORD; bFinalCall: BOOL);

function SFileSetAddFileCallback(hMpq: THandle; pfnAddFileCB: TCallback; pvUserData: Integer): BOOL; external 'SFileSetAddFileCallback@files:stormlib.dll stdcall';

procedure AddFileCallback(pvUserData: Integer; dwBytesWritten, dwTotalBytes: DWORD; bFinalCall: BOOL);
begin
    //
end;

//
Procedure CurPageChanged(CurPageID: Integer);
begin
 
    SFileSetAddFileCallback (phMPQ, @AddFileCallback, 0);
end;

Отправлено: 21:20, 31-08-2012 | #784


Аватара для SatHan

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


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

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


Цитата SatHan:
подскажите пожалуйста как сделать чтоб при отмене инсталятор быстро завершался? »
может как можно (выгрузкой Unload или таймерами KillTimer) завершить? в помощи почитал но ничего не понял совсем что там нада делать.

при принудительном завершении setup.tmp и setup.exe всё равно нагрузка идёт, в %temp% обнаружил папки *..tmp. в одной из них есть ещё папка _isetup в ней два файла _RegDLL.tmp и _shfoldr.dll может из за них идёт нагрузка. мож на них нада какую процедуру повесить?

Отправлено: 07:04, 01-09-2012 | #785


Аватара для El Sanchez

Ветеран


Contributor


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

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


Цитата al1511:
El Sanchez, в том варианте, который вы предложили, при компиляции пишет type mismatch
Вот код: »
Цитата al1511:
SFileSetAddFileCallback (phMPQ, @AddFileCallback, 0); »
al1511, ну и где я это предлагал? Я написал:
Код: Выделить весь код
SFileSetAddFileCallback(phMPQ, CallbackAddr('AddFileCallback'), 0);
CallbackAddr - функция из расширенной китайской версии Inno, возвращающая указатель на callback-функцию AddFileCallback. Если у вас оригинальная версия, то для работы с callback-функциями понадобится сторонняя библиотека innocallback.dll
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:20, 01-09-2012 | #786


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


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

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


Цитата El Sanchez:
CallbackAddr - функция из расширенной китайской версии Inno, »
Я не знал, что это функция из расширенной версии. Спасибо

Отправлено: 18:23, 02-09-2012 | #787


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


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

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


Callback работает, но теперь возникла другая проблема )) Во время упаковки файлов в архив окно Inno Setup зависает (как будто ждёт завершения выполнения dll) и отвисает только тогда, когда заканчивается добавление файлов в архив... Информация в окне во время добавления файлов не меняется, и окошко даже нельзя двигать...
Помогите, пожалуйста, разобраться!

Отправлено: 10:31, 03-09-2012 | #788


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


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

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


Изображения
Тип файла: png Снимок.PNG
(121.6 Kb, 20 просмотров)

Народ помогите новичку! слепил скрипт из is game script generator и решил вставить скин из isskins при компиляции выдает такую ошибку, что не так сделал?

Код: Выделить весь код
[Setup]
SourceDir=.
OutputDir=Setup
AppName=GTA San Andreas
AppVerName=GTA San Andreas
AppVersion=GTA San Andreas
AppPublisher=Îëåã Ãèíèÿòîâ
AppCopyright=Îëåã Ãèíèÿòîâ
AppPublisherURL=SpiCeMaN@spaces.ru
AppSupportURL=SpiCeMaN@spaces.ru
AppUpdatesURL=SpiCeMaN@spaces.ru
DefaultDirName={pf}\GTA San Andreas
DefaultGroupName=GTA San Andreas
AllowNoIcons=yes
OutputBaseFilename=setup
WizardImageFile=C:\Users\Vadim\Desktop\ISS\GTA-San-Andreas.bmp
WizardSmallImageFile=C:\Users\Vadim\Desktop\ISS\grand_theft_auto_san_andreas_icon_v2_1_by_kamizanon-d4tuvym.bmp
SetupIconFile=C:\Users\Vadim\Desktop\ISS\grand_theft_auto_san_andreas_icon_v2_1_by_kamizanon-d4tuvym.ico
WindowVisible=no
WindowShowCaption=no
WindowResizable=no
Compression=lzma/normal
DiskSpanning=yes
DiskSliceSize=2100000000
SlicesPerDisk=1
LicenseFile=license.txt

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

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"

[Files]
Source: "isgsg.dll"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: "bass.dll"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: "C:\Users\Vadim\Desktop\ISS\GTA_San_Andreas-GTA_San_Andreas.mp3"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: C:\Users\Vadim\Desktop\ISS\ISSkin.dll; DestDir: {tmp}; Flags: dontcopy
Source: C:\Users\Vadim\Desktop\ISS\tiger.cjstyles; DestDir: {tmp}; Flags: dontcopy
Source: "C:\GAMES\GTA San Andreas\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension

[Icons]
Name: "{group}\GTA San Andreas"; Filename: "{app}\gta_sa.exe"; WorkingDir: "{app}";
Name: "{userdesktop}\GTA San Andreas"; Filename: "{app}\gta_sa.exe"; WorkingDir: "{app}"; Tasks: desktopicon;
Name: "{group}\{cm:UninstallProgram,GTA San Andreas}"; Filename: "{uninstallexe}"

[Run]
Description: "{cm:LaunchProgram, GTA San Andreas}"; Filename: "{app}\gta_sa.exe"; WorkingDir: "{app}"; Flags: nowait postinstall skipifsilent unchecked

[UninstallDelete]
Type: filesandordirs; Name: "{app}"

[сode]
procedure LoadSkin(lpszPath: String; lpszIniFileName: String);
external 'LoadSkin@files:isskin.dll stdcall';

procedure UnloadSkin();
external 'UnloadSkin@files:isskin.dll stdcall';

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

procedure DeinitializeSetup();
begin
UnloadSkin();
end;



const
  Indent=10;
  dURL=2;

var
  URLLabel,URLLabelShadow:TLabel;

procedure ShowMP3Panel(hMainFrm:HWND;StartVolume:integer;DefMP3Dir,BASSDir,MLabel:PChar;IsShowMP3Info,IsBkgFrmVisible:boolean;ShowTimeMP3Info:integer;dBottom:integer);external 'ShowMP3Panel@files:isgsg.dll stdcall';
procedure KillMP3Panel;external 'KillMP3Panel@files:isgsg.dll stdcall';

procedure URLLabelClick(Sender: TObject);
var
  ErrorCode:integer;
begin
  ShellExec('open','SpiCeMaN@spaces.ru','','',SW_SHOWNORMAL,ewNoWait,ErrorCode);
end;

procedure URLLabelMouseDown(Sender:TObject;Button:TMouseButton;Shift:TShiftState;X,Y:Integer);
begin
  URLLabel.Top:=URLLabel.Top+dURL;
  URLLabel.Left:=URLLabel.Left+dURL;
  URLLabel.Font.Style:=URLLabel.Font.Style+[fsUnderline];
  URLLabel.Font.Color:=clBlue;
  URLLabelShadow.Visible:=False;
end;

procedure URLLabelMouseUp(Sender:TObject;Button:TMouseButton;Shift:TShiftState;X,Y:Integer);
begin
  URLLabel.Top:=URLLabel.Top-dURL;
  URLLabel.Left:=URLLabel.Left-dURL;
  URLLabel.Font.Style:=URLLabel.Font.Style-[fsUnderline];
  URLLabel.Font.Color:=clMaroon;
  URLLabelShadow.Visible:=True;
end;

function InitializeSetup:boolean;
begin
  ExtractTemporaryFile('GTA_San_Andreas-GTA_San_Andreas.mp3');
  ExtractTemporaryFile('bass.dll');
  Result:=True;
end;

procedure InitializeWizard;
begin
  URLLabelShadow:=TLabel.Create(WizardForm);
  with URLLabelShadow do begin
    Top:=ScaleY(331);
    Left:=ScaleX(25);
    Caption:='SpiCeMaN@spaces.ru';
    AutoSize:=True;
    Parent:=WizardForm;
    Transparent:=True;
    Font.Color:=$969696;
    Font.Size:=9;
    Font.Style:=Font.Style+[fsBold];
  end;
  URLLabel:=TLabel.Create(WizardForm);
  with URLLabel do begin
    Top:=ScaleY(331)-dURL;
    Left:=ScaleX(25)-dURL;
    Caption:='SpiCeMaN@spaces.ru';
    AutoSize:=True;
    Parent:=WizardForm;
    Cursor:=crHand;
    Transparent:=True;
    Font.Color:=clMaroon;
    Font.Size:=9;
    Font.Style:=Font.Style+[fsBold];
    BringToFront;
    OnClick:=@URLLabelClick;
    OnMouseDown:=@URLLabelMouseDown;
    OnMouseUp:=@URLLabelMouseUp;
  end;
  ShowMP3Panel(WizardForm.Handle,80,ExpandConstant('{tmp}'),ExpandConstant('{tmp}'),'www.csmania.ru',False,False,0,Indent);
end;

procedure DeinitializeSetup;
begin
  KillMP3Panel;
end;

Отправлено: 11:14, 03-09-2012 | #789


Аватара для Habetdin


Автор проектов


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

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


spice, в секции [code] дублируются одинаковые функции/процедуры InitializeSetup и DeinitializeSetup. Fixed version, вроде должно работать , только секция [code]:
Код: Выделить весь код
procedure LoadSkin(lpszPath: String; lpszIniFileName: String);
external 'LoadSkin@files:isskin.dll stdcall';

procedure UnloadSkin();
external 'UnloadSkin@files:isskin.dll stdcall';

const
  Indent=10;
  dURL=2;

var
  URLLabel,URLLabelShadow:TLabel;

procedure ShowMP3Panel(hMainFrm:HWND;StartVolume:integer;DefMP3Dir,BASSDir,MLabel:PChar;IsShowMP3Info,IsBkgFrmVisible:boolean;ShowTimeMP3Info:integer;dBottom:integer);external 'ShowMP3Panel@files:isgsg.dll stdcall';
procedure KillMP3Panel;external 'KillMP3Panel@files:isgsg.dll stdcall';

procedure URLLabelClick(Sender: TObject);
var
  ErrorCode:integer;
begin
  ShellExec('open','http://spaces.ru/mysite/?name=SpiCeMaN','','',SW_SHOWNORMAL,ewNoWait,ErrorCode);
end;

procedure URLLabelMouseDown(Sender:TObject;Button:TMouseButton;Shift:TShiftState;X,Y:Integer);
begin
  URLLabel.Top:=URLLabel.Top+dURL;
  URLLabel.Left:=URLLabel.Left+dURL;
  URLLabel.Font.Style:=URLLabel.Font.Style+[fsUnderline];
  URLLabel.Font.Color:=clBlue;
  URLLabelShadow.Visible:=False;
end;

procedure URLLabelMouseUp(Sender:TObject;Button:TMouseButton;Shift:TShiftState;X,Y:Integer);
begin
  URLLabel.Top:=URLLabel.Top-dURL;
  URLLabel.Left:=URLLabel.Left-dURL;
  URLLabel.Font.Style:=URLLabel.Font.Style-[fsUnderline];
  URLLabel.Font.Color:=clMaroon;
  URLLabelShadow.Visible:=True;
end;

function InitializeSetup:boolean;
begin
  ExtractTemporaryFile('GTA_San_Andreas-GTA_San_Andreas.mp3');
  ExtractTemporaryFile('bass.dll');
  ExtractTemporaryFile('aqualux.cjstyles');
  LoadSkin(ExpandConstant('{tmp}\aqualux.cjstyles'), '');
  Result:=True;
end;

procedure InitializeWizard;
begin
  URLLabelShadow:=TLabel.Create(WizardForm);
  with URLLabelShadow do begin
    Top:=ScaleY(331);
    Left:=ScaleX(25);
    Caption:='SpiCeMaN@spaces.ru';
    AutoSize:=True;
    Parent:=WizardForm;
    Transparent:=True;
    Font.Color:=$969696;
    Font.Size:=9;
    Font.Style:=Font.Style+[fsBold];
  end;
  URLLabel:=TLabel.Create(WizardForm);
  with URLLabel do begin
    Top:=ScaleY(331)-dURL;
    Left:=ScaleX(25)-dURL;
    Caption:='SpiCeMaN@spaces.ru';
    AutoSize:=True;
    Parent:=WizardForm;
    Cursor:=crHand;
    Transparent:=True;
    Font.Color:=clMaroon;
    Font.Size:=9;
    Font.Style:=Font.Style+[fsBold];
    BringToFront;
    OnClick:=@URLLabelClick;
    OnMouseDown:=@URLLabelMouseDown;
    OnMouseUp:=@URLLabelMouseUp;
  end;
  ShowMP3Panel(WizardForm.Handle,80,ExpandConstant('{tmp}'),ExpandConstant('{tmp}'),'www.csmania.ru',False,False,0,Indent);
end;

procedure DeinitializeSetup;
begin
  UnloadSkin();
  KillMP3Panel;
end;

-------
Рекомендую: $25 на тест виртуального сервера (VPS) за регистрацию по ссылке


Отправлено: 11:59, 03-09-2012 | #790



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 4] El Sanchez Автоматическая установка приложений 2099 22-05-2012 23:16
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] Serega Автоматическая установка приложений 2651 08-11-2010 18:34
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59
Inno Setup tradeukraine Вебмастеру 3 13-06-2006 20:39




 
Переход