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

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

Автор: GloThin
Дата сообщения: 30.05.2007 13:52
Sero

Цитата:
Ну... не знаю... так красиве!

Ну над стандартной страницей тоже можно поизмываться, в смысле над размерами и положением компонентов..
Автор: Sampron
Дата сообщения: 30.05.2007 14:06
GloThin

Цитата:
Ну над стандартной страницей тоже можно поизмываться, в смысле над размерами и положением компонентов..

А описание каждого компонента при наведении курсора тоже можно?
Если знаешь как подскажи.
Автор: Sero
Дата сообщения: 30.05.2007 14:22
Люди!
Нужна помощь:
Вот пример, выдрал из NSIS,
Не знаю как правильно его использовать.
Помогите пожалуйста,если получится - будет очень красиво!
Автор: Sampron
Дата сообщения: 30.05.2007 14:41
iTASmania_Inc

Цитата:
И ещё, как сделать так, чтобы при установки программы, папка, в которую она устанавливается, меняла бы иконку. Эт, наверное, через отдельную иконку и desktop.ini делается, а как задать это в Code?


Создай desktop.ini с такими строками и включи его в скрипт:
[.ShellClassInfo]
IconFile=icon.ico
IconIndex=0

Пример:

[Setup]
AppName=AppName
AppVerName=AppVerName
DefaultDirName={pf}\AppName

[Files]
Source: icon.ico; DestDir: {app}
Source: desktop.ini; DestDir: {app}; Attribs: hidden system

[Dirs]
Name : {app}\; Attribs: system

Автор: Genri
Дата сообщения: 30.05.2007 15:07
iTASmania_Inc
Цитата:
как работает DelTree?
-- в хелпе есть описание и примеры применения.


Цитата:
как сделать так, чтобы при установки программы, папка, в которую она устанавливается, меняла бы иконку.

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

[Dirs]
Name: "{app}"; Attribs: system; AfterInstall: CreateIni();

[Files]
Source: Files\icon.ico; DestDir: {app}

[Kode] ; Переименовать!
procedure CreateIni();
begin
SaveStringsToFile(ExpandConstant('{app}\Desktop.ini'), ['[.ShellClassInfo]',
'IconFile=%SystemRoot%\system32\SHELL32.dll',
'IconIndex=27'], False)
end;
Автор: ZavadS
Дата сообщения: 30.05.2007 16:30
Genri

Цитата:
я уже попробовал Пришлось поставить O&O Defrag. GloThin оказался полностью прав. Правильный синтаксис: net stop "O&O Defrag".
Правда, почему у тебя не пошел пример с W32Time, для меня загадка.


А я пробовал только для OO Defrag.
Автор: ValeronSoft
Дата сообщения: 30.05.2007 17:51
Прива всем!

эххх... господа, программисты! дурацкая идея пришла мне в голову и теперь не могу от неё избавиться.

короче захотелось мне, чтобы на одной из страниц инсталлятора (можно отдельно добавить страницу) проигрывался видеоролик. чтобы также были кнопки "пауза" "плей" может даже звук "вкл/выкл"

Согласитесь, было бы круто, какой-нибудь туториал так вставить или просто что-нибудь интересное

Кто сможет такое осуществить?
Автор: Sampron
Дата сообщения: 30.05.2007 18:00
ValeronSoft
Есть код где видеоролик (avi) проигрывается во время установки на фоновом окне.
[more=Код]
Код: [Setup]
AppName=My Program
AppVerName=My Program 1.5
DefaultDirName=C:\My Program
OutputBaseFilename=setup
Compression=lzma
WindowVisible=yes
WindowShowCaption=no

[Files]
Source: clock.avi; DestDir: {tmp}; Flags: dontcopy

[Code]
const
AviFrameWidth = 500; // ширина кадра
AviFrameHeight = 500; // высота кадра

var
CommandString: String;
FileName: String;
AviFrameTop: Integer;
AviFrameLeft: Integer;

function mciSendString(lpstrCommand: string; lpstrReturnString: PChar; uReturnLength:integer; hwndCallback:integer):integer;
external 'mciSendStringA@winmm.dll stdcall';

function GetSystemMetrics(nIndex:Integer):Integer;
external 'GetSystemMetrics@user32.dll stdcall';

procedure InitializeWizard();
begin
ExtractTemporaryFile(ExpandConstant('clock.avi'));
FileName:= ExpandConstant('{tmp}\clock.avi');
AviFrameTop:= GetSystemMetrics(17) / 2 - AviFrameHeight / 2;
AviFrameLeft:= GetSystemMetrics(16) / 2 - AviFrameWidth / 2;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep=ssInstall then
begin
CommandString:= 'Open ' + FileName + ' type AVIVideo alias AVIFile parent ' + IntToStr(MainForm.Handle) + ' style child';
mciSendString(CommandString, '', 0, 0);

CommandString:= 'put AVIFile window at ' +
IntToStr(AviFrameLeft) + ' ' + IntToStr(AviFrameTop) + ' ' +
IntToStr(AviFrameWidth) + ' ' + IntToStr(AviFrameHeight);
mciSendString(CommandString, '', 0, 0);

//CommandString:= 'Play AVIFile fullscreen'; // полноэкранный режим
CommandString:= 'Play AVIFile repeat';
mciSendString(CommandString, '', 0, 0);
end;
end;

procedure DeinitializeSetup();
begin
CommandString:= 'Close AVIFile'; // закрываем при выходе
mciSendString(CommandString, '', 0, 0);
end;
Автор: ZavadS
Дата сообщения: 30.05.2007 18:38
Наконец то заработало. Действительно нужно было сделать так.

Цитата:
function InitializeSetup(): Boolean;
var
res: integer;
begin
Exec('net', 'stop "O&O Defrag"', '', SW_HIDE, ewWaitUntilTerminated, res);
Result:= True;
end;

procedure DeinitializeSetup();
var
res: integer;
begin
Exec('net', 'start "O&O Defrag"', '', SW_HIDE, ewWaitUntilTerminated, res);
end;

function InitializeUninstall(): Boolean;
var
res: integer;
begin
Exec('net', 'stop "O&O Defrag"', '', SW_HIDE, ewWaitUntilTerminated, res);
Result:= True;
end;

procedure DeinitializeUninstall();
var
res: integer;
begin
Exec('net', 'start "O&O Defrag"', '', SW_HIDE, ewWaitUntilTerminated, res);
end;

И во время установки и удаления все работает. Благодарю за помощь Genri и GloThin.


Автор: iTASmania_Inc
Дата сообщения: 30.05.2007 19:09
Stratege
Sampron
Genri
Всем БОЛЬШОЕ-БОЛЬШОЕ спасибо. --> В очередной раз!
Автор: Victor_Dobrov
Дата сообщения: 30.05.2007 19:19
Corona Skin - за основу взят Vista Skin, устранены следующие баги:
    не пересчитывалось место на диске при отметке/снятии компонентов
    не показывались имена файлов, состояние инсталляции
    название текущей страницы отсутствовало
Автор: EagleSH
Дата сообщения: 30.05.2007 19:29
Sampron

Цитата:
ValeronSoft
Есть код где видеоролик (avi) проигрывается во время установки на фоновом окне.
Код



а непосредственно вместо скина мона такое сделать?
Автор: Sero
Дата сообщения: 30.05.2007 19:31

Цитата:
Люди!
Нужна помощь:
Вот пример, выдрал из NSIS,
Не знаю как правильно его использовать.
Помогите пожалуйста,если получится - будет очень красиво!


Сделал!
Но при процедуре DeInitializeSetup не получается чтобы временные файлы удалялись!

Genri пожет ты поможешь?
[more=Вот]

Код:
[Files]
Source: NSIS_SkinCrafter_Plugin.dll; DestDir: {tmp}; Flags: dontcopy nocompression
Source: Skinastic.skf; destdir: {tmp}; flags: dontcopy nocompression
Source: callnsis.dll; DestDir: {tmp}; Flags: dontcopy nocompression

[Code]
procedure callplug(parentwnd: integer; pluginname,funcname,param1,param2,param3,param4,param5,param6,param7,param8,param9,param10: PChar);
external 'callplug@files:callnsis.dll stdcall';

procedure InitializeWizard();
begin
ExtractTemporaryFile('Skinastic.skf')
ExtractTemporaryFile('NSIS_SkinCrafter_Plugin.dll')

WizardForm.Position:=poDesktopCenter
WizardForm.Height:=WizardForm.Height-30

callplug(0,ExpandConstant('{tmp}\NSIS_SkinCrafter_Plugin.dll'),'skin',ExpandConstant('{tmp}\Skinastic.skf'),'','','','','','','','','')
end;
Автор: Sampron
Дата сообщения: 30.05.2007 19:52
Sero
Что-то не пашет SkinCrafter он только отключает стиль ХР.
Автор: maxdddca123
Дата сообщения: 30.05.2007 20:15
Victor_Dobrov

Цитата:
Corona Skin

Классно смотрится, спасибо !!!
Автор: Sero
Дата сообщения: 30.05.2007 20:18
Sampron
Нужен файл скина!
Сдесь: data.cod.ru/1068203466
Автор: Sampron
Дата сообщения: 30.05.2007 20:30
Sero

Цитата:
Нужен файл скина!

Здесь их куча но не работает http://www.skincrafter.com/skingal.php


Добавлено:
Но это можно исправить! прога для создания скинов http://www.skincrafter.com/cgi-bin/sws/go.pl?distr=7
Автор: ValeronSoft
Дата сообщения: 30.05.2007 20:36
Sampron


Цитата:
Цитата:ValeronSoft
Есть код где видеоролик (avi) проигрывается во время установки на фоновом окне.


а вот нельзя ли, как я хотел, чтобы на странице инсталлятора проиграть видео ? осуществимо? как думаешь?
Автор: Sero
Дата сообщения: 30.05.2007 20:46
Sampron
У меня все работает!
Вот скрин:
data.cod.ru/1068400074
Автор: Sampron
Дата сообщения: 30.05.2007 20:52
Sero
Этот скин у меня тоже работает а те которые на сайте лежат не работают.
Запусти инсталл зайди в темп и вытащи ещё один скин он автоматом создаётся.
Автор: Sero
Дата сообщения: 30.05.2007 21:26

Цитата:
Этот скин у меня тоже работает а те которые на сайте лежат не работают.

Хммм.. страно!

Добавлено:
В тэмп нашел один скин,он тоже работает!

Добавлено:
Sampron
Скачай последнию версию с офф сайта!
И все скины будут работать!

Добавлено:

Цитата:
Но при процедуре DeInitializeSetup не получается чтобы временные файлы удалялись!

Ну как решить эту проблему?
Автор: Sampron
Дата сообщения: 30.05.2007 21:50
ValeronSoft

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

Я незнаю этот код не я писал.
Автор: ZavadS
Дата сообщения: 30.05.2007 23:54
Genri
Рано я обрадовался. Когда собрал к кучи все три кода, то на первый взгляд все работает. Но есть глюк. Запускаю установку, если программа, которую русифицирую, работает и в трей есть иконка, то все в порядке так как и нужно. Но если программа не работает то, инсталлятор не закрывает процесс в трей и сервис самой программы. Вариант второй - Программа работает, а иконка в треи отсутствует, программа инсталлятор при запуске саму программу дефрагмантатора закрывает а сервис программы остается не закрытым. Что можно сделать, чтобы каждый процесс не был зависимым от предыдущего.

Цитата:
function InitializeSetup(): Boolean;
var
res: integer;
begin
Result:= True;
If RunTask('oodcnt.exe', false) then
begin
res:= 10;
while (res = 10) and RunTask('oodcnt.exe', false) do
res:= MsgBox('Программа установки русификатора обнаружила, что программа ' + ExpandConstant('''{#MyAppName}''') + ','#13'запушена в данный момент. Рекомендуется закрыть программу перед тем, как продлить.'#13#13
'Завершите работу программы и нажмите «Повторить»'#13#13
'Нажмите «Далее», программа установки закроет и не сохранит измененные настройки в программе.'#13#13
'Нажмите «Отмена», чтобы выйти из программы установки русификатора.', mbInformation, 6);
Case res of
2: {Cancel}
begin
Result := False;
end;
11: {Continue}
begin
KillTask('oodcnt.exe');
Result := True;
begin
If RunTask('oodtray.exe', false) then
begin
KillTask('oodtray.exe');
Result := True;
end else
Exit;
begin
Exec('net', 'stop "O&O Defrag"', '', SW_HIDE, ewWaitUntilTerminated, res);
Result:= True;
end;
end;
end;
end;
end;
end;

procedure DeinitializeSetup();
var
res: integer;
begin
Exec('net', 'start "O&O Defrag"', '', SW_HIDE, ewWaitUntilTerminated, res);
end;

Автор: Genri
Дата сообщения: 31.05.2007 11:19
ZavadS -- личку смотри. Подправил, но не проверял - времени счас нет.
Автор: Sampron
Дата сообщения: 31.05.2007 12:06
Victor_Dobrov

Цитата:
название текущей страницы отсутствовало

С этим согласен я провтыкал.


Цитата:
не показывались имена файлов, состояние инсталляции

Это не баг, на скине с транспарентом это вообще не показывалось так, как текст меняется и TLabel непонимает смены текста, потому и пришлось указать другой текст.
Автор: marat shakirov
Дата сообщения: 31.05.2007 13:47
Товарищи, подскажите банальную вещь - как закачать содержимое файла в переменную String и потом залить это все обратно в файл?

Завранее спасибо
Автор: Sero
Дата сообщения: 31.05.2007 13:59
Genri
посмотри в личку!
Автор: Victor_Dobrov
Дата сообщения: 31.05.2007 19:18
Corona Skin - исправил в обложке отображение/скрытие флажков перезагрузки.
Автор: Genri
Дата сообщения: 31.05.2007 19:30
Sero
Цитата:
при процедуре DeInitializeSetup не получается чтобы временные файлы удалялись!
-- помещай NSIS_SkinCrafter_Plugin.dll, SkinCrafter.dll и SkinNsis.skf рядом с инсталлятором. Пример в личке.
Автор: Sampron
Дата сообщения: 31.05.2007 21:14
Genri

Цитата:
-- помещай NSIS_SkinCrafter_Plugin.dll, SkinCrafter.dll и SkinNsis.skf рядом с инсталлятором. Пример в личке.

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

Понял! нужно эти 2 созданных файла тоже положить рядом.

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Mail.ru агент - вход не выполнен


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