Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 6]
Debugger, можно, читаем справку про Check parameters
[Files]
Source: "A\MYFILE.TXT"; DestDir: "{app}"; Check: MyDirCheck(ExpandConstant('{app}\A'))
Source: "B\MYFILE.TXT"; DestDir: "{app}"; Check: DirExists(ExpandConstant('{app}\B'))
[Codе]
function MyDirCheck(DirName: String): Boolean;
begin
Result := DirExists(DirName);
end;
Здравствуйте, помогите пожалуйста вывести в скрипте компоненты и прогресс бар при установке
прогресс бар починил, но с компонентами никак
http://rghost.ru/52720578
Debugger
01-03-2014, 10:00
innot20, покажите часть кода, который, как вы думаете не работает.
Код ваш скачал, но отладить его трудновато, много чего не хватает, а загонять в комментарии неработающие строки то еще удовольствие.
innot20, покажите часть кода, который, как вы думаете не работает.
Код ваш скачал, но отладить его трудновато, много чего не хватает, а загонять в комментарии неработающие строки то еще удовольствие. »
Вы уж меня простите, но я не представляю где ошибка, если включить InnerNotebook и OuterNotebook, то компоненты выводятся, но на всех страницах
Продолжаю копаться, ничего не получается
Уже пошёл метод извращения
Ребят, а вот скажите пожалуйста, вопрос с правами. Я, например, хочу, чтоб программа устанавливалась в Program Files. Сделал, установил, все норм. Но норм только если установка осуществляется с админского аккаунта. Я же хочу сделать, чтоб любой пользователь мог устанавливать программу. Для этого в секцию [Setup] дописал:
PrivilegesRequired=noneЕсли этого не сделать, то юзер вообще не сможет запустить установку. С этим же параметром она запускается, но на этапе копирования файлов установщик вылетает с ошибкой 5: access denied. Оно вроде бы как понятно, ведь обычный юзер не имеет прав на изменение содержимого папки Programm Files. Но тогда получается, что он вообще ни одной программы туда установить не может, однако это ведь не так..какой-нибудь пунто свитчер замечательно устанавливается из-под обычного юзера в pf. Подскажите, что надо дописать и куда, чтоб инсталлятор не смотрел на то, из-под какого аккаунта его запускают?
Farser21
01-03-2014, 23:57
Всем привет, возможно как-то вывести окно компонентов со своим размером и координатами через скрипт а не через Дизайнер диалогов.
Приветствую!
простая установка, все через Визард создано, за исключением добавления:
PrivilegesRequired=none
один Exe и подкаталог Data с файловой БД.
после установки, программа запускается только при явном указании Run As Administrator.
при этом если просто скопировать содержимое папки из Program Files в любую иную папку вне этого каталог, то всё запускается на ура.
Что ещё надо прописать и где? подскажите плиз! а то на след.неделе надо отсылать заказчику... :(
вот нашел ссылку по теме...
"PRB: My application can't write to its directory when run as a regular user"
http://www.jrsoftware.org/iskb.php?cantwritetoapp
но у нас проблема, менять код нельзя, а открывать дыру не хочется... в тоже время когда использовали Install Shield таких проблем не возникало... или мы просто про них ничего не знали? :)
Владимир
Johny777
02-03-2014, 01:15
Farser21, я ни фига не понял что ты хочешь. Изучи ка для начала методы класса TNewCheckListBox коим и является ComponentsList и может твой вопрос отпадёт
Farser21
02-03-2014, 01:27
Johny777, объясняю. Я скачал готовый установщик переделал под себя, осталось одно это добавить окно в котором можно будет выбирать компоненты. Но есть одно "Но" у меня уникальный дизайн поэтому добавить окно компонентов через Дизайнер диалогов я не могу. И собственно сам вопрос, "Как добавить окно компонентов со своим размером и координатами в скрипте?"
Johny777
02-03-2014, 01:33
Farser21, дык оно автоматом добавляется, стоит вписать в секции скрипта [Components] какой-нибудь "компонент"!
а размер и координаты настраиваешь через метод класса SetBounds(...);
или тебе ещё один TNewCheckListBox нужен помимо стандартного?
Farser21
02-03-2014, 01:36
Johny777, не так все просто как ты думаешь.
"Я скачал готовый установщик переделал под себя"
"Но есть одно "Но" у меня уникальный дизайн поэтому добавить окно компонентов через Дизайнер диалогов я не могу"
А значит если оно не выводиться через Дизайнер диалог, то и секция [Components] тоже не добавляет окно компонентов.
Johny777
02-03-2014, 01:49
Farser21, значит создавай на странице в ручную через код. И вообще базар о ни о чём
что там за уникальный дизайн? Может скрипт покажешь, а то я сижу и угадываю,
например не знаю что такое "Дизайнер диалог"
это "редактор форм" в среде разработки?
http://rghost.ru/private/52758405/aa3098ec8bc3aba51d2d39001469f5f5/image.png (http://rghost.ru/private/52758405/aa3098ec8bc3aba51d2d39001469f5f5.view)
и секция [Components] тоже не добавляет окно компонентов »
по ходу автор твоего скрипта не пойми зачем скрыл OuterNotebook. Мои поздравления!
Farser21
02-03-2014, 01:54
Johny777, http://rghost.ru/52758435
"значит создавай на странице в ручную через код. И вообще базар о ни о чём"
В том и дело, что я не могу создать в ручную поэтому и прошу помощи.
Johny777
02-03-2014, 02:57
Farser21 согласно картинкам сверху отображающим статус текущей страницы страница компонентов у тебя есть.
но согласно коду её роль выполняет страница задач wpSelectTasks
как я уже говорил. Добавив секцию [Components] ты получишь страницу с компонентами, но пустую потому что я правильно предположил, что OuterNotebook скрыт
предлагаю поступить так
1. заводим себе секцию с компонентами. Для начала вот такую маленькую
[Components]
Name: "main"; Description: "Main Files";
2. пропускаем возникшую страницу ведь у нас есть страница задач - wpSelectTasks, исполняющая роль заместителя страницы компонетов предположительно по непостижимой задумке автора :)
"вкопируй" себе эту функцию где-нибудь
function ShouldSkipPage(PageID: Integer): Boolean;
begin
Result := (PageID = wpSelectComponents);
end;
3. в процедуре InitializeWizard после авторских манипуляций с визуальными компонентами мы установим родителем ComponentsList-а нашу главную форму и скроем его, чтоб он не маячил на каждой "странице"
procedure InitializeWizard;
begin
CreateWizardImage;
CreateWizard;
ButtonsTextures;
WizardForm.ComponentsList.Parent := WizardForm;
WizardForm.ComponentsList.SetBounds(30, 230, 300, 100); // устанавливаем координаты (слева, сверху, ширина, высота)
WizardForm.ComponentsList.Color := WizardForm.Color; // цвет присвоим от цвета WizardForm
WizardForm.ComponentsList.Hide; // ну и спрячем
....
4. в процедуре procedure CurPageChanged(CurPageID: Integer);
нужно вписать
wpSelectDir:
begin
...
WizardForm.ComponentsList.Hide;
end;
wpSelectProgramGroup:
begin
...
WizardForm.ComponentsList.Hide;
end;
wpSelectTasks:
begin
...
WizardForm.ComponentsList.Show;
end;
wpReady:
begin
...
WizardForm.ComponentsList.Hide;
end;
другими словами мы показываем его на странице wpSelectTasks, а на предыдущей и последующей скрываем
здесь правда я скрываю его на 2-х предыдущих: wpSelectProgramGroup, wpSelectDir
хотя достаточно на wpSelectProgramGroup, но почему-то эта страница перепрыгивается.
готово.
теперь как обычно заполняешь секцию компонентов компонентами и судя по тому что ты не используешь встроенныое решение для сжатия и распаковки файлов, регулируешь распаковку через Check: например так:
[Components]
Name: "program"; Description: "Program Files"; Check: Extract('program');
Name: "help"; Description: "Help File"; Check: Extract('help');
Name: "readme"; Description: "Readme File"; Check: Extract('readme');
[code ]
function Extract( const ComponentName: String ): Boolean;
begin
case ComponentName of
'program':
begin
// здесь код отвечающий за распаковку файлов этого компонента
end;
'help':
begin
// соответсвенно
end;
'readme':
begin
// ...
end;
end;
end;
результат:
http://rghost.ru/private/52759013/37d3b6a9b6147e06b1f671b5f871da18/image.png (http://rghost.ru/private/52759013/37d3b6a9b6147e06b1f671b5f871da18.view)
Farser21
02-03-2014, 12:22
Johny777, спасибо просто огромнейшое)
Возникала небольшая проблемка, все сделал как ты написал, но почему-то пропускает вообще страницу компонентов.
Может это из-за того, что я не могу поставить .... выдает ошибку.
спасибо просто огромнейшое) »Помощь (http://forum.oszone.net/faq.php) » Использование форума (http://forum.oszone.net/faq.php?faq=vb_faq#faq_vb_board_usage) » Как я могу отметить сообщение полезным? (http://forum.oszone.net/faq.php?faq=vb_board_usage#faq_thanks)
Johny777
02-03-2014, 14:49
Farser21, только что сделал ещё раз всё то что у меня в посте и всё нормально.
"..." это условно твой код который уже есть.
те например в оригинале у тебя в wpReady вот так
wpReady:
begin
//WerInctall1.Caption:='Всё готово к установке';
//WerInstall2.Caption:='Программа установки готова начать установку «{#MyAppName}» на Ваш компьютер.';
ImgSetVisibility(work4,True);
ImgSetVisibility(Ready,True);
ReadyLabel1.Show;
ReadyLabel2.Show;
// ReadyLabel3.Show;
end;
роль многточия выполняет
//WerInctall1.Caption:='Всё готово к установке';
//WerInstall2.Caption:='Программа установки готова начать установку «{#MyAppName}» на Ваш компьютер.';
ImgSetVisibility(work4,True);
ImgSetVisibility(Ready,True);
ReadyLabel1.Show;
ReadyLabel2.Show;
// ReadyLabel3.Show;
ну и в конце этого участка команд ты пишешь в данном случае WizardForm.ComponentsList.Hide;
получаешь
wpReady:
begin
//WerInctall1.Caption:='Всё готово к установке';
//WerInstall2.Caption:='Программа установки готова начать установку «{#MyAppName}» на Ваш компьютер.';
ImgSetVisibility(work4,True);
ImgSetVisibility(Ready,True);
ReadyLabel1.Show;
ReadyLabel2.Show;
// ReadyLabel3.Show;
WizardForm.ComponentsList.Hide;
end;
вот на всякий случай рабочий скрипт http://rghost.ru/private/52766344/4e3d6d20acb8fb108ee14754b9935f9c
Farser21
02-03-2014, 15:02
Johny777, вроде бы разобрался спасибо!
Farser21
02-03-2014, 16:33
Johny777, Какой код должен отвечать за установку компонента в этом скрипте
http://rghost.ru/private/52766344/4e3d6d20acb8fb108ee14754b9935f9c
ghost7339@vk
02-03-2014, 16:50
Всем привет подскажите пожалуйста можно ли в inno реализовать что бы в каждом окошке типа (ПРИВЕТСТВИЕ, ПРОВЕРКА СИС.ТРЕБ, ВЫБОР ПАПКИ УСТАНОВКИ и Т.Д) воспроизводилось отдельное видео?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.