Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 5]
Доброго времени суток, помогите с решением такой задачи:
Как сделать перемещения (Архив содержит уже готовый setup файл софта + в директории есть папка).
Задача после установки софта инсталятор из своей корневой папки копировал в папку в которую установился софт.
Или 2рое решения как научить инсталятор качать файл с фтп или веб сервера и записывать в директорию устанавливаемой программы.
Johny777
29-06-2012, 17:11
Raf-9600,
научился удалять строки из ReadyMemo, но он не удаляет строки типа "Тип установки"
сделал просто
если выбран компонент "Portable"(внутренне название port) и переходим на страницу готовности, то полностью очищаем мемо(!) и вносим свои строки, но без строки говорящей нам о создании папки в меню "Пуск"
короче как ты хотел :)
[Setup]
AppName=Portable
VersionInfoVersion=5.0
AppVerName=Portable
DefaultDirName={pf}\Portable_Or_Not_Test
DefaultGroupName=The_Most_Beautiful_Group_Name_Ever
[Components]
Name: port; Description: Portable; Types: full custom;
[Icons]
Name: {group}\new\Notepad; Filename: notepad.exe; Components: not port
[code]
function ShouldSkipPage(PageID: Integer): Boolean;
begin
if PageID = wpSelectProgramGroup then Result := IsComponentSelected('port');
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if (CurPageID = wpReady) and (IsComponentSelected('port')) then
begin
with WizardForm.ReadyMemo do
begin
Clear;
Lines.Add(SetupMessage(msgReadyMemoDir) + #13#10 +
' ' + WizardForm.DirEdit.Text + #13#10 +
+ #13#10 +
SetupMessage(msgReadyMemoType) + #13#10 +
' ' + WizardForm.TypesCombo.Text)
end;
end;
end;
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
как научить инсталятор качать файл с фтп или веб сервера и записывать в директорию устанавливаемой программы. »
эту тему полистай
в сообщении El Sanchez -а
Raf-9600
29-06-2012, 18:01
Johny777, полная очистка не подходит, потому что кроме Portable, компонентов будет дофига (которые можно выбрать вместе с Portable). И хотелось бы чтобы юзер знал что он понавыберал.
Может быть, возможно, удалить только определённую строчку? Хотя это наверно уже из разряда извращений. http://i26.fastpic.ru/big/2011/0719/2b/fc34dc50ea144827810c667a06591c2b.gif
Johny777
29-06-2012, 18:06
Raf-9600,
смотри
if (CurPageID = wpReady) and (IsComponentSelected('port'))
если страница готовности и выбран компонент port
те для всех остальных компонентов не буден никаких действий с мемо на странице готовности если не выбран компонент port
дай мне список всех компонетов, которые выбираются с портабельной
там просто нужно строки вписывать и всё.
удалить только определённую строчку »
писал выше почему не слелал этого
к тому же там строки по индексам
ну их. С одного компонента галку снимешь и номера опустятся или наооборот
Raf-9600
29-06-2012, 18:40
дай мне список всех компонетов, которые выбираются с портабельной »
Дело в том, что их 113 штук. Точно давать? http://i26.fastpic.ru/big/2011/0719/2b/fc34dc50ea144827810c667a06591c2b.gif
Вот несколько начальных:
[Components]
Name: "Game"; Description: "{cm:TypeOfInstallation}"; Flags: disablenouninstallwarning;
Name: "Game\Full"; Description: "{cm:Game}"; Flags: exclusive disablenouninstallwarning; Types: full
Name: "Game\Pottable"; Description: "Портативная"; Flags: exclusive disablenouninstallwarning;
Name: "Game\Lokal"; Description: "{cm:OnlyLocalization}"; Flags: collapsed exclusive disablenouninstallwarning;
Name: "Game\Lokal\Backup"; Description: "{cm:backup}"; Flags: disablenouninstallwarning;
Johny777
29-06-2012, 18:49
Raf-9600,
вот тебе пример как вносить строки в мемо в зависимости от выбора (надеюсь не накосячил с проверкой "выбран ли хоть один из компонентов")
разбирай
[Setup]
AppName=Portable
VersionInfoVersion=5.0
AppVerName=Portable
DefaultDirName={pf}\Portable_Or_Not_Test
DefaultGroupName=The_Most_Beautiful_Group_Name_Ever
[Components]
Name: port; Description: Portable; Types: full custom;
Name: port\add1; Description: Patch_for_Portable; Types: full custom; Flags: exclusive;
Name: port\add2; Description: Portable_Rusian_Language; Types: full custom; Flags: exclusive;
Name: dr_port; Description: Another_Portable; Types: full custom;
[Icons]
Name: {group}\new\Notepad; Filename: notepad.exe; Components: not port
[code]
function ShouldSkipPage(PageID: Integer): Boolean;
begin
if PageID = wpSelectProgramGroup then Result := IsComponentSelected('port');
end;
procedure CurPageChanged(CurPageID: Integer);
var
i: Integer;
begin
if (CurPageID = wpReady) and (IsComponentSelected('port')) then
begin
with WizardForm.ReadyMemo do
begin
Clear;
Lines.Add(SetupMessage(msgReadyMemoDir) + #13#10 +
' ' + WizardForm.DirEdit.Text + #13#10 +
+ #13#10 +
SetupMessage(msgReadyMemoType) + #13#10 +
' ' + WizardForm.TypesCombo.Text);
if WizardForm.ComponentsList.Checked[i] then /// если отмечен хоть один из компонентов
begin
Lines.Add(''); /// пустая строка
Lines.Add(SetupMessage(msgReadyMemoComponents)); /// "Выбранные компоненты:"
if IsComponentSelected('port') then Lines.Add(' ' + 'Portable'); /// если выбран компонет port, то добавить строку ' ' - пробелы от левого края + 'описание компонента'
if IsComponentSelected('port\add1') then Lines.Add(' ' + 'Patch_for_Portable'); /// по аналогии и дальше
if IsComponentSelected('port\add2') then Lines.Add(' ' + 'Portable_Rusian_Language');
if IsComponentSelected('dr_port') then Lines.Add(' ' + 'Another_Portable');
end;
end;
end;
end;
И вообще ты уверен что есть люди которые читают страницу готовности ?
Raf-9600
29-06-2012, 18:58
Неужели есть люди которые читают страницу готовности ? »
Это дело вкуса. Когда у меня только-только появился компьютер, то я её читал.
Ну и если что, я не предполагал что для удаления той строчки придёться так извращаться :)
вот тебе пример как вносить строки в мемо в зависимости от выбора (надеюсь не накосячил с проверкой "выбран ли хоть один из компонентов")
разбирай »
Всё работает. Благодарю http://i26.fastpic.ru/big/2011/0827/17/bbdd77221e05aa600f53f81a45276c17.gif
El Sanchez
29-06-2012, 19:01
Johny777, Raf-9600, дабы покончить с извращениями, направляю обоих в нужном направлении:
function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
begin
if IsComponentSelected('portable') then
Result := MemoComponentsInfo
else
Result := MemoDirInfo + NewLine + NewLine + MemoTypeInfo + NewLine + NewLine + MemoComponentsInfo + NewLine + NewLine + MemoGroupInfo;
end;
Johny777
29-06-2012, 19:11
El Sanchez,
А что такое MemoTypeInfo и MemoDirInfo и откуда ты их взял? (часом не встроенные обозначения, которые используются только в WizardForm.ReadyMemo ?)
WizardForm.TypesCombo.Text и WizardForm.DirEdit.Text например понимаю хорошо в отличии от тех, что в твоей функции
Raf-9600
29-06-2012, 19:15
El Sanchez, Спасибо!!! Я знал что должен быть элегантный способ! Теперь заодно уберу и ненужный MemoTypeInfo http://www.kolobok.us/smiles/light_skin/yahoo.gif
R.i.m.s.k.y.
29-06-2012, 19:17
El Sanchez, подскажи, пожалуйста
вроде же можно писать так
[Setup]
DisableProgramGroupPage={code:IsComponentSelected('abc')}
//или
DisableProgramGroupPage={code:IsComponentSelected|'abc'}
но вот у Raf-9600 не компилится а у меня нет инно под рукой чтобы проверить
El Sanchez
29-06-2012, 20:44
А что такое MemoTypeInfo и MemoDirInfo и откуда ты их взял? »
Johny777, выбранные тип и директория установки, отображаемых в ReadyMemo. Cм. в справке Pascal Scripting - Event Functions - UpdateReadyMemo.
вроде же можно писать так »
R.i.m.s.k.y., нельзя. DisableProgramGroupPage имеет только 3 предустановленных значения auto, yes, or no. А подобная запись может встретиться только у 2 директив - Uninstallable
и CreateUninstallRegKey, понимающих булевы выражения. Делай, как Johny777 предложил - http://forum.oszone.net/post-1942430-347.html
Ivan_009
29-06-2012, 22:20
Подскажите пожалуйста как загрузить скин на юникод версии инно :search:
Johny777
29-06-2012, 23:58
Вань
качни отсюда http://isskin.codejock.com/visualstyles.asp инсталл
установи
в директории установки будут 2 библиотеки
1. ISSkin.dll
2. ISSkinU.dll
U от Unicode
вот её и используй (переименуй в ISSkin.dll и замени)
источник информации: http://krinkels.org/showthread.php?t=358&page=47
Ivan_009
30-06-2012, 00:47
Johny777, меня интересует код для загрузки скина с обычным кодом для ANSI не пашет :( Все разобрался :gamer: спасибо :hi:
Yury_Prizrak
30-06-2012, 15:17
если файла нет и завершать, то это бред. Как же тогда его ставить »
Да, я немного некорректно сформулировал идею. Никак, в этом и смысл. Я пишу 2 инсталятора. 1-ый ставит программу - с кучей настроек и прочей ерунды, которую пользователь указывает. А вторая инсталяция - это апдейт. Т.е. там один раз нажать далее и один раз установить :) Соответственно если стартовая версия не поставлена то апдейт не станет. Как то так.
По поводу рееста - извините, сразу не разобрался.
{#SetupSetting("AppID")} - вот эта хрень у меня так и не заработала - выдает внутренее исключение - указал сразу жестко.
mariolast
02-07-2012, 18:14
Кто о наверняка сталкивался...
Как в английской винде сделать так, чтобы инсталлятор на русском не крякозябрами показывал а нормальными буквами?
Окромя такого вот решения как здесь описано http://www.wylek.ru/forum/31-153-5718-16-1341169828
есть что то получше?
Привет. Кто подскажет как сделать рамочку как на http://forum.oszone.net/attachment.php?attachmentid=84462&stc=1&d=1341283641 скриншоте?
И второй вопрос. Есть два ключа реестра и один из них привязан к компоненту, как сделать чтоб если на компоненте галочка стоит то то второй не вносился а если снята то второй вносился а первый нет?
Johny777
03-07-2012, 09:29
И второй вопрос. »
L1nk3R, таким же макаром как здесь. Какая ссылка на тебя смотрит ту и выбирай :)
http://forum.oszone.net/post-1942159-340.html
http://forum.oszone.net/post-1942247-341.html
как сделать рамочку »
это вероятнее всего панель с двумя чекбоксами
используй дизайнер расширенной http://forum.oszone.net/thread-148707-30.html версии
создай там панель и настрой BevelInner и BevelOuter
а также вот тебе русская справка http://sendfile.su/570136
как сделать рамочку »это вероятнее всего панель с двумя чекбоксами »Да бевел это.
TBevelShape = (bsBox, bsFrame, bsTopLine, bsBottomLine, bsLeftLine, bsRightLine, bsSpacer);
TBevelStyle = (bsLowered, bsRaised);
TBevel = class(TGraphicControl)
property Shape: TBevelShape; read write;
property Style: TBevelStyle; read write;
end;
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.