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

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

Автор: iTASmania_Inc
Дата сообщения: 31.10.2007 22:05
Cryzer
UpperCase(String) = UpperCase('BSPlayerFile.3GP')
Автор: Flash667
Дата сообщения: 31.10.2007 22:20
Кто работал с Corona Skin & Check System Requirements
непойму. InnoSetup не хочет читать те строчки что в этом скине. Выдает ошбку. Что делать?
Автор: iTASmania_Inc
Дата сообщения: 31.10.2007 22:25
Flash667

Цитата:
InnoSetup не хочет читать те строчки что в этом скине.

Какой умный и привередливый, почти как совершенный искусственный интеллект.
Не знаю, у меня всё прекрасно компилит.
А установлен Preprocessor? Ссылки на QuickStart Pack в шапке.
Автор: Cryzer
Дата сообщения: 31.10.2007 22:47
iTASmania_Inc
Спасибо!
Автор: Victor_Dobrov
Дата сообщения: 01.11.2007 01:15

Цитата:
Скрипт Corona Skin выдает ошбку. Что делать?

Flash667, напиши хотя-бы текст сообщения, которое выдаётся компилятором. Здесь не гадают на кофейной гуще!
Ещё можно попробовать скомпилить вот этот скрипт
Автор: Foruman
Дата сообщения: 01.11.2007 07:16
Уважаемые знатоки, помогите с решением вопроса

все что нужно для примера здесь (7 Kb)
Автор: GRom V
Дата сообщения: 01.11.2007 07:46
Вопрос:
Есть такая тема: ExtractTemporaryFile('files.txt');
А как с помощью кода извлеч во времеменную папку каталог с файлами???
Ктонить сталкивался
Автор: anthon
Дата сообщения: 01.11.2007 09:39
Скажите, пожалуйста, есть ли способ пропустив диалог выбора task самому пометить нужный, чтобы он потом правильно отображался в дополнительных задачах. спасибо.
Автор: vserd
Дата сообщения: 01.11.2007 11:56
Доброго здравия всем!!!
Возник вопрос, а в inno есть условная компиляция?
т.е. что-то такое как в delphi
{$ifdef trial}
код 1
{$else}
код 2
{$endif}

или как народ решает проблему сборки рабочих версий и триалов/демок?
Автор: Genri
Дата сообщения: 01.11.2007 13:16
NightW0lf -- получил. постараюсь не затягивать с ответом.

Foruman
1. Для определения версии операционной системы используй какую-нибудь из функций:
function GetWindowsVersion: Cardinal;
procedure GetWindowsVersionEx(var Version: TWindowsVersion);
function GetWindowsVersionString: String;
... описание функций смотри в хелпе. Для установки только нужных файлов и записей в реестр смотри в хелпе использование параметра Check (Pascal Scripting: Check Parameters)

2. Описание массива:
sb: array [1..3] of boolean;
sb1: array of boolean;

3. Компилятор ругается потому, что функция, которая используется с константой code (в твоем случае это code:MyDir), должна иметь один строковый параметр с именем Param (см. в хелпе Pascal Scripting: Scripted Constants). Т.е. должно быть так:
function MyDir(Param: String): String;
begin
.........
end;

GRom V

Цитата:
как с помощью кода извлеч во времеменную папку каталог с файлами?
-- стандартно - никак. Используй самораспаковывающийся архив, его вытаскивай через ExtractTemporaryFile и запускай в секции code

vserd

Код:
#define demo
#define trial

#if defined(demo) && !defined(trial)
MsgBox('Demo and Not Trial', mbInformation, MB_OK);
#else
MsgBox('Not Demo or Trial', mbInformation, MB_OK);
#endif
Автор: GRom V
Дата сообщения: 01.11.2007 15:06
Genri
Спасибочки!
Автор: Alex Zaguzin
Дата сообщения: 01.11.2007 18:14
Внесу свою лепту в это дело. Русификатор для версии 5.2.2. Делал для себя, так что просьба слишком не пинать за косяки. Основное - переведено. Размер - 36кб. Скачать:

http://rapidshare.com/files/66729688/InnoRus5.2.2.exe
http://depositfiles.com/files/2229296
http://www.megaupload.com/?d=8FMDEAG6
http://www.filefactory.com/file/c8abbb
http://www.sendspace.com/file/urn2zq
http://slil.ru/25051338
http://ifolder.ru/3961569
http://www.rapidshare.ru/452245
Автор: Foruman
Дата сообщения: 02.11.2007 11:13
Genri
Благодарю за разъяснения.
Осталась маленькая проблема
группа радиокнопок никак не реагирует на переключатель
[more=весь код]
[no][Setup]
AppName=Pack
AppVerName=Pack 1.0
AppPublisher=My Inc
CreateAppDir=no
OutputDir=C:\dlls
OutputBaseFilename=psetup
Compression=lzma
SolidCompression=yes
VersionInfoVersion=1.0.0.0

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

[Messages]
BeveledLabel=OOO "My Inc."

[Files]
Source: w98\111win98.dll; DestDir: {win}{code:MyDir}; Check: W98CHK; Flags: uninsneveruninstall
Source: w2kxp\111win2k.dll; DestDir: {win}{code:MyDir}; Check: W2KCHK; Flags: uninsneveruninstall
Source: w2kxp\111winxp.dll; DestDir: {win}{code:MyDir}; Check: WXPCHK; Flags: uninsneveruninstall

[Code]

var
Page: TWizardPage;
CLB: TNewCheckListBox;
cn: array [1..3] of boolean;

function MyDir(str : string): String;
begin
result:='';
if cn[1] then result:='\system'
else if cn[2] then result:='\system32'
else if cn[3] then result:='\system32';

end;

function W98CHK(): Boolean;
begin
result:=false;
if cn[1] then result:=true
end;

function W2kCHK(): Boolean;
begin
result:=false;
if cn[2] then result:=true
end;

function WXPCHK(): Boolean;
begin
result:=false;
if cn[3] then result:=true
end;

procedure InitializeWizard();
begin
cn[1]:=false;
cn[2]:=false;
cn[3]:=false;

Page := CreateCustomPage(wpWelcome, 'Выбор ОС', 'Выберите операционную систему которая установлена на этом компьютере.');
CLB := TNewCheckListBox.Create(Page);
CLB.Width := Page.SurfaceWidth;
CLB.Height := ScaleY(97);
CLB.BorderStyle := bsNone;
CLB.ParentColor := True;
CLB.WantTabs := True;
CLB.Parent := Page.Surface;
CLB.AddGroup('Версия ОС:', '', 0, nil);
CLB.AddRadioButton('Windows 98', '', 0, False, True, nil);
CLB.AddRadioButton('Windows 2000', '', 0, False, True, nil);
CLB.AddRadioButton('Windows XP', '', 0, False, True, nil);

cn[1]:=CLB.checked[1];
cn[2]:=CLB.checked[2];
cn[3]:=CLB.checked[3];

MyDir('go');

end;

[Registry]
Root: HKLM; SubKey: SOFTWARE\myapp; ValueType: string; ValueName: FORM; ValueData: C:\WINDOWS\system; Check: W98CHK; Flags: uninsdeletekey
Root: HKLM; SubKey: SOFTWARE\myapp; ValueType: string; ValueName: FORM; ValueData: c:\winnt\system32; Check: W2KCHK; Flags: uninsdeletekey
Root: HKLM; SubKey: SOFTWARE\myapp; ValueType: string; ValueName: FORM; ValueData: c:\WINDOWS\system32; Check: WXPCHK; Flags: uninsdeletekey
Root: HKLM; SubKey: SOFTWARE\myapp; ValueType: string; ValueName: FORM1; ValueData: c:\dlls; Flags: uninsdeletekey[/no][/more]
p.s. is 5.2.2
p.p.s. ручной метод оределения windows предпочтительнее
Автор: Genri
Дата сообщения: 02.11.2007 12:19
Foruman
1. По поводу ручного указания версии - дело твое. Компьютер сейчас настолько распространен, что позиционируется на уровне кофемолки. И я знаю многих пользователей, которых вопрос об операционной системе вводит в ступор

2. Записи в реестр одинаковы и отличаются только путем к папке system/system32. Не очень хорошо указывать жесткий путь. У пользователя система может стоять на другом диске и папка с системой может называться по-другому (напр. D:\WIN2K\system32). Лучше использовать константу {sys}. То же относится и к пути установки файлов.

3. В данном случае, вместо CreateCustomPage удобнее использовать CreateInputOptionPage.

4. А [more=здесь]
Код:
[Setup]
AppName=Pack
AppVerName=Pack 1.0
AppPublisher=My Inc
CreateAppDir=no
OutputDir=C:\dlls
OutputBaseFilename=psetup
Compression=lzma
SolidCompression=yes
VersionInfoVersion=1.0.0.0

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

[Messages]
BeveledLabel=OOO "My Inc."

[Files]
Source: Files\111win98.dll; DestDir: {sys}; Check: IsOS('98'); Flags: uninsneveruninstall
Source: Files\111win2k.dll; DestDir: {sys}; Check: IsOS('2K'); Flags: uninsneveruninstall
Source: Files\111winxp.dll; DestDir: {sys}; Check: IsOS('XP'); Flags: uninsneveruninstall

[Code]
var
Page: TInputOptionWizardPage;

function IsOS(ver: string): Boolean;
begin
case ver of
'98': Result:= Page.Values[0];
'2K': Result:= Page.Values[1];
'XP': Result:= Page.Values[2];
end;
end;

procedure InitializeWizard();
begin

Page := CreateInputOptionPage(wpWelcome, 'Выбор ОС',
'Выберите операционную систему которая установлена на этом компьютере.',
'После выбора нажмите Далее..',
True, False);
Page.Add('Windows 98');
Page.Add('Windows 2000');
Page.Add('Windows XP');

Page.Values[2] := True;
end;

[Registry]
Root: HKLM; SubKey: SOFTWARE\myapp; ValueType: string; ValueName: FORM; ValueData: {sys}; Flags: uninsdeletekey
Root: HKLM; SubKey: SOFTWARE\myapp; ValueType: string; ValueName: FORM1; ValueData: c:\dlls; Flags: uninsdeletekey
Автор: Flash667
Дата сообщения: 02.11.2007 21:29
хм. Оно не может прочитать вот такую комманду #... там где я указывал путь для Корона Скин. Вот фиг терь его знает шо делать. Может обновиться InnoSetup. Или этот скин дейстует через ISTool?

Добавлено:
я просто пробовал просто через инно сетуп , а не пробовал через ISTool

Добавлено:
Кто может написать полный мануал как использовать этот скин? )) Пожалуйста )) невыходит и все. Нечитает эти линии.
Автор: iTASmania_Inc
Дата сообщения: 03.11.2007 00:29
Flash667
# - это команды Препроцессора (входит в Inno QuickStart Pack), который у Вас отсутствует. Пожалуйста, скачайте и установите его, как уже советовал ранее. Ссылки смотрите в шапке данного топика.

Цитата:
Кто может написать полный мануал как использовать этот скин? )) Пожалуйста )) невыходит и все. Нечитает эти линии.

Грамотнее всё же строки, а насчёт мануала - обращайтесь напрямую к создателю. ))
Автор: GRom V
Дата сообщения: 03.11.2007 02:09
Victor_Dobrov
глянь личку ПЛИЗЗ
Автор: Victor_Dobrov
Дата сообщения: 03.11.2007 04:10
GRom V, посмотрел и ответил.

Flash667, насчёт мануалов есть ReadMe.rtf и куча постов с советами. Как собирать: Установи пакет InnoSetup_QuickStart Pack и компилируй в Compil32.exe либо в ISTool.exe (я же редактирую код в SciTE).

iTASmania_Inc, я только автор скрипта и то не единственный, многое подсказал Genri. А создатель сидит немного повыше и вряд-ли ответит Flash667.
Автор: GRom V
Дата сообщения: 03.11.2007 05:22
Victor_Dobrov
Скрипт скинул...
Спасибо!
Автор: GRom V
Дата сообщения: 03.11.2007 12:47
Victor_Dobrov
Еще раз Спасибо
Автор: Alex Zaguzin
Дата сообщения: 03.11.2007 14:33
Что то по поводу русика никто даже не отписался. Или не нужен?
Автор: Forslay
Дата сообщения: 03.11.2007 15:33
Ребят, есть такой атрибут, как "hiden", при распаковке файлов он их просто скрывает...
Но в моём случае требуется атрибут "xxx", котоый бы скрывал файлы не по обычному, а как системные файлы, тоесть даже если у пользователь стоит вдеть обычные скрытые файлы, то он бы их не видел...
Автор: Victor_Dobrov
Дата сообщения: 04.11.2007 01:44
Alex Zaguzin

Цитата:
Что-то по поводу русика никто даже не отписался. Или не нужен?

Компилятор запускал редко и только для отладки особо тяжёлых багов, юзаю ISTool с ISTool-ru.lng, выложенный в начале топика...

GRom V, личные сообщения типа благодарностей кидай в личку.

Намётки по распаковки папки из кода (ака ExtractTemporaryFolder):
Если при помощи препроцессора создать ini-файл, где имя секции - папка, а ключи - имена файлов, то можно извлечь в цикле сотню-другую файлов из папки, и проверять наличие файла в инсталляторе по имени.
Автор: DasMonster
Дата сообщения: 04.11.2007 05:26
Никто не поможет с проблемкой? Я в основном для себя и друзей перепаковываю игровые пиратки, с добавлением нормального перевода и обновлением самой игры. Так вот некоторые игры, у которых запускаемый exe не в корне игры а где нибудь в папке, при запуске с создаваемых InnoSetup ярлыков (и на столе и в программах) вылетают и\или показываю сообщения об ошибке. Пытался ярлыки на столе и через {userdesktop} и {commondesktop}, без разницы. В "прогаммы" пробовал и через {group}, и путем создания фолдера в [Dirs], тоже никак.

Например HoMM5, после инсталляции игра выкидывает с "память не может быть прочитана" с такого ярлыка. Меня уже задолбали эти глюки. Я юзаю Inno+ISTool, но и без ISTool, компилировал, один фиг тоже самое.

Такое я наблюдаю уже давно, я не помню предыдущих названий игр, но точно помню что столкнулся с этим еще в 2004, когда начал юзать Inno.
Автор: Chuvakstepan
Дата сообщения: 04.11.2007 07:09
DasMonster
В свойствах ярлыка в Инно прописывай WorkingDir
Например:

Код: [Icons]
Name: {userdesktop}\GRAW 2; Filename: {app}\graw2.exe; Tasks: desktopicon; Flags: createonlyiffileexists; WorkingDir: {app}
Автор: Forslay
Дата сообщения: 04.11.2007 09:17

Цитата:
Ребят, есть такой атрибут, как "hiden", при распаковке файлов он их просто скрывает...
Но в моём случае требуется атрибут "xxx", котоый бы скрывал файлы не по обычному, а как системные файлы, тоесть даже если у пользователя в настройках стоит - видеть обычные скрытые файлы, то те которые я скрываю атрибутом "xxx" было бы невидно......

Ну неужели Вы хотите сказазть, что такого атрибута нет ?
Автор: Unc1e
Дата сообщения: 04.11.2007 09:47
DasMonster, Chuvakstepan прав, но если
Цитата:
запускаемый exe не в корне игры а где нибудь в папке

тогда надо еще кое что дописать... Вот пример для Bioshock`а:
Name: {group}\BioShock; Filename: {app}\Builds\Release\Bioshock.exe; WorkingDir: {app}\Builds\Release
Здесь ехе расположен не в корне, а в ..\{app}\Builds\Release\
Автор: Chuvakstepan
Дата сообщения: 04.11.2007 11:49
Forslay
Attribs: hidden system
Автор: DasMonster
Дата сообщения: 05.11.2007 01:28
Chuvakstepan и Unc1e мой респект! Флаг "createonlyiffileexists", я забивал и не ставил, не думал что мне он реальнонужен, а про WorkingDir:, 100% я тупанул и ставил просто {app}\, без указания вложенной папки... вот блин, такой очевидный был прокол, видно же было где косячит .

Проверил щас на маленькой прожке, с флагом createonlyiffileexists и из корня запускаеться и из находящейся там же папке. Не понимаю, почему так, вроде это же просто проверка, типа если есть файл создаеться ярлык.. В моем то случае всегда эти файлы есть.


P.S. Зато теперь можно отправлять NSIS обратно, где ему и место..в корзину. Я уж думал придеться на него переходить..
Автор: Chuvakstepan
Дата сообщения: 05.11.2007 13:17
createonlyiffileexists - флаг создания ярлыка Только при условии наличия файла
P.S> NSIS мало чё может

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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