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

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

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

Аватара для 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] - Скачать;

  • RegExporter - Фриварная утилита для экспорта реестра и конвертации файлов *.reg и *.ini в инсталляционные скрипты Inno Setup и NSIS.
    Последняя версия: 1.2.0 [23.09.2014] - Скачать;



Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:

Скрипты Inno Setup. Помощь и советы [часть 6]

Отправлено: 11:48, 10-03-2014

 

Ветеран


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

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


Dodakaedr, большое спасибо. А если несколько значений нужно внести, они просто пойдут подряд?
[code]
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program

Код: Выделить весь код
procedure CurStepChanged(CurStep: TSetupStep);
begin
  case CurStep of
  ssDone:
         begin
         RegWriteExpandStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Classes\batfile\shell\edit\command', '', '%SystemRoot%\SysWow64\NOTEPAD.EXE %1');
         RegWriteExpandStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Classes\cmdfile\shell\edit\command', '', '%SystemRoot%\SysWow64\NOTEPAD.EXE %1');
         RegWriteExpandStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Classes\infile\shell\edit\command', '', '%SystemRoot%\SysWow64\NOTEPAD.EXE %1');
      end;
end;
end;
Или нет?

Отправлено: 09:17, 07-10-2014 | #1771



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

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


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

Ветеран


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

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


Цитата МИШАНЧИК:
А если несколько значений нужно внести, они просто пойдут подряд? »
да
инно при установке выполняет скрипт в секции сверху вниз, при удалении наоборот - снизу вверх

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

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

Отправлено: 09:18, 07-10-2014 | #1772


Аватара для ROMKA-1977

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


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

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


Цитата nik1967:
А не тебе ли я случаем давал пример озвучки кнопок, и даже DirBrowseButton? »
nik1967, Если ты об этом коде:
читать дальше »

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputDir=.

[Files]
Source: click.wav; DestDir: {tmp}; Flags: dontcopy;

[code]

var
DirButtonClick: TNotifyEvent;
GroupButtonClick: TNotifyEvent;

function sndPlaySound(lpszSoundName: string; uFlags: cardinal):integer;
external 'sndPlaySoundA@winmm.dll stdcall';

function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile('click.wav');
Result := True;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
sndPlaySound(ExpandConstant('{tmp}\click.wav'), $0001);
Result := True;
end;

function BackButtonClick(CurPageID: Integer): Boolean;
begin
sndPlaySound(ExpandConstant('{tmp}\click.wav'), $0001);
Result := True;
end;

procedure DirBrowseButtonClick(Sender: TObject);
begin
sndPlaySound(ExpandConstant('{tmp}\click.wav'), $0001);
DirButtonClick(Sender);
end;

procedure GroupBrowseButtonClick(Sender: TObject);
begin
sndPlaySound(ExpandConstant('{tmp}\click.wav'), $0001);
GroupButtonClick(Sender);
end;

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
sndPlaySound(ExpandConstant('{tmp}\click.wav'), $0001);
end;

procedure InitializeWizard();
begin
with WizardForm.DirBrowseButton do begin
DirButtonClick := OnClick;
OnClick:= @DirBrowseButtonClick;
end;
with WizardForm.GroupBrowseButton do begin
GroupButtonClick := OnClick;
OnClick := @GroupBrowseButtonClick;
end;
end;

то всё OK! Хотелось бы наложить озвучки при наведении и нажатии на кнопки (для стандартного компилятора).

Есть такой пример:
читать дальше »

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputDir=.
LicenseFile=compiler:License.txt

[Files]
Source: UI\buttonclick.WAV; Flags: dontcopy
Source: UI\buttonclickrelease.WAV; Flags: dontcopy
Source: UI\buttonrollover.WAV; Flags: dontcopy

[code]
function sndPlaySound(lpszSoundName: AnsiString; uFlags: cardinal): Integer;
external 'sndPlaySoundA@winmm.dll stdcall'; /// функция проигрывания звука

procedure PlaySoundOnEnter(Sender: TObject); /// процедура при наведении
begin
sndPlaySound(ExpandConstant('{tmp}\buttonrollover.WAV'),$0001);
end;

procedure PlaySoundOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); /// при нажатии кнопки
begin
sndPlaySound(ExpandConstant('{tmp}\buttonclick.WAV'),$0001);
end;

procedure PlaySoundOnMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); /// при отпускании кнопки
begin
sndPlaySound(ExpandConstant('{tmp}\buttonclickrelease.WAV'),$0001);
end;

procedure InitializeWizard;
begin
ExtractTemporaryFile('buttonclick.WAV'); /// функцией ExtractTemporaryFile извлекаем файл во временную папку - при нажатии кнопри паши по контролу (не путать с кликом)
ExtractTemporaryFile('buttonclickrelease.WAV'); /// при отпускании кнопки мыши с контрола
ExtractTemporaryFile('buttonrollover.WAV'); /// при наведении

with WizardForm do
begin
with NextButton do
begin
OnMouseEnter := @PlaySoundOnEnter;
OnMouseDown := @PlaySoundOnMouseDown;
OnMouseUp := @PlaySoundOnMouseUp;
end;

with BackButton do
begin
OnMouseEnter := NextButton.OnMouseEnter;
OnMouseDown := NextButton.OnMouseDown;
OnMouseUp := NextButton.OnMouseUp;
end;

with CancelButton do
begin
OnMouseEnter := NextButton.OnMouseEnter;
OnMouseDown := NextButton.OnMouseDown;
OnMouseUp := NextButton.OnMouseUp;
end;

with DirBrowseButton do
begin
OnMouseEnter := NextButton.OnMouseEnter;
OnMouseDown := NextButton.OnMouseDown;
OnMouseUp := NextButton.OnMouseUp;
end;

with GroupBrowseButton do
begin
OnMouseEnter := NextButton.OnMouseEnter;
OnMouseDown := NextButton.OnMouseDown;
OnMouseUp := NextButton.OnMouseUp;
end;
end;
end;

но в стандартной версии компилятора он неработает. Возможно его можна переписать?

Последний раз редактировалось ROMKA-1977, 07-10-2014 в 12:07.


Отправлено: 09:20, 07-10-2014 | #1773


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

Ветеран


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

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


МИШАНЧИК, и эта
вносить в HKLM\Software\classes - моветон, если запорешь - вся секция classes для всех пользователей пойдет по крыму
вносить нужно в HKCR

RegWriteExpandStringValue(HKCR, 'batfile\shell\edit\command', '', '%SystemRoot%\SysWow64\NOTEPAD.EXE %1');

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

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

Отправлено: 09:23, 07-10-2014 | #1774


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

Ветеран


Contributor


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

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


Цитата МИШАНЧИК:
А если несколько значений нужно внести, они просто пойдут подряд? »
Цитата R.i.m.s.k.y.:
инно при установке выполняет скрипт в секции сверху вниз, при удалении наоборот - снизу вверх »
R.i.m.s.k.y., пиши, что именно в секции Registry, а то можно подумать, что такое поведение и в секции Code тоже есть.
МИШАНЧИК, на x86-системах с приведенным кодом все плохо будет. Ну нет там подсистемы WoW64.
Цитата R.i.m.s.k.y.:
вносить в HKLM\Software\classes - моветон, если запорешь - вся секция classes для всех пользователей пойдет по крыму
вносить нужно в HKCR »
R.i.m.s.k.y., вообще-то, наоборот.
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:13, 07-10-2014 | #1775


Ветеран


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

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


R.i.m.s.k.y., спасибо. А чем отличаются:
Код: Выделить весь код
RegWriteExpandStringValue
от просто
Код: Выделить весь код
RegWriteStringValue

Последний раз редактировалось МИШАНЧИК, 07-10-2014 в 10:35.


Отправлено: 10:29, 07-10-2014 | #1776


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

Ветеран


Contributor


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

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


Цитата МИШАНЧИК:
А чем отличаются: »
МИШАНЧИК, RegWriteExpandStringValue пишет в реестр параметр со строковым типом REG_EXPAND_SZ. Значения такого типа обычно содержат какие-либо системные переменные, например, %SystemRoot%, которые при чтении такого значения будут раскрыты системой. RegWriteStringValue пишет параметр со строковым типом REG_SZ. Значения типа трактуются в литеральном представлении, просто строка.
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:42, 07-10-2014 | #1777


Ветеран


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

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


Цитата МИШАНЧИК:
как внести в реестр через секцию code »
Цитата Dodakaedr:
RegWriteExpandStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Classes\batfile\shell\edit\command', '', '%SystemRoot%\SysWow64\NOTEPAD.EXE %1'); »
Чтоб не возникло проблем с 32х битной системой, правильно будет записать так:
RegWriteExpandStringValue(HKLM, 'SOFTWARE\Classes\batfile\shell\edit\command', '', ExpandConstant('{sys}\NOTEPAD.EXE %1'));

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

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

Отправлено: 12:11, 07-10-2014 | #1778


Ветеран


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

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


Всем спасибо.
А когда добавляешь в реестр не через секцию code, а просто в скрипте обязательно столько кавычек?
Код: Выделить весь код
Root: HKCR; SubKey: batfile\shell\edit\command; ValueType: string; ValueData: """{sys}\NOTEPAD.EXE"" ""%1"""; Flags: uninsdeletevalue uninsdeletekeyifempty
или можно
Код: Выделить весь код
Root: HKCR; SubKey: batfile\shell\edit\command; ValueType: string; ValueData: {sys}\NOTEPAD.EXE %1; Flags: uninsdeletevalue uninsdeletekeyifempty

Отправлено: 12:59, 07-10-2014 | #1779


Аватара для dracosha

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


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

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


МИШАНЧИК, да кавычки нужны обязательно
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:08, 07-10-2014 | #1780



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 6] El Sanchez Автоматическая установка приложений 2494 10-03-2014 11:51
Скрипты Inno Setup. Помощь и советы [часть 5] El Sanchez Автоматическая установка приложений 1999 28-03-2013 19:09
Скрипты 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




 
Переход