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

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

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

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

Ветеран


Contributor


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


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

Профиль | Отправить 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

 

Аватара для TERMINAL

Ветеран


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

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


Gnom_aka_Lexander, Есть архив 90мб, я его распаковал и скомпилировал=на выходе получается размер 240мб, если сжимаю на максимуме зипом, тоже получается 90мб. А режим ультра может ошибки выдавать при распаковке на старых компах?

-------
Автоматизация прежде всего....


Отправлено: 16:24, 27-02-2013 | #1741



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

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


Аватара для Gnom_aka_Lexander

Ветеран


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

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


TERMINAL, секции Setup и Files покажи тогда.
P.S. Можешь в личку, если опасаешься чего-то. не глядя на эти секции невозможно определить почему у тебя не жмутся файлы.
Цитата TERMINAL:
А режим ультра может ошибки выдавать при распаковке на старых компах? »
Нет,не должен. С чего-бы?

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


Последний раз редактировалось Gnom_aka_Lexander, 27-02-2013 в 16:39.


Отправлено: 16:26, 27-02-2013 | #1742


Аватара для TERMINAL

Ветеран


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

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


Gnom_aka_Lexander, спасибо-разобрался.

-------
Автоматизация прежде всего....


Отправлено: 16:49, 27-02-2013 | #1743


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


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

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


Цитата cliff99:
Прошу мне помочь кое в чём.
Я в установщике использую опцию выбор компонентов.
[Components]
Name: g0; Description: Half - Life 2 Cinematic Mod Models Setup; Types: full custom; Flags: disablenouninstallwarning checkablealone fixed
Name: g0\c8; Description: Установить доп контент и так далее; Types: full custom; Flags: dontinheritcheck
[Files]
Source: "E:\Setup Final ex\addons\MM\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension; Components: g0\c8
И при компиляции всё благополучно создаётся. Но эти самые компоненты ужимаются стандартными средствами inno setup.
Мне же нужно чтобы при выборе компонента он подхватывался из файла bin(arc) , допустим компонент1.bin и ужимал я его сам.
Дайте мне какой пример. Или обьясните как сделать. »

Отправлено: 17:48, 27-02-2013 | #1744


Аватара для Tco 03

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


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

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


Johny777
Цитата Johny777:
для чтения ини используй сразу вложенность функций Ini := ConvertStringToIniFile(TextFileFromInternetToString('http://tululu.org/txt.php?id=38061'));
PS: в данном случае качается не ини. Это просто пример »


insombia
Цитата insombia:
как убрать кнопку отмены isdone чтобы стандартная отвечала за отмену? »
Ты думаешь что автор сделал отдельную кнопку отмены, чтобы потешить своё самолюбие? Типа: -"Раз сделал свою библиотеку, дай-ка и прикручу свою кнопочку"!
Могу предложить альтернативное решение, но при распаковке, при нажатии на кнопку отмена, архивы будут продолжать распаковываться и если пользователь будет долго думать, то архивы уже распакуются Проще сделать её точно такую же, как и оригинальная кнопка "Отмена" ибо без неё - будет уже косяк!
Если всё ещё настаиваешь, то можно сделать как-то так (на примере версии ISDone 0.6d):
читать дальше »

Убераешь кнопку MyCancelButton
В процедуре: CurStepChanged убераешь: WizardForm.CancelButton.Hide
В процедуре: HideControls убераешь: MyCancelButton.Hide
За место процедуры: CancelButtonOnClick вставляешь это:
Код: Выделить весь код
procedure CancelButtonClick(CurPage: Integer; var Cancel, Confirm: Boolean);
begin
  Cancel:=False;
  Confirm:=False;
if MsgBox(SetupMessage(msgExitSetupMessage), mbConfirmation, MB_YESNO) = idYes
then begin
if not ISDoneError then begin
  SuspendProc;
  Cancel:=True;
end else begin
 ISDoneCancel:=1;
 ResumeProc;
end;
end;
end;
Не говорю что это единственное решение, так как нет предела для совершенства...


cliff99
Цитата cliff99:
Я автор популярного (как все утверждают) »
Нет лучше рекламы, чем самореклама!
Как мне однажды ответили на соседнем форуме: -"Тебе скажи - ты потом сделаешь RePack и будешь всем хвастаться". Мне кажется - сейчас как раз тот случай.

читать дальше »
Ну и я в свою очередь, как фанат Half-Life скажу. Этот мод как сказка - чем дальше, тем модели всё страшнее... И у автора (Juergen Vierheilig) явно что-то не в порядке... - сделал из Half-Life какую-то порнуху.

Последний раз редактировалось Tco 03, 27-02-2013 в 18:29.

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

Отправлено: 18:10, 27-02-2013 | #1745


Аватара для Tco 03

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


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

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


В версии ISFreeArcExtract v.4.1 от Shegorat всё досконально ясно:
читать дальше »
Код: Выделить весь код
[ArcFiles]
Source: {src}\*.bin; DestDir: {app}; Disk: 1;
Source: {src}\Data2.bin; DestDir: {app}\data; Disk: 1; Components: Russian;
Source: {src}\Data3.bin; DestDir: {app}\data2; Disk: 1; Components: English;
Source: {src}\Data4.bin; DestDir: {app}\data3; Disk: 2;
Source: {src}\Data5.bin; DestDir: {app}\data4; Disk: 2; Components: Russian;
Source: {src}\Data6.bin; DestDir: {app}\data5; Disk: 2; Components: Russian;

Source     - Name of the archive
DestDir    - Destination directory for unpacking archives
Components - Names of components that need for unpacking archive
Tasks      - Names of tasks that need for unpacking archive
Disk       - Number of the disk that contains the archive
Password   - Acrhive password, if archive is encrypted (temporary not supported by unarc.dll)
FilesList  - Path to textfile with filenames which need to unpack from archives (temporary not supported by unarc.dll)

Отправлено: 18:49, 27-02-2013 | #1746


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


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

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


Чёрт побери. Я не рекламирую ничего. Я даю понять что на доброе дело пойдёт ваша помощь.
Вот и всё.

Отправлено: 18:54, 27-02-2013 | #1747


Аватара для Johny777

Ветеран


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

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


cliff99, вот тебе пример простой распаковки архива FreeArc в зависимости от выбранных компонентов на этапе ssPostInstall с отображением прогресса распаковки
я просто упростил и немного изменил код из шапки. Надеюсь это то что тебе нужно

пример без кнопки отмены
читать дальше »
Код: Выделить весь код
[Setup]
AppName=FreeArc Example
AppVerName=FreeArc Example 3.3
DefaultDirName={pf}\FreeArc Example
OutputDir=.

[Components]
Name: "main"; Description: "Main Files";
Name: "help"; Description: "Help Files"; 

[Files]
Source: unarc.dll; DestDir: {tmp}; Flags: dontcopy

[code]
const
  CP_ACP    = 0;           
  CP_UTF8   = 65001;         

function FreeArcExtract (callback: Longword; cmd1, cmd2, cmd3, cmd4, cmd5, cmd6, cmd7, cmd8, cmd9, cmd10: String): integer; external 'FreeArcExtract@files:unarc.dll cdecl';
function MultiByteToWideChar(CodePage: UINT; dwFlags: DWORD; lpMultiByteStr: PAnsiChar; cbMultiByte: Integer; lpWideCharStr: PAnsiChar; cchWideChar: Integer): Longint; external 'MultiByteToWideChar@kernel32.dll stdcall';
function WideCharToMultiByte(CodePage: UINT; dwFlags: DWORD; lpWideCharStr: PAnsiChar; cchWideChar: Integer; lpMultiByteStr: PAnsiChar; cbMultiByte: Integer; lpDefaultChar: Integer; lpUsedDefaultChar: Integer): Longint; external 'WideCharToMultiByte@kernel32.dll stdcall';

function AnsiToUtf8(const strSource: String): String;
var
  WideCharBuf: String;
begin
  SetLength( WideCharBuf, Length( strSource + chr(0) ) * 2 );
  SetLength( Result, Length( strSource + chr(0) ) * 2 );
  MultiByteToWideChar( CP_ACP, 0, strSource + chr(0), -1, WideCharBuf, Length(WideCharBuf) );
  WideCharToMultiByte( CP_UTF8, 0, WideCharBuf, -1, Result, Length(Result), 0, 0);
end;


function ArcCallBack(what: PAnsiChar; WriteSize, FileSize: Integer; str: PAnsiChar): Integer;
begin
  if (WriteSize <> 0) and (FileSize <> 0) then with WizardForm do
  begin
    ProgressGauge.Max := FileSize;
    ProgressGauge.Position := WriteSize;
    StatusLabel.Caption := 'Filesize:' + #32 + IntToStr(FileSize) + #32 + 'MB,' + #32 + 'Extracted:' + #32 + IntToStr(WriteSize) + #32 + 'MB';
  end;
  Application.ProcessMessages;
end;


procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssPostInstall then
  begin
    WizardForm.ProgressGauge.Position := 0;
    if IsComponentSelected('main') then FreeArcExtract (CallbackAddr('ArcCallBack'), 'x', '-o+', '-dp' + AnsiToUtf8('C:\setup'), '--', AnsiToUtf8('C:\Users\FreeArc\FaT-170.mp4.arc'), '', '', '', '', '');
    if IsComponentSelected('help') then FreeArcExtract (CallbackAddr('ArcCallBack'), 'x', '-o+', '-dp' + AnsiToUtf8('C:\setup'), '--', AnsiToUtf8('другой архив'), '', '', '', '', '');
  end;
end;


с кнопкой отмены:
читать дальше »
Код: Выделить весь код
[Setup]
AppName=FreeArc Example
AppVerName=FreeArc Example 3.3
DefaultDirName={pf}\FreeArc Example
OutputDir=.

[Components]
Name: "main"; Description: "Main Files";
Name: "help"; Description: "Help Files"; 

[Files]
Source: unarc.dll; DestDir: {tmp}; Flags: dontcopy

[code]
const
  CP_ACP    = 0;           
  CP_UTF8   = 65001;

var
  CancelCode: Integer;

function FreeArcExtract (callback: Longword; cmd1, cmd2, cmd3, cmd4, cmd5, cmd6, cmd7, cmd8, cmd9, cmd10: String): integer; external 'FreeArcExtract@files:unarc.dll cdecl';
function MultiByteToWideChar(CodePage: UINT; dwFlags: DWORD; lpMultiByteStr: PAnsiChar; cbMultiByte: Integer; lpWideCharStr: PAnsiChar; cchWideChar: Integer): Longint; external 'MultiByteToWideChar@kernel32.dll stdcall';
function WideCharToMultiByte(CodePage: UINT; dwFlags: DWORD; lpWideCharStr: PAnsiChar; cchWideChar: Integer; lpMultiByteStr: PAnsiChar; cbMultiByte: Integer; lpDefaultChar: Integer; lpUsedDefaultChar: Integer): Longint; external 'WideCharToMultiByte@kernel32.dll stdcall';

function AnsiToUtf8(const strSource: String): String;
var
  WideCharBuf: String;
begin
  SetLength( WideCharBuf, Length( strSource + chr(0) ) * 2 );
  SetLength( Result, Length( strSource + chr(0) ) * 2 );
  MultiByteToWideChar( CP_ACP, 0, strSource + chr(0), -1, WideCharBuf, Length(WideCharBuf) );
  WideCharToMultiByte( CP_UTF8, 0, WideCharBuf, -1, Result, Length(Result), 0, 0);
end;


function ArcCallBack(what: PAnsiChar; WriteSize, FileSize: Integer; str: PAnsiChar): Integer;
begin
  if (WriteSize <> 0) and (FileSize <> 0) then with WizardForm do
  begin
    ProgressGauge.Max := FileSize;
    ProgressGauge.Position := WriteSize;
    StatusLabel.Caption := 'Filesize:' + #32 + IntToStr(FileSize) + #32 + 'MB,' + #32 + 'Extracted:' + #32 + IntToStr(WriteSize) + #32 + 'MB';
  end;
  Application.ProcessMessages;
  Result:= CancelCode;
end;

procedure CancelFreeArcextracting(Sedner: TObject);
begin
  CancelCode := -127;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssPostInstall then
  begin
    WizardForm.ProgressGauge.Position := 0;
    with TButton.Create(nil) do
    begin
      Parent := WizardForm.InstallingPage;
      Caption := SetupMessage(msgButtonCancel);
      SetBounds(ScaleX(100), ScaleY(100), ScaleX(75), ScaleY(25));
      OnClick := @CancelFreeArcextracting;
    end;
    if IsComponentSelected('main') and (CancelCode <> -127) then FreeArcExtract (CallbackAddr('ArcCallBack'), 'x', '-o+', '-dp' + AnsiToUtf8('C:\setup'), '--', AnsiToUtf8('C:\Users\Âîâà\Desktop\FreeArc\FaT-170.mp4.arc'), '', '', '', '', '');
    if IsComponentSelected('help') and (CancelCode <> -127) then FreeArcExtract (CallbackAddr('ArcCallBack'), 'x', '-o+', '-dp' + AnsiToUtf8('C:\setup'), '--', AnsiToUtf8('äðóãîé àðõèâ'), '', '', '', '', '');
  end;
end;

теперь из-за тебя я знаю немного фриарк модуль. Спасибо!
библиотеку найдёшь тут http://freearc.org/download/InnoSetu...noSetup3_5.zip
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:42, 27-02-2013 | #1748


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


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

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


Johny777,
Спасибо. Библиотека у меня уже встроена и настроена.
Теперь просто компоненты привяжу.

Мне нужны были эти строки.

Код: Выделить весь код
Name: "main"; Description: "Main Files"; Name: "help"; Description: "Help Files"; и if IsComponentSelected('main') then FreeArcExtract (CallbackAddr('ArcCallBack'), 'x', '-o+', '-dp' + AnsiToUtf8('C:\setup'), '--', AnsiToUtf8('C:\Users\FreeArc\FaT-170.mp4.arc'), '', '', '', '', ''); if IsComponentSelected('help') then FreeArcExtract (CallbackAddr('ArcCallBack'), 'x', '-o+', '-dp' + AnsiToUtf8('C:\setup'), '--', AnsiToUtf8('другой архив'), '', '', '', '', '');

Отправлено: 21:36, 27-02-2013 | #1749


Ветеран


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

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


Вот решил поделится своим скриптом,все кто хочет можете качать,скрипт без каких либо наворотов с подсказками в коде для новичков


cкрипт
P.S. большое спасибо Rikill/Wr0ng1eR за помощь
Обновил скрипт добавил текстурированные кнопки,музыку и на всякий случай srep самый новый

Последний раз редактировалось insombia, 28-02-2013 в 23:43.

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

Отправлено: 21:37, 27-02-2013 | #1750



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




 
Переход