Показать полную графическую версию : [архив] Скрипты Inno Setup. Помощь и советы [часть 2]
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, там есть ответы на большинство Ваших вопросов, если после прочтения вопросы таки останутся - велкам на форум, мы чем сможем - поможем!
Reg_None нету в перечне. »
Но я надеялся хотя бы уже на конвертирование binary в строку 16-ричных записей, хотя наверное нету и этого.
Я насамом деле не знаю как сформулировать это - 10,12,e3,f4,ac,00,11 итп.
Другими словами из реального байта 00 надо зделать 30,
из 01 зделать 31, из 0a зделать 61 и запятыми эти байты разделить. Если iss Pascal это не может то здаюсь! :)
В автоит нечто такое было помню hex($string)
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)
Но чет я сомневаюсь что оно те подойдет...
Хелп народ.
Делаю инсталятор, компелирую все ок, но иконка у него не появляется, а белая делается как без иконки. И не пишет кто издатель и тп.
Если делаю быстро на пустом в мастере все ок, но если добавить файлы ~ 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 файл. Я в нем не рылся
Но чет я сомневаюсь что оно те подойдет... »
Давай !!! тоже подойдет
Пример »
Спасибо.
Осталась одна проблемка. Когда пользователь выбирает диск куда устанавливать, то сначала у него, например, написано: Доступно места на диске: 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 закрыла предыдущую, но не полностью. Как это можно исправить?
У меня проблемы при компиляции файла с использованием 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!
В чем проблема помогите!
moraru, у тебя не процессора вот скачай поставь галочки везде кроме istool если не надо http://files.jrsoftware.org/ispack/ispack-5.3.9.exe
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;
Что подставить вместо ....?
Как работать в коде с компонентами по имени компоненты, а не по ее порядковому номеру?
Подскажите как правльно прописать ключи для реестера при репаке.
Вот что в файле экспорта из реестера:
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:\\"
не хватает?
Только как правельно в Value Data сделать? F это место откуда ставилось. ну а первый ключ от инсталл шиелд врятли нужен.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.