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

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

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

Ветеран


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


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

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


Изменения
Автор: jameszero
Дата: 08-11-2010
Описание: тема закрыта
Лимит страниц.
Тема закрыта.
Продолжение по ссылке Скрипты Inno Setup. Помощь и советы [часть 3]




Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
  • ISTool - неплохой редактор скриптов Inno Setup.
    Последняя версия: 5.3.0.1 [29.09.2009] - Скачать | зеркало;
    Предыдущая версия: 5.3.0 [07.04.2009] - Скачать (зеркало) | Русификатор (зеркало);

  • Inno Script Generator - ещё один редактор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать;

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы. Официальный сайт - недоступен.
    Последняя версия: 2.0.8 [12.11.2006] - Страница с зеркалами;

  • 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.3 [11.09.2009] - Скачать;


Ссылка на архив предыдущей темы (также можно скачать из вложения)

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


Отправлено: 22:06, 23-08-2009

 

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


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

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


Как добавить в этот код еще парочку mp3, чтобы они проигрывались по порядку:
читать дальше »
const
BASS_ACTIVE_STOPPED = 0;
BASS_ACTIVE_PLAYING = 1;
BASS_ACTIVE_STALLED = 2;
BASS_ACTIVE_PAUSED = 3;
BASS_SAMPLE_LOOP = 4;

var
mp3Handle: HWND;
mp3Name: String;
cb:TCheckBox;

function BASS_Init(device: Integer; freq, flags: DWORD; win: hwnd; CLSID: Integer): Boolean;
external 'BASS_Init@files:BASS.dll stdcall delayload';

function BASS_StreamCreateFile(mem: BOOL; f: PAnsiChar; offset: DWORD; length: DWORD; flags: DWORD): DWORD;
external 'BASS_StreamCreateFile@files:BASS.dll stdcall delayload';

function BASS_Start(): Boolean;
external 'BASS_Start@files:BASS.dll stdcall delayload';

function BASS_ChannelPlay(handle: DWORD; restart: BOOL): Boolean;
external 'BASS_ChannelPlay@files:BASS.dll stdcall delayload';

function BASS_ChannelIsActive(handle: DWORD): Integer;
external 'BASS_ChannelIsActive@files:BASS.dll stdcall delayload';

function BASS_ChannelPause(handle: DWORD): Boolean;
external 'BASS_ChannelPause@files:BASS.dll stdcall delayload';

function BASS_Stop(): Boolean;
external 'BASS_Stop@files:BASS.dll stdcall delayload';

function BASS_Pause(): Boolean;
external 'BASS_Pause@files:BASS.dll stdcall delayload';

function BASS_Free(): Boolean;
external 'BASS_Free@files:BASS.dll stdcall delayload';

function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile('BASS.dll');
ExtractTemporaryFile('Music.mp3');
mp3Name := ExpandConstant('{tmp}\Music.mp3');
BASS_Init(-1, 44100, 0, 0, 0);
mp3Handle := BASS_StreamCreateFile(FALSE, PAnsiChar(mp3Name), 0, 0, BASS_SAMPLE_LOOP);
BASS_Start();
BASS_ChannelPlay(mp3Handle, False);
Result := True;
end;

procedure cbmusic(Sender: TObject);
begin
if cb.checked = true then
begin
case BASS_ChannelIsActive(mp3Handle) of
BASS_ACTIVE_PAUSED:
begin
BASS_ChannelPlay(mp3Handle, False);
end;
BASS_ACTIVE_STOPPED:
begin
BASS_Init(-1, 44100, 0, 0, 0);
mp3Handle := BASS_StreamCreateFile(FALSE, PAnsiChar(mp3Name), 0, 0, BASS_SAMPLE_LOOP);
BASS_Start();
BASS_ChannelPlay(mp3Handle, False);
end;
end;
end;
if cb.checked = false then
BASS_ChannelPause(mp3Handle);
end;

procedure InitializeWizard();
begin
cb:=TCheckBox.Create(WizardForm);
cb.Parent:=WizardForm;
cb.Width:=ScaleX(220);
cb.Left:=ScaleY(10);
cb.Top:=ScaleY(330);
cb.CAPTION:='Проигрывание музыки';
cb.ONCLICK:=@cbmusic;
cb.checked:=true
end;

procedure DeinitializeSetup();
begin
BASS_Stop();
BASS_Free();
end;

Отправлено: 20:39, 23-10-2009 | #311



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

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


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


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

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


Здравствуйте. Весь день ломаю голову, но ничего толкового не вышло.
Как сделать бэкап оригинальному файлу получилось, но при удалении программы он всёравно удаляет и этот бэкап,
и при этом просто не хочет его востанавливать.
Пробовал другой вариант, но и при этом выходит так что файл остаётся но не оригинальный а подменённый.
Вот примеры и если знаете как исправить подскажите пожалуйста.
Пример 1
Source: {pf}\a\b\c\play.m3u; DestDir: {pf}\a\b\c; DestName:play.m3u.bak; Flags: ignoreversion external skipifsourcedoesntexist
Делает бэкап, но после удаления программы его не востанавливает а удаляет.
Пример 2
Source: {pf}\a\b\c\play.m3u; DestDir: {pf}\a\b\c; DestName:play.m3u.bak; Flags: ignoreversion external skipifsourcedoesntexist
Source: C:\play.m3u; DestDir: {pf}\a\b\c; Flags: uninsneveruninstall
Делает тоже самое, но вместо оригинального play.m3u остаётся подменённый.
Мне нужно чтобы при инсталле создавался бэкап оригиналу затем был подменён, а после деинсталла убивал подменённый и востанавливал оригинал.
Спасибо за ранее.

-------
Bambaso


Отправлено: 12:49, 24-10-2009 | #312


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


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

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


А подскажите пожалуста как сменить положение кнопок "назад,вперед и отмена

Отправлено: 12:52, 24-10-2009 | #313


Аватара для comsun

Старожил


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

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


Помогите пож. отправить файл в папку назначения C:\D&S\User.
Пробовал {user} выдаёт ошибку при компилляции, {username} - компилится,вроде всё нормально,но при установке файла по этому адресу нет.

Отправлено: 02:21, 25-10-2009 | #314


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


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

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


Цитата comsun:
Помогите пож. отправить файл в папку назначения C:\D&S\User.
Пробовал {user} выдаёт ошибку при компилляции, {username} - компилится,вроде всё нормально,но при установке файла по этому адресу нет. »
{%userprofile}
Это сообщение посчитали полезным следующие участники:

Отправлено: 02:26, 25-10-2009 | #315


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


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

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


Цитата Zloy Pryanik:
А подскажите пожалуста как сменить положение кнопок "назад,вперед и отмена »
можно так

Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program
CreateAppDir=False
Uninstallable=False
OutputDir=userdocs:My Program.

[code]

procedure InitializeWizard();
begin
  with WizardForm do
  begin
    BackButton.Left := ScaleX(1);
    BackButton.Width := ClientWidth div 3;
    NextButton.Left := BackButton.Left + BackButton.Width;
    NextButton.Width := BackButton.Width;
    CancelButton.Left := NextButton.Left + NextButton.Width;
    CancelButton.Width := BackButton.Width;
  end;
end;

или так

Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program
OutputDir=userdocs:My Program.

[Files]
; Test copy
Source: "{sys}\*.dll"; DestDir: "{tmp}"; Flags: external;

[code]

procedure InitializeWizard();
begin
  with WizardForm do
  begin
    BackButton.Top := BackButton.Top - ScaleY(12);
    BackButton.Height := BackButton.Height + ScaleY(21);
    NextButton.Top := NextButton.Top - ScaleY(12);
    NextButton.Height := NextButton.Height + ScaleY(21);
    CancelButton.Top := CancelButton.Top - ScaleY(12);
    CancelButton.Height := CancelButton.Height + ScaleY(21);
  end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpWelcome then
  with WizardForm do
  begin
    NextButton.Left := ScaleX(1);
    NextButton.Width := ClientWidth div 2;
    CancelButton.Left := NextButton.Left + NextButton.Width;
    CancelButton.Width := NextButton.Width;
  end;

  if (CurPageID > wpWelcome) and (CurPageID < wpInstalling) then
  with WizardForm do
  begin
    BackButton.Left := ScaleX(1);
    BackButton.Width := ClientWidth div 3;
    NextButton.Left := BackButton.Left + BackButton.Width;
    NextButton.Width := BackButton.Width;
    CancelButton.Left := NextButton.Left + NextButton.Width;
    CancelButton.Width := BackButton.Width;
  end;

  if CurPageID = wpInstalling then
  with WizardForm do
  begin
    CancelButton.Left := ClientWidth div 3 * 2;
    CancelButton.Width := ClientWidth div 3;
  end;

  if CurPageID = wpFinished then
  with WizardForm do
  begin
    NextButton.Left := ClientWidth div 3 * 2 - NextButton.Width;
    NextButton.Width := ClientWidth div 3;
  end;
end;

Последний раз редактировалось serg aka lain, 25-10-2009 в 16:24.

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

Отправлено: 04:06, 25-10-2009 | #316


Ветеран


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

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


Цитата Bambaso:
Как сделать бэкап оригинальному файлу »
Программа
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}; Flags: ignoreversion

Патч
Код: Выделить весь код
[Setup]
AppName=My Program patch
AppVerName=My Program v 1.5 patch
DefaultDirName={pf}\My Program
DirExistsWarning=no
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}; Beforeinstall: Backup; Flags: ignoreversion

[Code]
procedure Backup;
begin
  // переименовываем оригинальный файл
  RenameFile(ExpandConstant('{app}\MyProg.exe'), ExpandConstant('{app}\MyProg.bak'));
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
  if CurUninstallStep = usPostUninstall then
  // восстанавливаем оригинальный файл
  RenameFile(ExpandConstant('{app}\MyProg.bak'), ExpandConstant('{app}\MyProg.exe'));
end;

т.е. в примере 'Патч', показал как переименовывать оригинальный файл и при деинсталляции восстановить его обратно.

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

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

Отправлено: 12:10, 25-10-2009 | #317


Аватара для comsun

Старожил


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

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


Цитата DemonAk:
Цитата comsun:
Помогите пож. отправить файл в папку назначения C:\D&S\User.
Пробовал {user} выдаёт ошибку при компилляции, {username} - компилится,вроде всё нормально,но при установке файла по этому адресу нет.
»
{%userprofile} »
DemonAk, Спасибо!!!! То что надо!

Отправлено: 12:56, 25-10-2009 | #318


Аватара для comsun

Старожил


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

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


затруднения с шифрованием(
применил тему от ISSkin и шифрование от InnoSetup Scripting v.5.1
соединил InnoSetuo Script Joiner, получилось так -
читать дальше »


Цитата:
; --- Source: ISSkinSetup.iss ------------------------------------------------------------
; -- Example1.iss --
; Demonstrates copying 3 files and creating an icon.

; SEE THE DOCUMENTATION FOR DETAILS ON CREATING .ISS SCRIPT FILES!


[Files]
; Add the ISSkin DLL used for skinning Inno Setup installations.
Source: {app}\ISSkin.dll; DestDir: {app}; Flags: dontcopy

; Add the Visual Style resource contains resources used for skinning,
; you can also use Microsoft Visual Styles (*.msstyles) resources.
Source: {tmp}\Office2007.cjstyles; DestDir: {tmp}; Flags: dontcopy

; The following code block is used to load the ISS, pass in
; an empty string ('') as the second parameter to LoadSkin to use
; the Blue color scheme, this is the default color scheme for
; Office2007.cjstyles.
[code]
// Importing LoadSkin API from ISSkin.DLL
procedure LoadSkin(lpszPath: String; lpszIniFileName: String);
external 'LoadSkin@files:isskin.dll stdcall';

// Importing UnloadSkin API from ISSkin.DLL
procedure UnloadSkin();
external 'UnloadSkin@files:isskin.dll stdcall';

// Importing ShowWindow Windows API from User32.DLL
function ShowWindow(hWnd: Integer; uType: Integer): Integer;
external 'ShowWindow@user32.dll stdcall';

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

procedure DeinitializeSetup1();
begin
// Hide Window before unloading skin so user does not get
// a glimse of an unskinned window before it is closed.
ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0);
UnloadSkin();
end;

[Setup]


; --- Source: Шифр_1_Код.iss ------------------------------------------------------------


[Setup]
Encryption=Yes
;MD5 сумма, подсчитанная ниже
Password=449f2546d2a51b20442c5025c43f126f

[code]
procedure InitializeWizard2();
var
MD5: String;
begin
//Подсчитываем сумму слагаемых в MD5 калькуляторе, на примере сумма MD5 "````" равна 449f2546d2a51b20442c5025c43f126f
MD5 := GetMD5OfString(''+'`'+'``'+'`')
WizardForm.PasswordEdit.Visible:= False;
//Вставляем то, что складываем
WizardForm.PasswordEdit.Text:= MD5;
end;

//Как обычно нажимаем страницу с пассом
procedure CurPageChanged2(CurPageID: Integer);
begin
if CurPageID = wpPassword then
WizardForm.NextButton.OnClick(WizardForm.NextButton);
end;

[Setup]


; --- Dispatching code ------------------------------------------------------------

[code]

function InitializeSetup(): Boolean;
begin
Result := InitializeSetup1(); if not Result then exit;
end;

procedure DeinitializeSetup();
begin
DeinitializeSetup1();
end;

procedure InitializeWizard();
begin
InitializeWizard2();
end;

procedure CurPageChanged(CurPageID: Integer);
begin
CurPageChanged2(CurPageID);
end;


Компиллируется нормально,при попытке запустить установку,Windows пишет, ошибка

По отдельности работают - или скин или шифрование.
вместе нет,помогите разобраться,плз

Отправлено: 22:32, 25-10-2009 | #319


Аватара для Habetdin


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


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

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


comsun,
Цитата comsun:
соединил InnoSetuo Script Joiner, получилось так »
А "разделенные" можете опубликовать?

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


Отправлено: 22:43, 25-10-2009 | #320



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58
[архив] Inno Setup .:[все вопросы]:. Mchik Автоматическая установка приложений 1329 23-08-2009 20:13
[архив - Часть 2] AutoIt скрипты Vadikan AutoIt 985 21-01-2008 09:58
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59
[Архив - Часть 1.1] AutoIt скрипты EgOrus AutoIt 335 04-02-2006 16:58




 
Переход