|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 5] |
|
Скрипты Inno Setup. Помощь и советы [часть 5]
|
Ветеран Сообщения: 1264 |
Профиль | Отправить PM | Цитировать
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Inno Setup [все вопросы] часть 1 Inno Setup [все вопросы] часть 2 Скрипты Inno Setup. Помощь и советы [часть 3] Скрипты Inno Setup. Помощь и советы [часть 4] |
|
Отправлено: 03:49, 21-05-2012 |
Ветеран Сообщения: 649
|
Профиль | Отправить PM | Цитировать El Sanchez,
помню спрашивал как быстро определить размер папки (те для меня пример ...\Inno Setup 5\Scripts\Dobrov\DirSizeCal.iss работает слишком медленно) нашёл пример использующий объект FileSystemObject http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx на форуме http://forum.vingrad.ru/forum/topic-84976/unread-1.html результат - функция (здесь вывод в мегабайтах под мои нужды) : [Setup] AppName=My Application AppVersion=1.5 DefaultDirName={pf}\My Application [ code] function GetFolserSize(path:string):Integer; var oFS: Variant; begin oFS := CreateOleObject('Scripting.FileSystemObject'); Result := oFS.GetFolder(path).Size div (1024*1024); end; procedure InitializeWizard(); begin MsgBox(IntToStr(GetFolserSize('C:\Program Files (x86)')), mbInformation, MB_OK); end; более наглядный пример: но вот при попытке посчитать C:\Windows вылетает с ошибкой на Result := oFS.GetFolder(path).Size div (1024*1024); может папка слишком большого размера и он не может посчитать или я функцию криво записал с другой стороны папку с видео размером больше 250 гигов посчитала корректно и тоже быстро в общем хотелось бы узнать в чём причина ошибки ну и как следствие - улучшение/исправление в качестве производных: размер файла: версия файла: получение буквы жёсткого диска на которм лежит файл: генерирование уникального имени папки для использования её в %Temp% альтернатива функции DirExists: проверка наличия жёсткого диска по букве: |
Последний раз редактировалось Johny777, 02-10-2012 в 04:09. Отправлено: 01:11, 02-10-2012 | #1061 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 98
|
Профиль | Отправить PM | Цитировать привет. при установке извлекаются некоторые файлы. из них exe bmp итд. скажите. можно сделать чтоб они работали внутри инсталятора. или хотяб брались из файла x.tmp который извлекается в %temp% а не в чистом виде?
|
Отправлено: 10:28, 02-10-2012 | #1062 |
Ветеран Сообщения: 1264
|
Профиль | Отправить PM | Цитировать Цитата Johny777:
1. Проверяй в функции наличие папки. Исключение как раз из-за этого. 2. Размер Integer мал для "толстых" папок, нужно, например, Extended. function GetFolserSize(path: String): Extended; var oFS: Variant; begin try if not DirExists(path) then Exit; oFS := CreateOleObject('Scripting.FileSystemObject'); Result := oFS.GetFolder(path).Size/1024/1024; except Result := 0; end; end; //два знака после запятой MsgBox(FormatFloat('#0.00', GetFolserSize('C:\Windows')), mbInformation, MB_OK); |
|
Отправлено: 10:33, 02-10-2012 | #1063 |
Пользователь Сообщения: 78
|
Профиль | Отправить PM | Цитировать SatHan,
|
Последний раз редактировалось Mailchik, 02-10-2012 в 15:45. Причина: ! Отправлено: 15:44, 02-10-2012 | #1064 |
Ветеран Сообщения: 1264
|
Профиль | Отправить PM | Цитировать Цитата Johny777:
procedure MoveFiles(SourceFolder, Mask, DestFolder: String); var oFS: Variant; begin try if not DirExists(SourceFolder) or not DirExists(DestFolder) then Exit; oFS := CreateOleObject('Scripting.FileSystemObject'); oFS.MoveFile(AddBackslash(RemoveBackslash(SourceFolder)) + Mask, DestFolder); except //ShowExceptionMessage; end; end; |
|
Отправлено: 16:34, 02-10-2012 | #1065 |
Старожил Сообщения: 398
|
Профиль | Отправить PM | Цитировать Ктонить может показать пример кода, который бы делал так чтобы при наведении курсора на определённый компонент, возникал Hint (при том для каждого компонента свой)?
|
Последний раз редактировалось Raf-9600, 04-10-2012 в 15:20. Отправлено: 14:54, 04-10-2012 | #1066 |
Ветеран Сообщения: 978
|
Профиль | Сайт | Отправить PM | Цитировать Raf-9600, как-то так, только мне не очень нравится, как это работает, может старшие товарище подскажут, как сделать лучше.
Скорей всего на стандартной версии не будет работать. |
------- Отправлено: 20:05, 04-10-2012 | #1067 |
Старожил Сообщения: 398
|
Профиль | Отправить PM | Цитировать Цитата Gnom_aka_Lexander:
|
|
Отправлено: 13:53, 05-10-2012 | #1068 |
Новый участник Сообщения: 15
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Raf-9600:
|
|
------- Отправлено: 14:33, 05-10-2012 | #1069 |
Старожил Сообщения: 398
|
Профиль | Отправить PM | Цитировать Цитата Shegorat:
Я бы ещё хотел узнать, можно ли сделать так, чтобы текст определённого Hint'а менялся в зависимости от выбранных компонентов? Т.е. чтобы допустим если выбран компонент "ext\u" то у "ext\a" подсказка менялась на другую? |
|
Отправлено: 16:10, 05-10-2012 | #1070 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Скрипты Inno Setup. Помощь и советы [часть 4] | El Sanchez | Автоматическая установка приложений | 2099 | 22-05-2012 23:16 | |
Скрипты Inno Setup. Помощь и советы [часть 3] | Serega | Автоматическая установка приложений | 3755 | 26-10-2011 17:58 | |
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] | Serega | Автоматическая установка приложений | 2651 | 08-11-2010 18:34 | |
Скрипты Inno Setup Compiler | QAZAK | Автоматическая установка приложений | 7 | 15-01-2007 17:59 | |
Inno Setup | tradeukraine | Вебмастеру | 3 | 13-06-2006 20:39 |
|