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

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

Автор: log1stable
Дата сообщения: 18.09.2011 06:52
Brabusdark, скидывать надо всю папку с ISDone_Example.iss, ибо там у тебя куча файлов для инсталлятора.
Автор: meekrab
Дата сообщения: 18.09.2011 07:28
Brabusdark
У вас ничего не выйдит с тем что бы повесить лейбл или пб по верх видео.
log1stable
Все у него верно сделано,ничего лишнего.
Автор: Gnom3
Дата сообщения: 18.09.2011 08:53
meekrab

Цитата:
У вас ничего не выйдит с тем что бы повесить лейбл или пб по верх видео.

Отчего-же, если очень захотеть, то можно все сделать.
IsPicture.dll в этом поможет
Автор: nik1967
Дата сообщения: 18.09.2011 11:52
Brabusdark

Цитата:
теперь проблема в другом прогресбар доходит до 100 процентов а потом идет дальше до 200(а время установки - тестовый прогон)

Когда же вы научитесь справку то читать? О_о. Для кого файл readme.CHM положен?
[more]Для осуществения работоспособности библиотеки существует 2 вида определения процентных соотношений между операциями на всем прогрессбаре:

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

#define records
(т.е. необходимо поставить точку с запятой в начале этой строки);
б) компилим проект и запускаем на установку. Это и будет нашим тестовым проходом. Все операции должны дойти до конца и завершиться удачно. Прогрессбар будет зашкаливать и все компоненты будут извлечены вне зависимости от того выбраны они, или нет. Все так и должно быть!
в) после тестового прогона в указанной папке создастся файл records.inf (имя и путь назначается в процедуре инициализации. О ней см. "подробное описание функций" ниже), его необходимо добавить в проект, раскомметировав, или добавив в начале скрипта строку:

#define records

Так же стоит отметить, что если сам скрипт находится в папке отличной от той, в которую компилится проект (например в скрипте NFS:Undercover откомпиленный файл сохраняется в Output\setup.exe), то records.inf создастся в папке с setup.exe и его необходимо будет перенести непосредственно к скрипту, или же подправить в секции [Files] его истинное расположение, например:

#ifdef records
Source: Output\records.inf; DestDir: {tmp}; Flags: dontcopy
#endif
г) снова откомпилить проект.
После этого инсталлер готов к работе.
При запуске процесс выполнения операций будет равномерно и корректно отображаться на прогрессбаре.

[/more]
Автор: meekrab
Дата сообщения: 18.09.2011 12:06
Gnom3
Мне то известно как это сделать и без dll. (Winst@n)



Автор: insombia
Дата сообщения: 18.09.2011 13:02
Создаю свой скрипт с ноля:Подскажите как сделать чтобы не было белого фона а просто написан текст


P.S.Скрипт только в ЛС даю
Автор: R3Pa4eK
Дата сообщения: 18.09.2011 13:25
insombia
Transparent:=true;
Автор: Snoopak96
Дата сообщения: 18.09.2011 13:51
insombia
Придётся, либо скрывать все стандартные статики и прорисовывать в место них лейблы с параметром Transparent:=true, либо как вариант можешь использовать модуль от htuos TransparentStatic
Автор: insombia
Дата сообщения: 18.09.2011 13:59
Спасибо большое но оно делает картинку на всех страницах и получилось не красиво
Автор: Snoopak96
Дата сообщения: 18.09.2011 14:17
insombia,
ну так не обязательно весь скрипт копировать, просто модуль подключи к своему скрипту.

Цитата:
#include "TransparentStatic.iss"
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Files]
Source: CallbackCtrl.dll; Flags: dontcopy

[Code]
procedure InitializeWizard();
begin
StaticSetTransparent;
end;

procedure DeinitializeSetup;
begin
StaticSetDefault;
end;
Автор: kalpak
Дата сообщения: 18.09.2011 14:47
Snoopak96
может проще функцией воспользоваться ?

Код: function CreateCustomLabel(Parent:TWinControl;Transparent: Boolean):TLabel;
begin
result:=TLabel.Create(Parent);
Result.Parent:=Parent;
Result.Transparent:=Transparent;
end;
Автор: insombia
Дата сообщения: 18.09.2011 14:57
Уже все сделал спс
Автор: Snoopak96
Дата сообщения: 18.09.2011 15:56
kalpak,
Речь о статиках выше идёт, ваша функция для лейблов.
Автор: YURSHAT
Дата сообщения: 18.09.2011 16:19
insombia

Цитата:
Подскажите как сделать чтобы не было белого фона а просто написан текст

По моему за этот вопрос и "как вставить картинку на страницы инсталла" уже надо бан давать. ИМХО.

В теме примеров немеряно! В шапке примеры лежат, справки, FAQ'и. Почему новички не могут заюзать поиск? Или вы считаете, что заюзав Google и найдя эту тему вы уже достаточно потрудились?

ЗЫ. На мноих ресурсах за подобные вопросы т.е. элементарные, на которые сотни примеров - тупо банят...
Автор: log1stable
Дата сообщения: 18.09.2011 17:03
YURSHAT, вопрос к тебе как к знающему(наверно) человеку. Почему в версиях IS Unicode не поддерживается splash-заставка от GameScriptGenerator и подгрузка скина для сетапа?
Автор: insombia
Дата сообщения: 18.09.2011 17:06

Цитата:
По моему за этот вопрос и "как вставить картинку на страницы инсталла" уже надо бан давать. ИМХО.

В теме примеров немеряно! В шапке примеры лежат, справки, FAQ'и. Почему новички не могут заюзать поиск? Или вы считаете, что заюзав Google и найдя эту тему вы уже достаточно потрудились?

ЗЫ. На мноих ресурсах за подобные вопросы т.е. элементарные, на которые сотни примеров - тупо банят...

Мне уже подсказали и мне не нужно было картинку вставлять!
http://i32.fastpic.ru/big/2011/0918/71/1a2dd89a9ae65ad18af8592af6f70a71.png
Как вместо галочек вставить чекбоксы?
Автор: YURSHAT
Дата сообщения: 18.09.2011 17:18
log1stable

Цитата:
подгрузка скина для сетапа?

Почему не поддерживается - все отлично поддерживается. Просто, чтобы работало на юникоде нужно немного по другому писать. Пример в шапке - скрипт андерковер. Работает как на анси так и на юникод. Посмотри как там сделано.


Цитата:
Почему в версиях IS Unicode не поддерживается splash-заставка от GameScriptGenerator

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

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

insombia

Цитата:
Мне уже подсказали и мне не нужно было картинку вставлять!


А я не про картинку, а про лейблы вобщем-то говорил. Я ведь уверен, что вы не смотрели примеры в шапке, не смотрели FAQ от krinkels и конечно же не заюзали поиск ибо спрашиваете такую глупость...
Автор: log1stable
Дата сообщения: 18.09.2011 17:21
YURSHAT, и еще - можно ли сделать какой-либо цвет сделать прозрачным?
Автор: Brabusdark
Дата сообщения: 18.09.2011 17:28
insombia
не поделишься скриптом в ЛС
есть несколько идей
Автор: Gnom3
Дата сообщения: 18.09.2011 17:29

Цитата:
и еще - можно ли сделать какой-либо цвет сделать прозрачным?

Можно:

Код: function SetLayeredWindowAttributes(hwnd: hWnd; crKey: TColor; bAlpha: byte; dwFlags: DWORD): Boolean; external 'SetLayeredWindowAttributes@user32.dll stdcall';
function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLongA@user32.dll stdcall';

procedure InitializeWizard;
begin
SetWindowLong(WizardForm.Handle,-20,GetWindowLong(WizardForm.Handle,-20) or $80000);
SetLayeredWindowAttributes(WizardForm.Handle,$00FF00,0,1);
end;
Автор: YURSHAT
Дата сообщения: 18.09.2011 17:41
log1stable

Цитата:
YURSHAT, и еще - можно ли сделать какой-либо цвет сделать прозрачным?

Можно. Товарищ Gnom3 опередил

Вот тебе пример использования скина. [more][Setup]
AppName=My Program
AppVerName=My Program 1.5
DefaultDirName={pf}\My Program

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

[Files]
Source: ISSkin.dll; Flags: dontcopy
Source: Tiger.cjstyles; Flags: dontcopy

[Code]
procedure LoadSkin(lpszPath: PAnsiChar; lpszIniFileName: PAnsiChar); external 'LoadSkin@{tmp}\isskin.dll stdcall delayload';
procedure UnloadSkin; external 'UnloadSkin@{tmp}\isskin.dll stdcall delayload';
function ShowWindow(hWnd: Integer; uType: Integer): Integer; external 'ShowWindow@user32.dll stdcall';

function InitializeSetup: Boolean;
begin
ExtractTemporaryFile('isskin.dll');
ExtractTemporaryFile('Tiger.cjstyles');
LoadSkin(ExpandConstant('{tmp}\Tiger.cjstyles'), '');
Result := True;
end;

procedure DeinitializeUninstall;
begin
ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')),0);
    UnloadSkin;
end;[/more]. Работает на анси и юникод.
Автор: log1stable
Дата сообщения: 18.09.2011 17:45
Gnom3, не найдет идентификатор GetWindowLong. На Анси и Юникоде.

YURSHAT, спасибо за пример.
Автор: nik1967
Дата сообщения: 18.09.2011 18:21
log1stable

Цитата:
не найдет идентификатор GetWindowLong

Ну дак добавь функцию:

Код: function GetWindowLong(hWnd, nIndex: Integer): Longint; external 'GetWindowLongA@user32 stdcall delayload';
Автор: Gnom3
Дата сообщения: 18.09.2011 18:38
log1stable
Цитата:
не найдет идентификатор GetWindowLong. На Анси и Юникоде.

Забыл, но там действительно, уже логично на примере предидущих двух добавить вызываемую системную функцию:
Цитата:
Ну дак добавь функцию:

Код: function GetWindowLong(hWnd, nIndex: Integer): Longint; external 'GetWindowLongA@user32 stdcall delayload';
Автор: Vitalliano
Дата сообщения: 18.09.2011 20:55
Я задавал вопрос по добавлению иконок в панель задачь Windows 7.

Кому интересно, вот [more=скрипт]
[code]
const
LOAD_LIBRARY_AS_DATAFILE = $2;

function LoadLibraryEx(lpFileName: String; hFile: THandle; dwFlags: DWORD): THandle; external 'LoadLibraryExA@kernel32.dll stdcall';
function LoadString(hInstance: THandle; uID: SmallInt; var lpBuffer: Byte; nBufferMax: Integer): Integer; external 'LoadStringA@user32.dll stdcall';

//
function PinToTaskbarWin7(Filename: String): Boolean;
var
hInst: THandle;
buf: array [0..255] of byte;
i: byte;
strVerb, s: String;
objShell, colverbs: Variant;
begin
if not FileExists(Filename) then Exit;
if (GetWindowsVersion shr 24 = 6) and ((GetWindowsVersion shr 16) and $FF = 1) then
begin
hInst := LoadLibraryEx(ExpandConstant('{sys}\shell32.dll'), 0, LOAD_LIBRARY_AS_DATAFILE);
for i := 0 to LoadString(hInst, 5386, buf[0], 255)-1 do strVerb := strVerb + Chr(Buf[i]);
FreeDLL(hInst);
try
objShell := CreateOleObject('Shell.Application');
except
ShowExceptionMessage;
Exit;
end;
colVerbs := objShell.Namespace(ExtractFileDir(Filename)).ParseName(ExtractFileName(Filename)).Verbs;
for i := colVerbs.Count downto 1 do if colVerbs.Item[i].Name = strVerb then
begin
colVerbs.Item[i].DoIt;
Result := True;
end;
end;
end;

procedure InitializeWizard();
begin
//Присобачим Блокнот на панель задач
if PinToTaskbarWin7('c:\windows\notepad.exe') then
MsgBox('ok', mbInformation, MB_OK)
else
MsgBox('no', mbInformation, MB_OK);
end;[/more] который мне дал El Sanchez из форума OSZone.net
Автор: rsg16
Дата сообщения: 19.09.2011 00:42
Подскажите пожалуйста как сделать чтобы не было названия DefaultDirName? Ато у меня стоит так DefaultDirName={pf}\{#MyAppName} и пишет назвагние программы, пробовал ставить
DefaultDirName=\ то при нажатие на локалный диск появлялась "Новая папка".
Автор: ShadowHawk
Дата сообщения: 19.09.2011 14:30
Gnom3
YURSHAT

Подскажите плизз, в чем может быть причина, и как побороть:

В результате компиляции получаю 2 файла setup.exe и setup-1.bin
Записываю на dvd проверяю на другой машине (компилирую на XP проверяю и на XP и на Win7) получаю следующее:
в процессах висит НЕКОТОРОЕ время 2 файла setup.exe и setup.tmp и по прошествии этого НЕКОТОРОГО времени собственно запускается инсталлятор, т.е. появляется его окно. НЕКОТОРОЕ время в зависимости от размера setup-1.bin может исчисляться несколькими минутами - это конечно же не нормально - пользователя не устраивает.
Подумал, может проблема сжатие - попытался отключить:

настройки для SETUP-*.BIN:

DiskSpanning=yes
SlicesPerDisk=1
DiskSliceSize=2100000000
DiskClusterSize=4096
ReserveBytes=0
Compression=none
SolidCompression=no

Как настроить так что бы при запуске небыло такой задержки а сразу запускался инсталлятор?
Автор: Imperiuz
Дата сообщения: 19.09.2011 15:18
В NSIS есть возможность скачивания файлов по http. Тут есть такая возможность? Есть примеры её использования?
Автор: meekrab
Дата сообщения: 19.09.2011 16:51
Imperiuz
Вы шапку смотрели?
InnoTools Downloader 0.3.5 [15.10.2008]
в разделе -> Дополнительные библиотеки для Inno Setup
Автор: Gnom3
Дата сообщения: 19.09.2011 17:45
ShadowHawk
Цитата:
DiskSpanning=yes
SlicesPerDisk=1
DiskSliceSize=2100000000
DiskClusterSize=4096
ReserveBytes=0
Compression=none
SolidCompression=no


это все вообще можно удалить, если внешние анпакеры используеш, это раз. Файлы, которые инсталлятор использует для себя, нужно указывать в самом начале секции файлс - это два.
Для этих файлов нужно задавать флаг solidbreack:


Код: [Files]
Source: "InstallFiles\*"; Flags: dontcopy solidbreack;

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177

Предыдущая тема: поиск


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