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

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

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

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

Ветеран


Contributor


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


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

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


Изменения
Автор: Vadikan
Дата: 22-05-2012
Описание: Закрыто
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
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. Помощь и советы [часть 5]

Отправлено: 18:01, 29-08-2011

 

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


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

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


всем привет!
Мне нужно из установщика создать архив mpq для варкрафта.
Я решил использовать Stormlib.dll
Для начала хотел создать просто пустой архив, даже это не получилось.
На сайте создателя Stormlib.dll есть описание функции SFileCreateArchive

Вот оно:

bool WINAPI SFileCreateArchive(
const char * szMpqName, // Archive file name
DWORD dwFlags, // Additional flags to specify creation details
DWORD dwMaxFileCount, // Limit for file count
HANDLE * phMPQ // Pointer to result HANDLE
);

А вот мой скрипт:

function SFileCreateArchive(szMpqName:string;dwFlagds:Dword;dwMaxFileCount:Dword):BOOL; external 'SFileCreateArchive@files:StormLib.dll stdcall';

procedure CurStepChanged(CurStep: TSetupStep);
begin

if CurStep = ssInstall then begin
repeat
if not SFileCreateArchive (ExpandConstant('{src}\new.mpq'), 2, 4) then break;
until true;
end;
end;


Ошибок никаких не выдаёт, но и файл не создаётся...
Пожалуйста, если кто разбирается, помогите :-)

Вот ссылка на офф. сайт StormLib.dll:
http://www.zezula.net/en/mpq/stormli...tearchive.html

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



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

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


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


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

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


Johny7772 раза написанные [Files] что-то меняют? У меня нескольподобных повторяющихся штук.
Лександерисправлю.

Отправлено: 13:29, 16-03-2012 | #1142


Ветеран


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

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


Лександер, будьте немного сдержаны в высказываниях...

al1511, с данной библиотекой не работал, делаю выводы прочитав по вашей ссылке...
Цитата al1511:
А вот мой скрипт:
function SFileCreateArchive( »
Прежде всего, функция должна выглядеть так:
Код: Выделить весь код
function SFileCreateArchive(szMpqName: PAnsiChar; dwFlagds: DWORD; dwMaxFileCount: DWORD; var phMPQ: THandle): BOOL; external 'SFileCreateArchive@files:StormLib.dll stdcall';
Цитата al1511:
Ошибок никаких не выдаёт »
из кода не видно, где проверка на ошибку? Вы ведь не проверяете if not ... then GetLastError, а так же если всё нормально, то phMPQ должен быть > 0

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

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

Отправлено: 17:44, 16-03-2012 | #1143


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


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

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


Здравствуйте. Возникла проблема - не удается создать в инсталляторе выбор типов установки. Мне нужно привести их к примерно такому виду:

Чтобы был именно такой вид.
Но после изучения некоторой доп. литературы удалось лишь вот это:

Мне нужно чтобы при выборе, например, установки полной версии устанавливались одни файлы, а при выборе портативной версии - другие.
Так вот, может быть у кого найдется скрипт с подобным содержанием или ссылка на документацию, объясняющая решение данной проблемы? Или может кто-нибудь любезно согласится подсказать его? С Inno работаю почти полгода, но выбор типов установки делаю впервые, поэтому и вызвались проблемы. Спасибо.

Отправлено: 23:11, 16-03-2012 | #1144


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


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

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


Ребят, нужно чтобы во время установки, путь автоматически определялся, т.е. что бы установщик искал нужную папку на компьютере и производил в неё установку. можно как нибудь реализовать?

Отправлено: 23:26, 16-03-2012 | #1145


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


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

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


андрейка43, можно, если путь к этой "нужной папке" прописан в реестре.

Отправлено: 00:25, 17-03-2012 | #1146


Аватара для Johny777

Ветеран


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

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


Stable19,
вот это в первую очередь посмотри (из примеров InnoUltra)
http://rghost.ru/37063112
и это
читать дальше »
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program
OutputDir=userdocs:My Program.

[----code]

var
  NewPage: TWizardPage;
  NewRadio1, NewRadio2: TNewRadioButton;

procedure CreatePage();
var
  Header, Button1, Button2: TNewStaticText;
begin
  NewPage := CreateCustomPage(wpWelcome, 'Выбор типа установки', 'Эта программа позволяет выбирать тип установки');

  Header := TNewStaticText.Create(NewPage);
  Header.Parent := NewPage.Surface;
  Header.SetBounds(0, 0, WizardForm.InnerNotebook.Width, ScaleY(50));
  Header.Autosize := False;
  Header.WordWrap := True;
  Header.Caption := 'Эта программа позволяет выбирать тип установки, удобно будет как простым юзерам,  так и очень опытным хакерам, программерам и иже с ними.';

  NewRadio1 := TNewRadioButton.Create(NewPage);
  NewRadio1.Parent := NewPage.Surface;
  NewRadio1.SetBounds(ScaleX(20), ScaleY(60), ScaleX(250), ScaleY(14));
  NewRadio1.Caption := 'Быстрая установка';
  NewRadio1.Checked := True;

  Button1 := TNewStaticText.Create(NewPage);
  Button1.Parent := NewPage.Surface;
  Button1.SetBounds(ScaleX(40), ScaleY(80), WizardForm.InnerNotebook.Width - ScaleX(40), ScaleY(40));
  Button1.Autosize := False;
  Button1.WordWrap := True;
  Button1.Caption := 'Быстрая установка - предназначена для обычных юзеров.';

  NewRadio2 := TNewRadioButton.Create(NewPage);
  NewRadio2.Parent := NewPage.Surface;
  NewRadio2.SetBounds(ScaleX(20), ScaleY(120), ScaleX(250), ScaleY(14));
  NewRadio2.Caption := 'Выборочная установка';

  Button2 := TNewStaticText.Create(NewPage);
  Button2.Parent := NewPage.Surface;
  Button2.SetBounds(ScaleX(40), ScaleY(140), WizardForm.InnerNotebook.Width - ScaleX(40), ScaleY(40));
  Button2.Autosize := False;
  Button2.WordWrap := True;
  Button2.Caption := 'Выборочная установка - Предназначена для очень продвинутых юзеров, а так же тех, кто себя такими считает.';
end;

procedure InitializeWizard();
begin
  CreatePage();
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
  if PageID = wpSelectDir then
  begin
    if NewRadio1.Checked then
      Result := True;
  end;
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:13, 17-03-2012 | #1147


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


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

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


Можете подсказать как заставить инсталятор создать ярык нужного файла?

Так:
Код: Выделить весь код
Name: "{commondesktop}\Spider-Man 2. Enter Electro (PS1)"; Filename: "{app}\psxfin.exe"; Tasks: desktopicon
?

Отправлено: 17:01, 17-03-2012 | #1148


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


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

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


Привет еще раз новому поколению знатоков инно.Так как помощи на мой вопрос не дали,то перечитал все 3 архива форума около 4тысяч страниц за 3 дня.Конечно ветераны как Serega,A1EXXX,BlackSelf и другие много помогали,писали людям примеры скриптов,но тогда было как,то доброжелательнее всё.И вот внимательно,долго перечитав архивы,я снова попрошу помогите,как сделать чтобы размер текущего файла был мегабайтах например 25.8 МБ ,вопрос я задал в сообщении и код скрипта тут и наглядный скриншотhttp://forum.oszone.net/attachment.p...5&d=1331153224 с обведенной проблемкой.Если не трудно выложете мой скрипт исправленный,буду оооочень благодарен.

Отправлено: 17:25, 17-03-2012 | #1149


Ветеран


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

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


Цитата rasim933:
Можете подсказать как заставить инсталятор создать ярык нужного файла? »
Почитайте Справку, раздел [Icons]
Цитата FX-DENIS:
как сделать чтобы размер текущего файла был мегабайтах например 25.8 МБ »
читать дальше »

Код: Выделить весь код
[Languages]
Name: ru; MessagesFile: compiler:Languages\Russian.isl

[CustomMessages]
ru.Bt=Бт
ru.Kb=Кб
ru.Mb=Мб
ru.Gb=Гб
ru.Tb=Тб
ru.Pb=Пб
ru.Eb=Эб

[Code]
var
  ProgressLabel, SizeLabel: TLabel;

function BytesToReadable(Bytes: Extended; Signs: Integer): string;
{ Перевод числа в значение Бт/Кб/Мб/Гб/Тб/Пб/Эб (Signs - количество знаков после запятой)}
var
  ABytes: Extended;
  i: Integer;
begin
  i := 0;
  ABytes := Bytes;
  while Int(ABytes) >= 1024 do
    begin
      ABytes := ABytes/1024;
      i := i + 1;
    end;
  case i of
    0: Result := FloatToStr(Int(ABytes)) + Padl(ExpandConstant('{cm:Bt}'), 1);                // Байт
    1: Result := Format('%.' + IntToStr(Signs) + 'n ' + ExpandConstant('{cm:Kb}'), [ABytes]); // Килобайт
    2: Result := Format('%.' + IntToStr(Signs) + 'n ' + ExpandConstant('{cm:Mb}'), [ABytes]); // Мегабайт
    3: Result := Format('%.' + IntToStr(Signs) + 'n ' + ExpandConstant('{cm:Gb}'), [ABytes]); // Гигабайт
    4: Result := Format('%.' + IntToStr(Signs) + 'n ' + ExpandConstant('{cm:Tb}'), [ABytes]); // Терабайт
    // больше Терабайта конечно не пригодится, покрайней мере в ближайшее время, но всё же...
    5: Result := Format('%.' + IntToStr(Signs) + 'n ' + ExpandConstant('{cm:Pb}'), [ABytes]); // Петабайт
    6: Result := Format('%.' + IntToStr(Signs) + 'n ' + ExpandConstant('{cm:Eb}'), [ABytes]); // Эксабайт
  end;
	StringChange(Result, ',', '.');
end;

procedure Progress();
var
  size: Integer;
begin
  with WizardForm.ProgressGauge do
    ProgressLabel.Caption := IntToStr((Position-Min)/((Max - Min)/100)) + '%';
  FileSize(ExpandConstant(CurrentFileName), size);
  SizeLabel.Caption := BytesToReadable(size, 1);
end;

procedure InitializeWizard();
begin
  ProgressLabel := TLabel.Create(WizardForm);
  with WizardForm.ProgressGauge do
    begin
      ProgressLabel.Top := Top + Height + ScaleY(8);
      ProgressLabel.Left := Left + Width/2 - ScaleX(8);
      ProgressLabel.AutoSize := True;
      ProgressLabel.Parent := WizardForm.InstallingPage;
    end;

  SizeLabel := TLabel.Create(WizardForm);
  with WizardForm.ProgressGauge do
    begin
      SizeLabel.Top := Top + Height + ScaleY(8);
      SizeLabel.Left := Left;
      SizeLabel.AutoSize := True;
      SizeLabel.Parent := WizardForm.InstallingPage;
    end;
end;


Цитата Stable19:
не удается создать в инсталляторе выбор типов установки. Мне нужно привести их к примерно такому виду »
Вам необходимо создать свою страницу, в которой вы пропишите типы установки, а при копировании файлов просто проверяете отмечен ли тот или иной тип, с помощью Check

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

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

Отправлено: 20:36, 17-03-2012 | #1150



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Test ferget Тест-форум 0 24-08-2011 01:25
test ! ! Aaa ! ! Тест-форум 0 23-04-2011 11:29
test Santa aka Snt Тест-форум 0 16-04-2011 22:35
test xolod. Программное обеспечение Linux и FreeBSD 0 19-04-2009 21:03
Test memory KEugeNik Хочу все знать 11 23-11-2003 23:11




 
Переход