PDA

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


Страниц : 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

Gnom_aka_Lexander
26-09-2013, 14:45
El Sanchez, Еще можно добавить
ExpandConstant('{%TEMP}')
Вроде так.

XXXler
26-09-2013, 14:48
пути к папкам я получаю таким макаром (код Delphi): »
все нужные вам константы уже есть в Inno (см. спавку), в коде их можно получить используя ExpandConstant('{some_constant}')

а путь к папке Temp только одним способом. Другого не знаю (код Delphi): »
опять-же, если хотите использовать именно %TEMP%, его можно получить через константу {%temp} , но настоятельно рекомендуется использовать {tmp} во избежание проблем с существующими/занятыми файлами и необходимостью очистки папки в конце процесса

Johny777
26-09-2013, 16:02
XXXler,
все нужные вам константы уже есть в Inno (см. спавку) »
не буду смотреть справку по инно :) , я инно не пользуюсь, пишу свой инстал в RadStudioXE
и там нет ничего готового в плане путей (по крайней мере я пока не видел) и как-то пофиг,
тк мне интереснее самому написать реализацию получения нужных мне путей а не пользоваться встроенными, если б они были
коды в моём предыдущем посте - часть исходников проекта на Delphi
а здесь на форуме стараюсь отвечать на вопросы связанные с кодом, тк кому-то помощь, а мне знания
а иногда и сам спрашиваю, ведь тут хватает людей у которых я хотел бы многому научиться

Gnom_aka_Lexander,
И я совершенно не понимаю, при чем тут Delphi. »
"код на делфи", написал, чтоб никому в голову не взбрело спросить: "почему при компиляции в инно функций из моего поста вылетают ошибки?"

El Sanchez,
выбирай: »
GetEnv = (WinApi) GetEnvironmentVariable
а какую функцию лучше использовать? Мне кажется GetTemPath возвращает то же, что и GetEnvironmentVariable
тк цитирую отсюда http://msdn.microsoft.com/en-us/library/windows/desktop/aa364992%28v=vs.85%29.aspx

Remarks

The GetTempPath function checks for the existence of environment variables in the following order and uses the first path found:

The path specified by the TMP environment variable.
The path specified by the TEMP environment variable.
The path specified by the USERPROFILE environment variable.
The Windows directory.

те путь к временной папке мне в какой-то мере гарантирован
и ничего что я использую именно этот путь для хранения временных файлов, там, в папке с уникальным рандомным именем?
к слову рандрмное имя получаю таким макаром:

function GenTempFolserUniqueName(): String;
var
FSobj: Variant;
begin
try
FSobj := CreateOleObject('Scripting.FileSystemObject');
Result := FSobj.GetTempName;
except
Result := 'SourceEngine15_' + IntToStr(GetTickCount());
end;
end;

Nordek
26-09-2013, 17:44
поясняю привилегии установщика: »Да знаю я эти привилегии, только смысла не вижу применять их, по умолчанию вполне хватит.
Появится смысл тогда когда будет понятно то что описал ниже в примере.
Тем более какие бы ты привилегии не применил, сам установщик всё равно запускается только из под админа.
И то что в конце установке из инсталлятора выполняешь, соответственно и программа запускается из под админа и можно любые настройки менять как хочешь. Но потом, обычным запуском попробуй-ка настройки изменить (опять же пример привёл ниже).

тут либо ошибка сборщика, допустившего расположение конфигурационного файла в месте, недоступном простому обывателю, либо ошибка разработчика программы, не сумевшего заставить свое приложение читать свой же конфигурационный файл. »Сборщику? Разработчику?

Если нету, то установи Akelpad чтоб убедиться.
Если переключить на то чтоб настройки сохранялись в ini, переключи, потом примени
http://i2.imageban.ru/thumbs/2013.09.26/2b49d5bcad336d8cabf58405cfc52ee0.png (http://i2.imageban.ru/out/2013/09/26/2b49d5bcad336d8cabf58405cfc52ee0.png)
и тут тебя ждёт большой облом
http://i5.imageban.ru/thumbs/2013.09.26/033ce5e00a6b0b2bd3b82dccfe8bbe3f.png (http://i5.imageban.ru/out/2013/09/26/033ce5e00a6b0b2bd3b82dccfe8bbe3f.png).
Как видишь ничего не применилось.
Все потому, что надо было непросто запустить, а запустить аж от администратора.
Есть способ чтоб запускать Akelpad обычным способом и чтоб применялись без администратора.
Так что не сборщик, и даже не разработчик в этом не виноват.

El Sanchez
26-09-2013, 21:37
GetEnv = (WinApi) GetEnvironmentVariable
а какую функцию лучше использовать? Мне кажется GetTemPath возвращает то же, что и GetEnvironmentVariable »
Johny777, (Inno) GetEnv = (WinApi) GetEnvironmentVariable, (Inno) GetTempDir = (WINAPI) GetTempPath. Первую для общего применения, вторую для конкретного (Temp).

и ничего что я использую именно этот путь для хранения временных файлов, там, в папке с уникальным рандомным именем? »
Johny777, что-то останавливает?

к слову рандрмное имя получаю таким макаром »
Johny777, можешь использовать GetTempFileName (http://msdn.microsoft.com/en-us/library/windows/desktop/aa364991(v=vs.85).aspx).



Простой пример c Akelpad »

Nordek, ну, все правильно. В манифесте приложения указан уровень привилегий asInvoker, означающий, что приложение будет запущено с теми же разрешениями, что и запустивший его процесс. Для системы с UAC запуск такого приложения не является чем-то таким, что требует администраторских прав, поэтому приложение будет запущено с правами обычного пользователя. На скриншоте-же изображен отлуп приложению с правами пользователя при попытке записать что-то в файл, находящегося в системной директории (программной папке AkelPad-а в Program Files). Тут либо ПКМ -> Запуск от имени Администратора, либо наличие работающего файла AkelFiles\AkelAdmin.exe, предназначенного для повышения прав при необходимости записи в защищенные файлы.
P.S. Лирическое отступление

Nordek
27-09-2013, 10:41
поэтому приложение будет запущено с правами обычного пользователя. »Даже и это не совсем так.

Тут либо ПКМ -> Запуск от имени Администратора »Видишь ли, я тут тоже думал что без ПКМ -> Запуск от имени Администратора не обойтись. А оказалось то оно не так, совсем не так. Это заморочки самой винды и её безопасности. Админ тут вообще не причём.

либо наличие работающего файла AkelFiles\AkelAdmin.exe »
Это тоже не то. Да и вообще не в ту степь полез.

Ну, думайте думайте.
Это как раз будет задача для всех: Как после установки запустить программу простым запуском, менять настройки не прибегая к запуску админа.
А я пока поищу реализации в Inno, может найду.

XXXler
27-09-2013, 10:58
Видишь ли, я тут тоже думал что без ПКМ -> Запуск от имени Администратора не обойтись. А оказалось то оно не так, совсем не так. Это заморочки самой винды и её безопасности. Админ тут вообще не причём. »
Конкретно в семерке это проблема автоотключения виртуализации при указанном в манифесте приложения RequestedExecutionLevel - до версии с AkelAdmin.exe все работало и сохранялось в %LOCALAPPDATA%\VirtualStore

Dinvin4ester
28-09-2013, 22:19
Ребята всем привет . Что делаю не так - http://sendfile.su/873653.
Удалил:
Выбор компонентов
Язык интерфейса:
Русский
Английский
Язык озвучки:
Обновить DirectX
Установить Nvidia PhysX
Установить Microsoft Visual C++ Redist
Установить Games for Windows LIVE
Но они все-равно остались , точнее в само инсталле такое и так далее http://i57.fastpic.ru/big/2013/0928/9a/b24c151e9497b2c61b73524bbc56de9a.png
Помогите пожалуйста .Как их удалить ?

Nordek
28-09-2013, 22:27
AkelAdmin.exe все работало и сохранялось в %LOCALAPPDATA%\VirtualStore »Да забудь ты про AkelAdmin. Можешь любую portable программу (которая запускается из под обычного пользователя не запрашивая адм.прав и имеет рядом конфигурационный файл (в пример AIMP, Opera и обе portable)) засунуть в папку PF на системном диске и увидеть как она себя там будет вести. Но не суть, у меня есть такая для которой при установки мало того что конфиг суётся в PF, так ещё и dll-ки регистрируются (это не говоря о том что вторые настройки помещаются в корень системного диска). Суть одна, запустить подобную программу из под пользователя так чтобы при изменении, настройки записывались в конфиг.
А не в хитрых махинациях с перемещением конфига.

audiofeel
29-09-2013, 02:25
Ребята всем привет . Что делаю не так - http://sendfile.su/873653. »
держи = http://rghost.ru/49036643

Dinvin4ester
29-09-2013, 11:37
audiofeel,
Огромное спасибо .

XXXler
29-09-2013, 11:47
Суть одна, запустить подобную программу из под пользователя так чтобы при изменении, настройки записывались в конфиг.
А не в хитрых махинациях с перемещением конфига. »
Суть тут в том, что на NTFS-томе в системные папки у обычного пользователя нет доступа на запись еще со времен появления NT4.0. В NT6.x при включенном UAC для "старых приложений" используется виртуализация файловой системы, которая при недостатке прав записи в системную папку перенаправляет файл в папку %LOCALAPPDATA%\VirtualStore, обеспечивая при этом нужные права и многопользовательское хранение настроек. На 2000/XP ничего, кроме ругани на невозможность записи конфига, пользователь с пониженными правами не увидит.

Можешь любую portable программу (которая запускается из под обычного пользователя не запрашивая адм.прав и имеет рядом конфигурационный файл (в пример AIMP, Opera и обе portable)) засунуть в папку PF на системном диске и увидеть как она себя там будет вести. »
А вы Inno Setup используете как SFX? Или к чему вся эта портабельность?

Dinvin4ester
29-09-2013, 12:18
audiofeel,
Только теперь прогрес бар не отображается .

audiofeel
29-09-2013, 15:36
Огромное спасибо . »
для этого есть кнопочка "полезное сообщение"

Только теперь прогрес бар не отображается . »
проверил, все норм
архиватор 'FreeArc", сжато без инсайдов, прекомп и среп и тд, если у вас с ними то необходимо раскоментировать в начале скрипта
;#define PrecompInside
;#define SrepInside
;#define precomp "0.42"
;#define unrar
;#define XDelta
;#define PackZIP

Dinvin4ester
29-09-2013, 15:56
audiofeel,
http://i59.fastpic.ru/big/2013/0929/81/dfa013cb358926afb4dd8d3028b98881.png
Что я делаю не так ? Пользуюсь только средствами инно .

audiofeel
29-09-2013, 16:22
Пользуюсь только средствами инно . »
вы сжимаете фаилы инно сетап
то есть без внешних архиваторов. я думаю что скрипт писался именно под исдон, открутить от исдон "полностью" с рабочим прогресс баром я не в силах. а что мешает сжать необходимые файлы сторонним архиватором , фри арк, 7 зип или вин рар. если это прога то архив фри арк можно и запоролить
а хотя попробовать можно, но тогда прогресс бар будет стандартный, ну там зеленный и тп

Dinvin4ester
29-09-2013, 16:30
audiofeel,
Тогда может стандартный сделать ? Просто нравится их инсталл , хотел использовать его .

audiofeel
29-09-2013, 17:13
Тогда может стандартный сделать ? »без исдон, с "родным" прогресс баром
http://rghost.ru/49046726

Dinvin4ester
29-09-2013, 18:30
audiofeel,
Уважаю знающих людей в этом деле (ремесле) . И еще раз спасибо .

Nightwishh
29-09-2013, 18:41
Всем привет. У меня вопрос по поводу объекта TPanel. В инсталеке есть слайд шоу на WizardForm-е и панель находиться на WizardForm-е и при смене картинок панель запоминает предыдущую картинку. Можно что-нибудь с ней сделать? Скрипт, думаю, ненадо выкладывать.




© OSzone.net 2001-2012