Войти

Показать полную графическую версию : [архив] Скрипты Inno Setup. Помощь и советы [часть 2]


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 [94] 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

mash
01-06-2010, 13:14
R.i.m.s.k.y., я не правильно зацепился за эти, параметр и значение, ведь русская винда может быть типа от "кого угодно" и в этом случае все задуманное ломается, можно попросить Вас переписать Ваш скрипт:
[Files]
Source: Reg.reg; DestDir: {tmp}; AfterInstall: NLS
[_Code]
Procedure NLS();
Var NLS1: string; res : integer;
begin
RegQueryStringValue(HKLM, 'SYSTEM\CurrentControlSet\Control\Nls\CodePage','10001', NLS1);
if NLS1 <> 'www' then Exec('reg.exe', ' import ' + ' ' + AddQuotes(ExpandConstant('{tmp}\reg.reg')),ExpandConstant('{tmp}'),SW_HIDE, ewWaitUntilTerminated, res);
end;
с новыми значениями:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"ACP"="1252"
А то все мои попытки переписать скрипт с этими значениями приводят к ошибке.
Заранее благодарен!

Кстати, при Вашем скрипте у меня файл reg повидимому не запустился, хотя значение в реестре было "10001"="", а не иное.

R.i.m.s.k.y.
01-06-2010, 15:28
Уважаемые начинающие!
Прочитайте, пожалуйста, http://victor-dobrov.narod.ru/InnoSetupFAQ_ru-board.chm, там есть ответы на большинство Ваших вопросов, если после прочтения вопросы таки останутся - велкам на форум, мы чем сможем - поможем!

semiono
01-06-2010, 16:16
Reg_None нету в перечне. »
Но я надеялся хотя бы уже на конвертирование binary в строку 16-ричных записей, хотя наверное нету и этого.
Я насамом деле не знаю как сформулировать это - 10,12,e3,f4,ac,00,11 итп.
Другими словами из реального байта 00 надо зделать 30,
из 01 зделать 31, из 0a зделать 61 и запятыми эти байты разделить. Если iss Pascal это не может то здаюсь! :)
В автоит нечто такое было помню hex($string)

mash
02-06-2010, 00:26
R.i.m.s.k.y., спасибо тебе все получилось, правда вот осталась одна малость. Может кто-то поможет к этому коду добавить:

Procedure NLS();
Var NLS1: string; res : integer;
begin
RegQueryStringValue(HKLM, 'SYSTEM\CurrentControlSet\Control\Nls\CodePage','ACP', NLS1);
if NLS1 = '1252' then Exec('reg.exe', ' import ' + ' ' + AddQuotes(ExpandConstant('{tmp}\Rus.reg')),ExpandConstant('{tmp}'),SW_HIDE, ewWaitUntilTerminated, res);
end;
ииии + перезагрузиться в конце инсталляции.

Sotonisto
02-06-2010, 07:50
Как сделать так чтоб выбраный ярлык во время инсталяции отправляло на раб стол?»
[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
[Icons]
Name: {commondesktop}\Rainbow Six Vegas; Filename: {app}\Binaries\R6Vegas_Game(tanik).exe; Tasks: desktopicon
Как сделать нормальную деинстоляцию программы, а то выдаёт ошибку что какой то файл не распознан данной версией?»
Удали с папки unins000.dat и unins000.exe а потом уже собирай инсталл :)
Как сделать так чтоб программу можно было запускать через меню пуск?»
[Icons]
Name: {group}\Имя иконки; Filename: {app}\путь к фалу запуска *.exe
Как задать запуску и удаленю иконки?»
[Icons]
Name: {group}\Запустить игру /программу; Filename: {app}\my_prog.exe
Name: {group}\Удалить игру /программу; Filename: {uninstallexe}
------
Вопросы к знатокам :)
1. Можно ли удалить иконку инсталлятора с шапки (рамки) инсталла (ну что б было как в инсталле DirectX)?
2. Можно ли удалить кнопки свернуть, закрыть, уменьшить с шапки (рамки) инсталла (как в инсталле DirectX)? :)
http://i015.radikal.ru/1006/e5/8a48fd5cde0ft.jpg (http://radikal.ru/F/i015.radikal.ru/1006/e5/8a48fd5cde0f.jpg.html)

MaxHacker
02-06-2010, 19:34
Как на FinishPage прописать такую вещь ?:
Есть поле ввода над которым надпись:"Введите имя которое будет отображаться в игре"
Пользователь вводит имя, допустим Killer, и после нажатия кнопки Готово инсталлятор в файле Rev.ini, он находится в папке приложения, в строчке PlayerName=Player вместо =Player (или после = ) писал имя введенное пользователем (в даном случае Killer)
Желательно чтобы этот скрипт можно было использовать вместе с Need for Speed™ Undercover.iss v 2.2
rev.ini прилагаю к сообщению

MaxHacker
02-06-2010, 21:06
1. Можно ли удалить иконку инсталлятора с шапки (рамки) инсталла (ну что б было как в инсталле DirectX)?
»

Убрать иконку в левом-верхнем углу исталлятора
[Code]
procedure InitializeWizard();
begin
WizardForm.BorderStyle := bsDialog;
end;

Вроде так

Sotonisto
02-06-2010, 22:40
Как на FinishPage прописать такую вещь ?:
Есть поле ввода над которым надпись:"Введите имя которое будет отображаться в игре"
Пользователь вводит имя, допустим Killer, и после нажатия кнопки Готово инсталлятор в файле Rev.ini, он находится в папке приложения, в строчке PlayerName=Player вместо =Player (или после = ) писал имя введенное пользователем (в даном случае Killer)
Желательно чтобы этот скрипт можно было использовать вместе с Need for Speed™ Undercover.iss v 2.2 »
Для этого прийдется создавать новую страницу, надеюсь ты умеешь это делать? :)

Я могу дать тебе скрипт инсталла PKS-овского патча (мож с него попробовать вытянуть код), но вроде он не редактирует, а создает rev файл. Я в нем не рылся :)
http://i080.radikal.ru/1006/3b/dd8df50974e4t.jpg (http://radikal.ru/F/i080.radikal.ru/1006/3b/dd8df50974e4.jpg.html)
Но чет я сомневаюсь что оно те подойдет...

M3EG
03-06-2010, 08:23
Хелп народ.
Делаю инсталятор, компелирую все ок, но иконка у него не появляется, а белая делается как без иконки. И не пишет кто издатель и тп.
Если делаю быстро на пустом в мастере все ок, но если добавить файлы ~ 700+ мб то нету иконки ни когда ( белый знак как без иконки) и не пишет издателя. Как можно исправить? Срочно надо.

R.i.m.s.k.y.
03-06-2010, 08:43
Хелп народ »
Во первых - иконка гидэ? на самом инсталлере или в пуске?
если на инсталлере, то в секции
[Setup]
SetupIconFile=RimPack\Program Files\RimPack.ico
Если в секции [icons] проверяем аккуратно все ссылки

Во вторых - издателя так же где? на первой странице?
Можно делать по-разному:
1. Ищем текст, который там выводится в Default.isl (и всех остальных) файлах языков и меняем на свой текст.
2. В файлах языков .isl записывам свое сообщение в [CustomMessages] и потом его используем, подменяя стандартное.

Пример. Открываем нужный языковой файл в формате .isl и находим там интересующий нас текст, перед текстом будет переменная, которая и отвечает за отображаемый текст. Заносим эту переменную в свой скрипт в секцию [Messages]. В итоге будет:
[Messages]
WelcomeLabel2=Твой текст

R.i.m.s.k.y.
03-06-2010, 10:55
Мой вопрос: как связать WizardForm.ComponentsList.Checked[1] и WizardForm.ComponentsList.Name? Необходимо найти по имени комопненты и проверить - выбран ли компонент или наоборот - сделать его выбранным.
Сейчас сделано по порядковым номерам и это не очень удобно, одно неверное движение - и вы отец и все поплывет.
Заранее спасибо!

MaxHacker
03-06-2010, 10:55
Хелп народ.
Делаю инсталятор, компелирую все ок, но иконка у него не появляется, а белая делается как без иконки. И не пишет кто издатель и тп.
Если делаю быстро на пустом в мастере все ок, но если добавить файлы ~ 700+ мб то нету иконки ни когда ( белый знак как без иконки) и не пишет издателя. Как можно исправить? Срочно надо. »

если добавляешь файлы ~ 700+ мб то надо разбить инсталлятор на тома (используй ISTool) иконка будет отображаться (в тяжолых инсталляторах иконка не отображается

Для этого прийдется создавать новую страницу, надеюсь ты умеешь это делать? »

Умею

Я могу дать тебе скрипт инсталла PKS-овского патча (мож с него попробовать вытянуть код), но вроде он не редактирует, а создает rev файл. Я в нем не рылся
Но чет я сомневаюсь что оно те подойдет... »

Давай !!! тоже подойдет

travian
03-06-2010, 11:34
Пример »
Спасибо.
Осталась одна проблемка. Когда пользователь выбирает диск куда устанавливать, то сначала у него, например, написано: Доступно места на диске: 5.0 GB. Когда он выбирает другой диск надпись: Доступно места на диске: N GB - накладывается на предыдущую и получается каша в которой не разглядеть что написано.
Исправил это просто убрав прозрачность на этом пункте, но теперь получается так:
Стандартно выбран диск E:
http://i7.fastpic.ru/big/2010/0603/d2/380c0714c7b635be6a33da77744028d2.png
А теперь выбираем диск C:
http://i7.fastpic.ru/big/2010/0603/42/956cd32cb9f4749635ecae9a86543542.png
Видим, что надпись Доступно места на диске: 4,65 GB закрыла предыдущую, но не полностью. Как это можно исправить?

moraru
03-06-2010, 15:29
У меня проблемы при компиляции файла с использованием Inno Setup Preprocessor. Короче пишет
to be able to use compiled derectives other than "#include", you need Inno Setup Preprocessor which currently not installed.
но у меня стоит Inno Setup 5.3.9 (a) QuickPack!
В чем проблема помогите!

vint56
03-06-2010, 15:35
moraru, у тебя не процессора вот скачай поставь галочки везде кроме istool если не надо http://files.jrsoftware.org/ispack/ispack-5.3.9.exe

moraru
03-06-2010, 15:44
vint56, А!!!!!!!!! Доперло! Я прост думал рекламка какаята и пропускал ее... ну в смысле в инсталяторе устанавливал только сам компилятор

R.i.m.s.k.y.
03-06-2010, 15:46
Сейчас в коде инсталлера сделано так:

if (WizardForm.ComponentsList.Checked[1]) then mode := 1;
if (WizardForm.ComponentsList.Checked[2]) then mode := 2;
if (WizardForm.ComponentsList.Checked[3]) then mode := 3;
if (WizardForm.ComponentsList.Checked[4]) then mode := 4;
if (WizardForm.ComponentsList.Checked[5]) then mode := 5;
if (WizardForm.ComponentsList.Checked[6]) then dxva := 1;
if (WizardForm.ComponentsList.Checked[7]) then def := 1;

если я добавляю в список компонетов еще строчку - вся нумерация плывет
Хорошо бы писать if (WizardForm.ComponentsList.Name('auto')....) then mode := 1;
Что подставить вместо ....?

Как работать в коде с компонентами по имени компоненты, а не по ее порядковому номеру?

M3EG
03-06-2010, 16:05
Подскажите как правльно прописать ключи для реестера при репаке.

Вот что в файле экспорта из реестера:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\LucasArts]
@=""

[HKEY_LOCAL_MACHINE\SOFTWARE\LucasArts\Star Wars Jedi Knight Jedi Academy]
@=""

[HKEY_LOCAL_MACHINE\SOFTWARE\LucasArts\Star Wars Jedi Knight Jedi Academy\1.0]
"Install Path"="C:\\Program Files\\LucasArts\\Star Wars Jedi Knight Jedi Academy"
"Launcher"="C:\\Program Files\\LucasArts\\Star Wars Jedi Knight Jedi Academy\\JediAcademy.exe"
"UninstallString"="C:\\Program Files\\InstallShield Installation Information\\{1EECBA68-8BE4-4076-94DF-E9ED206B1D21}\\Setup.exe"
"CDPath"="F:"
"Source Path"="F:"
"Source Dir"="F:\\"
"InstallType"=dword:00000001
"Installed"=dword:00000002
"Magic"=dword:00092775

Вот из Regshot
http://forum.ru-board.com/topic.cgi?forum=5&topic=33457&start=1610&limit=1&m=2#1

Я в коде делал так:


[Registry]
Root: HKLM; SubKey: SOFTWARE\LucasArts; ValueType: string; ValueName: ; ValueData:
Root: HKLM; SubKey: SOFTWARE\LucasArts\Star Wars Jedi Knight Jedi Academy; ValueType: string; ValueName: ; ValueData:
Root: HKLM; SubKey: SOFTWARE\LucasArts\Star Wars Jedi Knight Jedi Academy\1.0; ValueType: string; ValueName: Install Path; ValueData: {app}; Flags: uninsdeletekey
Root: HKLM; SubKey: SOFTWARE\LucasArts\Star Wars Jedi Knight Jedi Academy\1.0; ValueType: string; ValueName: Launcher; ValueData: {app}\JediAcademy.exe; Flags: uninsdeletekey
Root: HKLM; SubKey: SOFTWARE\LucasArts\Star Wars Jedi Knight Jedi Academy\1.0; ValueType: dword; ValueName: InstallType; ValueData: $00000001
Root: HKLM; SubKey: SOFTWARE\LucasArts\Star Wars Jedi Knight Jedi Academy\1.0; ValueType: dword; ValueName: Installed; ValueData: $00000002
Root: HKLM; SubKey: SOFTWARE\LucasArts\Star Wars Jedi Knight Jedi Academy\1.0; ValueType: dword; ValueName: Magic; ValueData: $00092775

И вот проблема. Если как я написал в коде то после установки лаунчер не идет выдает ошибку. Я там не все ключи в код делал так как хз че там в value data надо. Подскажите какие ключи реестера надо завести чтобы все ок было, и что во всех Value Data изменить надо? В коде если не сложно с value data правельным.

R.i.m.s.k.y.
03-06-2010, 16:12
Подскажите какие ключи реестера надо завести чтобы все ок было »
Вот так вот трудно сказать, может ему

"UninstallString"="C:\\Program Files\\InstallShield Installation Information\\{1EECBA68-8BE4-4076-94DF-E9ED206B1D21}\\Setup.exe"
"CDPath"="F:"
"Source Path"="F:"
"Source Dir"="F:\\"
не хватает?

M3EG
03-06-2010, 16:26
Только как правельно в Value Data сделать? F это место откуда ставилось. ну а первый ключ от инсталл шиелд врятли нужен.




© OSzone.net 2001-2012