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

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

Автор: gvshil
Дата сообщения: 12.04.2007 22:17
Sampron
Спасибо, сработало!
Автор: Snake_60
Дата сообщения: 12.04.2007 23:58

Цитата:
to ALL
Но есть еще проблемка...

Вопрос снимается... сам разобрался...
прописал путь по другому (через другую константу не {app} а {pf} ) и всё заработало нормально...
Автор: Ded_PiXto
Дата сообщения: 13.04.2007 12:24
помогите plz ... как написать скрипт сайлент инсталла , дайте пожалуйста пример.
Автор: Auren
Дата сообщения: 13.04.2007 12:25
Здравствуйте. Имеется следующая задача. Нужно создать "инсталлятор-загрузчик" малого размера, который будет загружать список файлов с сервера, формировать из этого файла список компонентов в инсталлятор "на лету" и загружать выбранные пользователем из этого сформированного списка компоненты. Подскажите, пожалуйста, идеи для реализации этого "проекта". Пробовал себя на NSIS, но не смог, слишком уже все там нерационально...
Автор: Sero
Дата сообщения: 13.04.2007 13:08
Ded_PiXto
Можно только запустить инсталл сайлент:
Например:
Setup.exe /silent /supressmsgboxes

Читай в хэлпе (WizardSilent)
Автор: Nagual
Дата сообщения: 13.04.2007 14:12
Ded_PiXto
воспользуйся SIM
там это делается очень просто и поддерживается в инсталлере, так что тебе не придется страдать гамороем паскальным, да и размер на выходе получишь в 4-5 раз меньше, если не найдешь в сети ключ, кидай в личку кирпичом
Автор: Sampron
Дата сообщения: 13.04.2007 19:40
Никто не подскажет как можно выключить программу перед установкой по указанному времени к примеру через три секунды после запуска инсталлятора? Вот код:

[Files]
Source: Play.exe; DestDir: {tmp}; Flags: dontcopy

[Code]
procedure InitializeWizard();
var
Res: Integer;
begin
ExtractTemporaryFile('Play.exe')
Exec(ExpandConstant('{tmp}\Play.exe'),'','',SW_SHOWNORMAL,ewWaitUntilTerminated,Res)
end;
Автор: Sero
Дата сообщения: 13.04.2007 20:54
Sampron
Если я тебя правильно понел,то:

Код:
[Files]
Source: Play.exe; DestDir: {tmp}; Flags: dontcopy
Source: ISTask.dll; Destdir: {tmp}; Flags: dontcopy

[Code]
function RunTask(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@files:ISTask.dll stdcall delayload';

function KillTask(ExeFileName: string): Integer;
external 'KillTask@files:ISTask.dll stdcall delayload';

procedure initializeWizard();
var Res:Integer;
begin
ExtractTemporaryFile('Play.exe');
Exec(ExpandConstant('{tmp}\Play.exe'), '', '', SW_SHOW,ewNoWait, Res)
if RunTask('Play.exe',false) then
begin
Sleep(3000);//1000- 1 sec. 2000- 2 sec. ....
KillTask('Play.exe');
end;
end;
Автор: Sampron
Дата сообщения: 13.04.2007 21:21
Sero
Не помогло
Автор: Sero
Дата сообщения: 13.04.2007 21:33
Sampron
А что за инсталл хочешь сделать?
P.S. у меня все работает!

Добавлено:
А что не работет?
Автор: Sampron
Дата сообщения: 13.04.2007 21:45
Sero
Я заместь сплеш заставки использую видеоролик и мне нужно чтобы он отключался примено на секунду раньше от его полной длины чтоб небыло видно ненужного текста который нельзя никак отключить при конвертировании (можно также заместь слайд-шоу использовать видеоролик проверил пашет).
Автор: Sero
Дата сообщения: 13.04.2007 22:00
Sampron
Не понимаю почему у тебя не работет то что я писал...

Добавлено:
Обрати внимание на функцию Exec, TExecWait у тебя ewNoWait или ewWaitUntilTerminated,нужно чтобы было ewNoWait.
Автор: Sampron
Дата сообщения: 13.04.2007 22:36
Sero
Сюда выложил пример посмотри сам 1,4 мб :
http://rapidshare.com/files/25834151/VideoSplash.rar.html

Добавлено:
В твоём примере видео и окно инсталлятора появляется одновременно а мне нужно по очереди и Sleep(3000) не помогает или вообще не работает.
Автор: Sero
Дата сообщения: 13.04.2007 23:30
Sampron
Сделал!

Код:
[Files]
Source: Video.exe; DestDir: {tmp}; Flags: dontcopy
Source: ISTask.dll; Destdir: {tmp}; Flags: dontcopy

[Code]
function KillTask(ExeFileName: string): Integer;
external 'KillTask@files:ISTask.dll stdcall delayload';

procedure initializeWizard();
var
Res:Integer;
begin
WizardForm.Hide;
ExtractTemporaryFile('Video.exe');
Exec(ExpandConstant('{tmp}\Video.exe'),'','',SW_SHOW,ewNoWait,Res);
Sleep(5300);
KillTask('Video.exe')
WizardForm.Show;
end;
Автор: Sampron
Дата сообщения: 13.04.2007 23:45
Sero
Спасибо! теперь работает.
Автор: Sero
Дата сообщения: 14.04.2007 00:35
Sampron

Цитата:
Sleep(3000) не помогает или вообще не работает.

Ты был ПРАВ ,вообще не работало.
Автор: Sampron
Дата сообщения: 14.04.2007 00:49
Sero
Сейчас проделываю тоже самое только заместь слайд-шоу и есть одна проблема, при нажатии на кнопку Отмена во время установки окно с потверждением на отмену находится за видеороликом. Незнаешь как можно сделать при нажатии на кнопку Отмена чтоб инсталлятор автоматически закрывался без потверждения?
Автор: Sero
Дата сообщения: 14.04.2007 01:36
Sampron

Код:
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
Confirm:=False;
Cancel:=True;
end;
Автор: Sampron
Дата сообщения: 14.04.2007 02:03
Sero
http://rapidshare.com/files/25863609/Video.rar.html
Автор: Sero
Дата сообщения: 14.04.2007 02:08
Sampron
Спасибо!
Автор: Drez
Дата сообщения: 14.04.2007 10:05
Есть скрипт новой страницы инно
[Setup]
AppName=Already Installed Page
AppVerName=Already Installed Page 1.0
CreateAppDir=no
Uninstallable=no

[Code]
var
StaticText: TNewStaticText;
RadioButton_1,RadioButton_2: TRadioButton;
Uninstall,Location:string;
ResultCode:Integer;

//Процедура NextButtonClick для новой страницы.
function Page_NextButtonClick(Page: TWizardPage): Boolean;
begin
if RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\My Program_is1','UninstallString', Uninstall) then
Uninstall:=RemoveQuotes(Uninstall);
if RadioButton_1.Checked then
begin
if not Exec(Uninstall, ' /SILENT', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then
MsgBox('Ошибка удаления. ' #13#13 '' + SysErrorMessage(ResultCode) + '.' #13#13 'Вероятно, деинсталлятор был перемещен, удален или переименован.', mbError, MB_OK);
Result:=True;
end
else
begin
if not RadioButton_1.Checked then
Result:=True;
end;
end;

//Процедура CancelButtonClick для новой страницы.
procedure Page_CancelButtonClick(Page: TWizardPage; var Cancel, Confirm: Boolean);
begin
Confirm:=False;
Cancel:=True;
end;

//Эта процедура создает новую страницу и все что на нее находится
function CheckInstalledPage(PreviousPageId: Integer): Integer;
var
Page: TWizardPage;
begin
RegQueryStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\My Program_is1','InstallLocation', Location)
Page := CreateCustomPage(PreviousPageId,'Previous Installation Found','Please choose how you want to proceed.');
//Текст на странице
StaticText := TNewStaticText.Create(Page);
StaticText.Parent := Page.Surface;
StaticText.Caption :='Inno Setup is already installed in'+' '+'"' + Location +'"'++' '+'on your system.'#13+ 'It is recommended that you uninstall the current version before continuing.';
StaticText.Left := 0;
StaticText.Top := ScaleY(24);
StaticText.TabOrder := 0;
StaticText.AutoSize:=True;
//Первый RadioButton
RadioButton_1 := TRadioButton.Create(Page);
RadioButton_1.Parent := Page.Surface;
RadioButton_1.Caption := 'Uninstall ';
RadioButton_1.Left := 0;
RadioButton_1.Top := ScaleY(104);
RadioButton_1.Width := ScaleX(233);
RadioButton_1.Height := ScaleY(17);
RadioButton_1.Checked := True;
RadioButton_1.TabOrder := 1;
RadioButton_1.TabStop := True;
//Второй RadioButton
RadioButton_2 := TRadioButton.Create(Page);
RadioButton_2.Parent := Page.Surface;
RadioButton_2.Caption := 'reinstall';
RadioButton_2.Left := 0;
RadioButton_2.Top := ScaleY(144);
RadioButton_2.Width := ScaleX(153);
RadioButton_2.Height := ScaleY(17);
RadioButton_2.TabOrder := 2;

Page.OnNextButtonClick := @Page_NextButtonClick;
Page.OnCancelButtonClick := @Page_CancelButtonClick;

Result := Page.ID;
end;

procedure InitializeWizard();
begin
if RegQueryStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\My Program_is1','UninstallString', Uninstall) then
CheckInstalledPage(wpLicense);
//Если параметр регистра присутствует,будет создана новая страница
end;


как сделать так чтобы после нажатия кнопкт uninstall закрывалась программа установки и удалялась программа уже установленная?
Автор: Sero
Дата сообщения: 14.04.2007 13:24
Drez

Код:
[Code]
var
StaticText: TNewStaticText;
RadioButton_1,RadioButton_2: TRadioButton;
Uninstall,Location:string;
ResultCode:Integer;
Page: TWizardPage;

function Page_NextButtonClick(Page: TWizardPage): Boolean;
begin
if RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Inno Setup 5_is1','UninstallString', Uninstall) then
Uninstall:=RemoveQuotes(Uninstall);
if RadioButton_1.Checked then
begin
if not Exec(Uninstall, ' /SILENT', '', SW_SHOW, ewNoWait, ResultCode) then
MsgBox('Uninstaller not found' #13#13 '' + SysErrorMessage(ResultCode) + '.' , mbError, MB_OK);
Result:=True;
WizardForm.Close;
end
else
begin
if not RadioButton_1.Checked then
Result:=True;
end;
end;


procedure Page_CancelButtonClick(Page: TWizardPage; var Cancel, Confirm: Boolean);
begin
Confirm:=False;
Cancel:=True;
end;


function CheckInstalledPage(PreviousPageId: Integer): Integer;
begin
RegQueryStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\Inno Setup 5_is1','InstallLocation', Location)
Page := CreateCustomPage(PreviousPageId,'Previous Installation Found','Please choose how you want to proceed.');

StaticText := TNewStaticText.Create(Page);
StaticText.Parent := Page.Surface;
StaticText.Caption :='Inno Setup is already installed in'+' '+'"' + Location +'"'++' '+'on your system.'#13+ 'It is recommended that you uninstall the current version before continuing.';
StaticText.Left := 0;
StaticText.Top := ScaleY(24);
StaticText.TabOrder := 0;
StaticText.AutoSize:=True;

RadioButton_1 := TRadioButton.Create(Page);
RadioButton_1.Parent := Page.Surface;
RadioButton_1.Caption := 'Uninstall before continuing (recommended)';
RadioButton_1.Left := 0;
RadioButton_1.Top := ScaleY(104);
RadioButton_1.Width := ScaleX(233);
RadioButton_1.Height := ScaleY(17);
RadioButton_1.Checked := True;
RadioButton_1.TabOrder := 1;
RadioButton_1.TabStop := True;

RadioButton_2 := TRadioButton.Create(Page);
RadioButton_2.Parent := Page.Surface;
RadioButton_2.Caption := 'Overwrite current version';
RadioButton_2.Left := 0;
RadioButton_2.Top := ScaleY(144);
RadioButton_2.Width := ScaleX(153);
RadioButton_2.Height := ScaleY(17);
RadioButton_2.TabOrder := 2;

Page.OnNextButtonClick := @Page_NextButtonClick;
Page.OnCancelButtonClick := @Page_CancelButtonClick;

Result := Page.ID;
end;

procedure InitializeWizard();
begin
if RegQueryStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\Inno Setup 5_is1','UninstallString', Uninstall) then
CheckInstalledPage(wpLicense);
//Если параметр регистра присутствует,будет создана новая страница
end;
Автор: Drez
Дата сообщения: 14.04.2007 13:30
отсюда =)
пишите по теме
Автор: kxox
Дата сообщения: 14.04.2007 13:37
Как растянуть верхний правый рисунок по ширине? Как-то видел пример здесь, но не могу теперь найти((( Кто подскажет?
Автор: Sero
Дата сообщения: 14.04.2007 13:47
kxox

Код:
[Code]
procedure InitializeWizard();
begin
WizardForm.WizardSmallBitmapImage.Left:=0;
WizardForm.WizardSmallBitmapImage.Width:=WizardForm.ClientWidth;
WizardForm.PageNameLabel.Visible:=False;
WizardForm.PageDescriptionLabel.Visible:=False;
end;
Автор: Sampron
Дата сообщения: 14.04.2007 13:51
kxox
http://forum.ru-board.com/topic.cgi?forum=5&topic=4801&start=1860#13

Добавлено:
Sero
Смотрел код с видео? незнаешь как сделать чтоб панель задач не отображалась?
Автор: Sero
Дата сообщения: 14.04.2007 15:59
Sampron
Хммм... не знаю.
Автор: kxox
Дата сообщения: 14.04.2007 16:10
Sero, Sampron, спасибо
Автор: Chuvakstepan
Дата сообщения: 14.04.2007 16:18
Как сделать так чтобы на странице приветствия, инсталлятор проверял наличие игры в системе пользователя через реестр, и, если она есть вместо кнопки "Начать установку (как на скрине)" была кнопка "Играть", при нажатии на которую инсталлятор вырубался и включался exe игры (путь к exe будет в реестре)

Автор: NightW0lf
Дата сообщения: 14.04.2007 16:29
2 All

Кто нибудь может помочь с написанием вот этого т.е. если игра уже установленна то приследующем запуске сетапа инсталлятор выдает такое сообщение.

P.S.: я предполагаю, что это надо сделать из этого кода:
[more=Код]

Код:
[code]
function InitializeSetup(): Boolean;
var
ResultCode: Integer;
s, ResultStr:string;
Result:=True;
begin
Result:=True;
If not RegKeyExists(HKLM, 'SOFTWARE\MY_PROGRAM')
then
begin
MsgBox('Программа MY_PROGRAM не установлена или установлена неверно.' #13#13 'Дальнейшая работа мастера невозможна.', mbError, mb_Ok);
Result:=False;
end
else
begin
MsgBox('Программа MY_PROGRAM успешно обнаружена.' #13#13 'Установка полностью автоматическая.', mbInformation, mb_Ok);
begin
If RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\My_Program_v1.0_is1', 'UninstallString', ResultStr)
then
begin
If ResultStr<>''
then
begin
ResultStr:=RemoveQuotes(ResultStr);
if MsgBox('Программа установки обнаружила уже установленную программу ранней версии.' #13#13 'Вы желаете предварительно удалить ее?', mbInformation, MB_YESNO) = idYes
then
if not Exec(ResultStr, '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode)
then
MsgBox('Ошибка удаления. ' #13#13 '' + SysErrorMessage(ResultCode) + '.' #13#13 'Вероятно, деинсталлятор был перемещен, удален или переименован.', mbError, MB_OK);
end;
end;
end;
end;
end;

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

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


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