Ru-Board.club
← Вернуться в раздел «Программы»

» Inno Setup (создание инсталяционных пакетов)

Автор: Genri
Дата сообщения: 10.03.2007 11:53
Nagual -- у тебя не установлен Inno Setup Preprocessor (добавь сразу под строкой [Files] строку "#define aaa" без кавычек, и увидишь при компиляции более внятное сообщение)

Решение:
скачать Inno Setup QuickStart Pack и при установке обязательно проставить "Install Inno Setup Preprocessor"


Добавлено:
boss911 -- значит я тебя не совсем понял. Но тогда непонятно, почему тебя не устраивает вариант Sero:

Цитата:
[Setup]
UninstallRestartComputer=yes


что не так в этом варианте ?

Автор: serg_aka_lain
Дата сообщения: 10.03.2007 13:41

Chuvakstepan

Цитата:
Нужно чтобы три кнопки управления музыкой меняли свое расположение так же как форма процесса инсталляции (внизу справа, см. руководство). А то окошко инсталляции стало маленьким, и не видно кнопок, хотя они есть



Объявляй PlayButton,PauseButton,StopButton и.т.д глобально ,

[Code]

var
PlayButton : TButton;
PauseButton : TButton;
StopButton : TButton;
Panel1: TPanel;

далее на примере твоего кода

begin
if CurPageID=wpInstalling
then
begin
WizardForm.MainPanel.Visible:=False;
WizardForm.Bevel1.Visible:=False;
WizardForm.Width:=ScaleX(395);
WizardForm.Height:=ScaleY(142);
WizardForm.Left:=ScaleX(MainForm.Width-420);
WizardForm.Top:=ScaleY(MainForm.Height-170);
WizardForm.InnerNotebook.Left:=ScaleX(10);
WizardForm.InnerNotebook.Top:=ScaleY(10);
WizardForm.InnerNotebook.Width:=ScaleX(370);
WizardForm.StatusLabel.Left:=ScaleX(0);
WizardForm.StatusLabel.Top:=ScaleY(0);
WizardForm.StatusLabel.Width:=WizardForm.InnerNotebook.Width;
WizardForm.FileNameLabel.Left:=ScaleX(0);
WizardForm.FileNameLabel.Top:=ScaleY(20);
WizardForm.FileNameLabel.Width:=WizardForm.InnerNotebook.Width;
WizardForm.ProgressGauge.Top:=ScaleY(40);
WizardForm.ProgressGauge.Width:=WizardForm.InnerNotebook.Width;
WizardForm.CancelButton.Left:=ScaleX(154);
WizardForm.CancelButton.Top:=ScaleY(80);

PlayButton := TButton.Create(WizardForm);
PlayButton.Left := 10;
PlayButton.Top := WizardForm.ClientHeight - ScaleY(23 + 10);
PlayButton.Width := 30;
PlayButton.Caption := '>';
PlayButton.OnClick := @PlayButtonOnClick;
PlayButton.Parent := WizardForm;
PlayButton.Cursor := crHand;
PauseButton := TButton.Create(WizardForm);
PauseButton.Left := 45;
PauseButton.Top := WizardForm.ClientHeight - ScaleY(23 + 10);
PauseButton.Width:=30;
PauseButton.Caption := 'II';
PauseButton.OnClick := @PauseButtonOnClick;
PauseButton.Parent := WizardForm;
PauseButton.Cursor := crHand;
StopButton := TButton.Create(WizardForm);
StopButton.Left := 80;
StopButton.Top := WizardForm.ClientHeight - ScaleY(23 + 10);
StopButton.Width := 30;
StopButton.Caption := '[]';
StopButton.OnClick := @StopButtonOnClick;
StopButton.Parent := WizardForm;
StopButton.Cursor := crHand;
end
if CurPageID=wpFinished
then
begin
WizardForm.Width:=502;
WizardForm.Height:=392;
WizardForm.Position:=poScreenCenter;
PlayButton.Visible := False;
PauseButton.Visible := False;
StopButton.Visible := False;
end
end;

должно всё работать.
Автор: Chuvakstepan
Дата сообщения: 10.03.2007 14:14
serg_aka_lain

Просто огромное спасибо, как то я не додумался про глобальность
Всё что хотел, удачно реализовал
Еще раз большое человеческое спасибо
Автор: DEN1165
Дата сообщения: 10.03.2007 21:04
Inno Setup Unpacker v0.19

с инсталлятором, встраивается в контекстное меню Проводника.

http://rapidshare.com/files/20377852/innounp_v0.19.exe
Автор: boss911
Дата сообщения: 11.03.2007 00:59
Genri

Цитата:

Цитата: [Setup]
UninstallRestartComputer=yes


что не так в этом варианте ?
Автор: Nagual
Дата сообщения: 11.03.2007 06:14
Genri
все заработало, наконец то, спс
тока вот со звуком и защитой как быть?
глянь личку
Автор: Chanka
Дата сообщения: 11.03.2007 13:03
Кто-нибудь помогите решить вопрос с удалением сейв-файлов
Автор: Kindly
Дата сообщения: 11.03.2007 14:20
Chanka, есть тулза от 1С созданная специально для удаления сейвов. Запускается с параметрами и выполняет удаление папки с сейвами, прописанной в реестре. Выложить?
Автор: NightW0lf
Дата сообщения: 11.03.2007 15:18
Kindly

Цитата:
Chanka, есть тулза от 1С созданная специально для удаления сейвов. Запускается с параметрами и выполняет удаление папки с сейвами, прописанной в реестре. Выложить?

Да

P.S. Kindly посмотри почту.
Автор: Genri
Дата сообщения: 11.03.2007 15:27
boss911
Цитата:
Речь идет о флаге uninsrestartdelete
-- я опять не понял. никто не говорит тебе отказываться от этого флага. Просто добавь еще и параметр UninstallRestartComputer

Код:
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
UninstallRestartComputer=yes

[Files]
Source: Files\*; DestDir: "{app}"; Flags: uninsrestartdelete
Автор: Chanka
Дата сообщения: 11.03.2007 16:56
Kindly,

Цитата:
Chanka, есть тулза от 1С созданная специально для удаления сейвов. Запускается с параметрами и выполняет удаление папки с сейвами, прописанной в реестре. Выложить?

Буду очень признателен
Автор: Sero
Дата сообщения: 11.03.2007 17:03
Знакомы ли вы? - Мастер скрипта для Inno Setup.
Скачать
Автор: paul_smART
Дата сообщения: 11.03.2007 23:03
Господа приветствую Вас! Подскажите пожалуйста как сделать такую форму

и может быть если есть возможность тыкните носом в ссылку по поводу Inno Setup Form Designer как он обрабатывает события как их из секции [Code] передавать в инсталлер и прочее. Заранее благодарен!
Автор: NightW0lf
Дата сообщения: 11.03.2007 23:09
paul_smART

Цитата:
Господа приветствую Вас! Подскажите пожалуйста как сделать такую форму

Пооему не как, т.к. начиная с 5 версии разработчик поменял вид этой страницы.
Автор: boss911
Дата сообщения: 12.03.2007 00:53
Genri

Цитата:
Просто добавь еще и параметр UninstallRestartComputer

Это я понял!

Цитата:
в этом варианте запрос на удаление есть, окна с кнопкой ОК нет, окно с запросом на перезагрузку и кнопками да/нет - есть. Тебе это надо ?

Мне нужен универсальный метод, чтоб НЕ зависел от нечего, в данном случае, от параметров UninstallRestartComputer и uninsrestartdelete. То есть, скрипт будет с этими параметрами, так и БЕЗ них, но, чтоб результат всегда был один: есть диалог о подтверждении деинсталляции и НЕТ об окончании, так же иметь возможность лицезреть диалог, если задано UninstallRestartComputer и uninsrestartdelete. Надеюсь мы, уже, поняли друг-друга?
Автор: Nagual
Дата сообщения: 12.03.2007 01:05
Sero
на первый взгляд очень неплохо, почему разрабы так не делают непонятно
но зачем эта прожка щемит в нет? тоже не ясно

Kindly
хай, я уж думал ты перестал посещать этот форум
смотрел твою справку
проигрываю звуковой файл, как указано в справке
***
[Code]
//Проигрываем звук
function sndPlaySound(lpszSoundName: string; uFlags: cardinal):integer;
external 'sndPlaySoundA@winmm.dll stdcall';
procedure InitializeWizard();
begin
sndPlaySound(ExpandConstant('{reg:HKLM\SOFTWARE\xxx\xxx\4.0,DataFolder}\xxx.wav'), $0001);
end;
***
как сделать, что звук игрался после установки или перед окончанием установки? ну и, при неудачной установке (нет файла или пути), вообще не игрался?
пробовал процедуры описанные в справке BagIra, но результата не добился

и еще, не подскажешь как защитить инсталляху от распаковки?
пробовал метод, описанный тобой
***
[Setup]
;Модуль ISCrypt.dll должен находиться в папке с компилятором
Encryption=yes
;Не добавляйте Unicode символы! Не все понимаются инсталлятором.
Password=фырлджэ\5(*&YЮ±±°єﻱ©®™∞€¥

[Code]
procedure InitializeWizard();
begin
//Вставляем наш пароль в поле ввода
WizardForm.PasswordEdit.Text := 'фырлджэ\5(*&YЮ±±°єﻱ©®™∞€¥';
end;
//При установке юзер не поймает пароль по маске
procedure CurPageChanged(CurPageID: Integer);
begin
If CurPageID=wpPassword then
begin
SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
end;
end;
***
вылазит куча багов и никакой защиты, разумеется, нет
где поправить?

и еще одно, мне нужно использовать в коде procedure InitializeWizard(); не один раз, а при компиляции мне пишет, что это можно использовать только один раз, как быть?
спс
Автор: Chuvakstepan
Дата сообщения: 12.03.2007 09:33

Цитата:
и еще одно, мне нужно использовать в коде procedure InitializeWizard(); не один раз, а при компиляции мне пишет, что это можно использовать только один раз, как быть?
спс


Просто вписывай значения из исходного procedure InitializeWizard уже без этой строчки.
Типа:
[Code]

procedure InitializeWizard
begin
типа код вставки музыки
end;
begin
типа код вставки фонового рисунка
end;

На моём сайте есть примеры комбинирования этих процедур (http://chuvakstepan.xost.ru/scripts2.html)


Цитата:
и еще, не подскажешь как защитить инсталляху от распаковки?
пробовал метод, описанный тобой


Надо скачать IScrypt.dll (на оф сайте)

Я проверил твой код, работает. Только убери звездочки

Цитата:
end;
end;
***


Они мне помешали скомплилировать инсталляху
Автор: Nagual
Дата сообщения: 12.03.2007 11:20
всем спс, разобрался во всем, кроме процедуры "после установки" или "перед окончанием установки" как ее грамотно написать?
Автор: Kindly
Дата сообщения: 12.03.2007 12:28
Nagual, "после установки" или "перед окончанием установки" используй соответсвующие функции. Лучше реализовать свою функцию для проигрывания, а затем только подставлять ее название. Думаю, в новой версии руководства будут такие нововведения. И для защиты от распаковки старый метод уже неактуален, Genri приводил лучшие примеры на прошлых страницах.

Прога KillSave от 1С:
http://rapidshare.com/files/20636141/KillSave.rar.html
или
http://rl-team.ru/1344558

Пишем в скрипт следующее и смотрим образец ini в программе (значения реестра как пример):


Код: [Registry]
Root: HKLM; Subkey: "SOFTWARE\Human Head Studios\Prey"; ValueName: "SavePath"; ValueType: String; ValueData: "{userdocs}\My Games";

[UninstallRun]
Filename: "{app}\KillSave.exe"; Parameters: "Kill"; WorkingDir: "{app}";
Автор: Nagual
Дата сообщения: 12.03.2007 12:49
Kindly
ждем нового руководства
кинь примерчик для своей функции, а то ориентироваться тяжело, и , если не трудно, код от Genri
Автор: ZavadS
Дата сообщения: 12.03.2007 16:38
Genri Помоги доделать этот [more=код.][q][/q][/more]
Нужно сделать резервную копию программы во время русификации и резервную копию файлов, которые находятся в папке system32. А также чтобы все можно было повернуть назад (оригинальные файлы), если удаляешь русификатор.



Добавлено:
#include "SHFileOperation.iss"

[Setup]
AppName=O&O Defrag Professional Edition
AppVerName=O&O Defrag Professional Edition v.8.6.2294
DefaultDirName={pf}\O&O Defrag Professional Edition
DisableDirPage=yes
DefaultGroupName=O&O Defrag Professional Edition
DisableProgramGroupPage=yes
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes

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

[Files]
Source: Defrag Professional\*; DestDir: {app}; BeforeInstall: CreateBackup; Flags: ignoreversion recursesubdirs createallsubdirs
Source: SYSTEM32\*; DestDir: {sys}; BeforeInstall: CreateBackup; Flags: ignoreversion recursesubdirs createallsubdirs

[Code]
function MoveFile(const srcFile, destFile: PChar):Integer;
external 'MoveFileA@kernel32.dll stdcall';

procedure CreateBackup;
var
srcFile, destFile: string;
basePath, shortPath: string;
begin
basePath:= ExpandConstant('{app}');
srcFile:= ExpandConstant(CurrentFileName);
shortPath:= srcFile;
StringChangeEx(shortPath, basePath, '', True);
destFile:= ExpandConstant('{app}\Install_Rus\Backup') + shortPath;
ForceDirectories(ExtractFilePath(destFile));
MoveFile(PChar(srcFile), PChar(destFile));
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usPostUninstall then
begin
MoveDir(ExpandConstant('{app}\Install_Rus\Backup\'),ExpandConstant('{app}'));
RemoveDir(ExpandConstant('{app}\Install_Rus\Backup\'));
RemoveDir(ExpandConstant('{app}\Install_Rus\'));
end;
end;
Автор: Straiker5
Дата сообщения: 12.03.2007 19:03
Подскажите пожалуйста, как вставить текст в нижний левый угол инсталлятора.
Автор: serg_aka_lain
Дата сообщения: 12.03.2007 19:43
Straiker5


Цитата:
как вставить текст в нижний левый угол инсталлятора.



Смотря что нужно:
можно так

[Messages]
BeveledLabel=Inno Setup Wizard

можно и так:


[Code]

procedure InitializeWizard();
var
TextLabel : TNewStaticText;
begin
TextLabel := TNewStaticText.Create(WizardForm);
TextLabel.Left := ScaleX(6);
TextLabel.Top := ScaleY(330);
TextLabel.Caption := 'Inno Setup Wizard';
TextLabel.Parent := WizardForm;
TextLabel.Font.Color := $708911;
end;

Автор: Straiker5
Дата сообщения: 12.03.2007 20:06

Цитата:
Смотря что нужно:
можно так

[Messages]
BeveledLabel=Inno Setup Wizard

можно и так:


[Code]

procedure InitializeWizard();
var
TextLabel : TNewStaticText;
begin
TextLabel := TNewStaticText.Create(WizardForm);
TextLabel.Left := ScaleX(6);
TextLabel.Top := ScaleY(330);
TextLabel.Caption := 'Inno Setup Wizard';
TextLabel.Parent := WizardForm;
TextLabel.Font.Color := $708911;
end;



Спасибо это именно то что мне и нужно.
Автор: Sish
Дата сообщения: 13.03.2007 08:10
Друзья мои!

Кто умеет, помгите, плиз!

[more]
Если нее сильно сложно переделать вот этот cmd в сабжевый скрипт
Код: @Echo Off

If Exist C:\FO\v3\settings.mdb Goto _Root_C
If Exist "C:\Program Files\FO\v3\settings.mdb" Goto _PF_C
If Exist D:\FO\v3\settings.mdb Goto _Root_D
If Exist "D:\Program Files\FO\v3\settings.mdb" Goto _PF_D
If Exist E:\FO\v3\settings.mdb Goto _Root_E
If Exist "E:\Program Files\FO\v3\settings.mdb" Goto _PF_E

copy Upd.exe C:\ > nul
Echo АХТУНГ!
Echo.
Echo Программа ИПС v3.0 на Вашем компьютере не установлена,
Echo либо установлена некорректно,
Echo либо установлена в нестандартную папку.
Echo.
Echo Свяжитесь с системным администратором компании "Формула отдыха" Вашего города,
Echo либо прочитайте FAQ к программе (http://www.webtours.ru/lynx/Help/index.html).
Echo.
Pause
Goto _End

:_Root_C
move %windir%\Temp\Upd.exe C:\FO\v3 /y > nul
CD C:\FO\v3 > nul
Goto _Ext

:_PF_C
Copy Upd.exe "C:\Program Files\FO\v3" /y > nul
CD "C:\Program Files\FO\v3" > nul
Goto _Ext

:_Root_D
Copy Upd.exe D:\FO\v3 /y > nul
CD D:\FO\v3 > nul
Goto _Ext

:_PF_D
Copy Upd.exe "D:\Program Files\FO\v3" /y > nul
CD "D:\Program Files\FO\v3" > nul
Goto _Ext

:_Root_E
Copy Upd.exe E:\FO\v3 /y > nul
CD E:\FO\v3 > nul
Goto _Ext

:_PF_E
Copy Upd.exe "E:\Program Files\FO\v3" /y > nul
CD "E:\Program Files\FO\v3" > nul

:_Ext
Upd.exe
Delete Upd.exe /y

:_End
Автор: cody58
Дата сообщения: 13.03.2007 16:09
Помогите, кто знает!
Компиляция скрипта прерывается сообщением "Out of memory".
Что это значит?
Память - 1Гб, на винте свободно более 13Гб...
Автор: Sero
Дата сообщения: 13.03.2007 21:55
KLERIK2222
Проверь Личный Ящик!
Автор: cracklover
Дата сообщения: 13.03.2007 22:25
cody58

скорее всего в начале скрипта присутствует строчка с экстремальными ключами сжатия конечного дистрибутива.
Автор: NightW0lf
Дата сообщения: 13.03.2007 23:37
Kindly

Цитата:
И для защиты от распаковки старый метод уже неактуален, Genri приводил лучшие примеры на прошлых страницах

Если можно то выложи этот скрипт нового шифрования, а то на тех предыдущих страницах ОЧЕНЬ много говорилось на эту тему а как такогого скрипта невидно толком.

Буду очень признателен!
Автор: Nagual
Дата сообщения: 14.03.2007 08:16
NightW0lf
согласен, уже устал листать форум, а толком ничего не нашел
Genry
может ты соблаговолишь? а?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

Предыдущая тема: ICONS


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.