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

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

 

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


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

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


insombia, так
читать дальше »
[Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirname={pf}\MyApp

[code]
const
GWL_STYLE = -16;

WS_MINIMIZEBOX = $20000;
WS_MAXIMIZEBOX = $10000;

function SetWindowLong(Wnd: HWnd; Index: Integer; NewLong: Longint): Longint; external 'SetWindowLongA@user32.dll stdcall';
function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint; external 'GetWindowLongA@user32.dll stdcall';

procedure initializeWizard();
begin
SetWindowLong(WizardForm.handle, GWL_STYLE, GetWindowLong(WizardForm.handle, GWL_STYLE)and(not WS_MINIMIZEBOX)and(not WS_MAXIMIZEBOX));
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:11, 22-09-2011 | #3191



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

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


Ветеран


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

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


Qu@dr0
[Icons]
читать дальше »
Name: "{group}\delphi"; Filename: "{app}\DeadIslandGame.exe"; WorkingDir: "{app}";

[Run]
Description: "{cm:LaunchProgram, delphi}"; Filename: "{app}\DeadIslandGame.exe"; WorkingDir: "{app}"; Flags: nowait postinstall skipifsilent unchecked
насчет ввода ника учись пользоваться поисковиком вчера был вопрос и на него был ответ так что ищи

Отправлено: 18:32, 22-09-2011 | #3192


Ветеран


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

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


Какая то фигня с исоде не распаковывает архивы хоть они указаны если что скрипт только в ЛС

Последний раз редактировалось insombia, 22-09-2011 в 19:13.


Отправлено: 19:00, 22-09-2011 | #3193


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


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

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


insombia,
Compile Error!
Line: 140
Error: Column 35:
Unknown identifier 'Russian'
Чё вместо 'Russian' вписать? 0_о

А вообще, мне не нужны ни клан тег, ни выбор языка, как их выкорчевать из скрипта? Нужно только окно с формой ввода, введённые данные прописываются в файл .ini, потом идёт последнее окно с кнопкой "Завершить" и пунктом из секции [Run] и всё. Help.

Отправлено: 19:35, 22-09-2011 | #3194


Аватара для Gnom_aka_Lexander

Ветеран


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

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


Qu@dr0, Вот так все работает, проверил. Лучше, если ини-файл будет в папке, где ему положено быть. В выделенной строке нужно указать путь к нему. оставил никэдит и выбор яззыка. Там был косячек, исправил.

читать дальше »
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[code]
var
{ NicEdit } Label1: TLabel; { NicEdit }
{ Lang } Label2: TLabel;{ Lang }
{ NicEdit } NicEdit: TNewEdit; { NicEdit }
{ Lang } Lang: TNewComboBox; { Lang }

procedure InitializeWizard();
begin
{ NicEdit }
Label1 := TLabel.Create(WizardForm);
with Label1 do
begin
Parent := WizardForm.FinishedPage;
Caption := 'Введите ваш никнейм:';
Transparent := False;
Left := ScaleX(24);
Top := ScaleY(192);
Width := ScaleX(118);
Height := ScaleY(13);
end;
{ NicEdit }

{ Lang }
Label2 := TLabel.Create(WizardForm);
with Label3 do
begin
Parent := WizardForm.FinishedPage;
Caption := 'Выбрите язык клиента:';
Transparent := False;
Left := ScaleX(24);
Top := ScaleY(240);
Width := ScaleX(121);
Height := ScaleY(13);
end;
{ Lang }

{ NicEdit }
NicEdit := TNewEdit.Create(WizardForm);
with NicEdit do
begin
Parent := WizardForm.FinishedPage;
Left := ScaleX(24);
Top := ScaleY(208);
Width := ScaleX(121);
Height := ScaleY(21);
end;
{ NicEdit }

{ Lang }
Lang := TNewComboBox.Create(WizardForm);
with Lang do
begin
Parent := WizardForm.FinishedPage;
Left := ScaleX(24);
Top := ScaleY(256);
Width := ScaleX(121);
Height := ScaleY(21);
DropDownCount := 2;
MaxLength := 2;
ParentColor := True;
Text := 'Русский';
Items.Text := 'Русский' + #13#10 +
'Английский';
end;
{ Lang }
end;

function NextButtonClick(CurPageID: Integer): Boolean;
var s1,s2:String;
begin
If CurPageID=wpFinished Then
Begin

{ Lang } If Lang.Text = 'Русский' Then s1:='Russian' else s1:='English'; { Lang }

{ NicEdit } s2:=NicEdit.Text; { NicEdit }
{ Lang } SetIniString('Emulator', 'Language', s1, ExpandConstant('{app}\rev.ini'));{ Lang }
{ NicEdit } SetIniString('steamclient', 'PlayerName', s2, ExpandConstant('{app}\rev.ini')); { NicEdit }
end;
Result:=True;
end;
куски заключенные между { NicEdit } и { Lang } овечают за понятное, думаю, действие

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

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

Отправлено: 19:52, 22-09-2011 | #3195


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


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

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


Лександер,
получается такое:

Зная наших пользователей, 90% просто не заметят форму ввода ника.

Как сделать, чтобы перед окном "Завершение мастера установки" появилось такое окно:

Это намного удобнее, и пользователь точно не пропустит его.
Желательно, чтобы кнопка "Далее" была недоступна, пока в форму не введен хотя бы один символ (или чтобы при нажатии "Далее" появлялось окно "Введите имя игрока"), и чтобы текст над и под формой ввода выравнивался по ширине.
Это было бы идеально.

А окно выбора языка мне не нужно, т.к. моя аудитория - только русскоговорящие пользователи.

Буду благодарен за помощь.

Отправлено: 21:54, 22-09-2011 | #3196


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


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

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


такой вопрос.
DisableAppendDir кануло в лету, чем его заменили ?
как сделать так, чтобы в конец пути установки не добавлялось DefaultDirName ?

Отправлено: 00:03, 23-09-2011 | #3197


Аватара для nik1967

Старожил


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

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


murlakatamenka, AppendDefaultDirName=false

-------
Если сообщение оказалось полезным для Вас, то помимо спасибо, можно нажать на "Полезное сообщение".

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

Отправлено: 00:44, 23-09-2011 | #3198


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

Ветеран


Contributor


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

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


Qu@dr0,
Код: Выделить весь код
[code]
const
    CP_ACP = 0;
    CP_UTF8 = 65001;

var
    RevEmuPage: TInputQueryWizardPage;
    ConvertCheckBox: TCheckBox;

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, lpDefaultChar, lpUsedDefaultChar: Integer): Longint;
external 'WideCharToMultiByte@kernel32.dll stdcall';

function StringToWideString(const aStr: String; codePage: Word): String;
var
    len: Integer;
begin
    len := MultiByteToWideChar(codePage, 0, aStr, -1, '', 0);
    if len > 0 then
    begin
        SetLength(Result, (len*2)-2);
        MultiByteToWideChar(codePage, 0, aStr, -1, Result, Length(Result));
    end;
end;

function WideStringToString(const wStr: String; codePage: Word): String;
var
    len: Integer;
begin
    len := WideCharToMultiByte(codePage, 0, wStr, -1, '', 0, 0, 0);
    if len > 0 then
    begin
        SetLength(Result, len-1);
        WideCharToMultiByte(codePage, 0, wStr, -1, Result, Length(Result), 0, 0);
    end;
end;

function SetNickname(Nickname: String; IsConvert: Boolean): String;
begin
    Result := Nickname;
    if IsConvert then Result := WideStringToString(StringToWideString(Result, CP_ACP), CP_UTF8);
end;

procedure NicknameOnChange(Sender: TObject);
begin
    WizardForm.NextButton.Enabled := RevEmuPage.Values[0] <> '';
end;

//
procedure InitializeWizard();
begin
    RevEmuPage := CreateInputQueryPage(wpInfoAfter, 'Настройка RevEmu', '', 'Пожалуйста, введите данные профиля и нажмите Далее.');
    with RevEmuPage do
    begin
        Add('Ник:', False);
        Edits[0].OnChange := @NicknameOnChange;
    end;
    ConvertCheckBox := TCheckBox.Create(WizardForm);
    with ConvertCheckBox do
    begin
        Parent := RevEmuPage.Surface;
        SetBounds(RevEmuPage.Edits[0].Left, RevEmuPage.Edits[0].Top + ScaleY(40), ScaleX(200), ScaleY(17));
        Caption := 'Сохранить в UTF-8';
    end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
    if CurPageID = RevEmuPage.ID then WizardForm.NextButton.Enabled := RevEmuPage.Values[0] <> '';
    if CurPageID = wpFinished then SetIniString('steamclient', 'PlayerName', SetNickname(RevEmuPage.Values[0], ConvertCheckBox.Checked), ExpandConstant('{app}\rev.ini'));
end;

Последний раз редактировалось El Sanchez, 23-09-2011 в 13:30.

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

Отправлено: 08:33, 23-09-2011 | #3199


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


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

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


El Sanchez
Хоть программированием я никогда не занимался и уровень знаний в этой области нулевой, но ошибку (спасибо, что была она не очень сложной) в скрипте я нашёл и даже исправил))) Правда, интуиции хватило только на это, да ещё на изменение имеющихся текстов в окне...
Пока получилось такое:


Вопросы:
1) Как сделать, чтобы строка с галочкой (про сохранение в UTF-8) не была так далеко от формы ввода имени, а располагалась прямо под ней вплотную?
2) Как добавить под этой строкой про UTF-8 (не прямо под ней, а на 3 пробела ниже) информацию следующего содержания:
"Вы в любое время сможете сменить никнейм, для этого войдите в папку игры, откройте Блокнотом файл rev.ini, найдите строчку PlayerName и после знака "=" впишите желаемый никнейм."
И чтобы выравнивание этого текста было по ширине (так выглядит лучше)?

Заранее благодарю за помощь!

Отправлено: 13:08, 23-09-2011 | #3200



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




 
Переход