|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 4] |
|
Скрипты Inno Setup. Помощь и советы [часть 4]
|
Ветеран Сообщения: 1273 |
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Inno Setup [все вопросы] часть 1 Inno Setup [все вопросы] часть 2 Скрипты Inno Setup. Помощь и советы [часть 3] Продолжение обсуждения Скрипты Inno Setup. Помощь и советы [часть 5] |
|
Отправлено: 18:01, 29-08-2011 |
Ветеран Сообщения: 1640
|
Профиль | Отправить PM | Цитировать Johny777, ты вообще неправильно делаешь
1. Зачем ты переменные взял в кавыки? архиватору ты вместо путей передаешь переменные 2. пробелы procedure CurStepChanged(CurStep: TSetupStep); var Res: Integer; s1, s2, s3, s4, s5: string; begin if CurStep = ssPostInstall then begin s1 := 'a -sfx7z.sfx -mx9'; s2 := Addquotes(ExpandConstant('{userdesktop}\saved.exe')); s3 := Addquotes(ExpandConstant('{app}')); ExtractTemporaryFile('7za.exe'); ExtractTemporaryFile('7z.sfx'); Exec(ExpandConstant('{tmp}\7za.exe'), s1 + ' ' + s2 + ' ' + s3, ExpandConstant('{tmp}'), SW_SHOW, ewWaitUntilTerminated, Res); end; end; |
------- Отправлено: 12:43, 04-05-2012 | #1821 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 649
|
Профиль | Отправить PM | Цитировать R.i.m.s.k.y.,
извиняюсь не подумал за основу взял "создание ярлыка" Теперь всё супер! Буду знать Касательно сжатия Стоит ли предоставлять пользовател возможность выбирать уровень сжатия на данный момент стоит -m9, при котором 60мб ужались до 600кб у меня 4 гига оперативы. У кого-то может быть меньше и этот параметр не будет работать. Как лучше? Может сделать среднее сжатие и не мучиться? |
Последний раз редактировалось Johny777, 04-05-2012 в 12:53. Отправлено: 12:47, 04-05-2012 | #1822 |
Ветеран Сообщения: 1640
|
Профиль | Отправить PM | Цитировать Johny777, мне тут подсказали недавно хороший принцип KISS
![]() делай простейшее сжатие, это быстро, рамы мало занимает, инсталлер не примерзает |
------- Отправлено: 13:15, 04-05-2012 | #1823 |
Ветеран Сообщения: 649
|
Профиль | Отправить PM | Цитировать R.i.m.s.k.y.,
а как прицепить название архива "saved.exe"? (что то у меня с грамматикой совсем не лады) так не получается (закомментировано) без s4 сохраняет куда надо, но без названия. Например в диск C - .exe, а на рабочий стол - Desktop.exe ![]() вот полный код (пришлось создать 2 эдита, тк 7Zip не умеет удалять после архивации сжимаемые файлы) последняя версия http://sendfile.su/586087 |
Последний раз редактировалось Johny777, 04-05-2012 в 16:51. Отправлено: 16:42, 04-05-2012 | #1824 |
Ветеран Сообщения: 1640
|
Профиль | Отправить PM | Цитировать Johny777, вот ты чудак-человек, тёдиты умеешь страяпать а грамматику не знаешь
![]() я строго наоборот 1. у меня тут инно не стоит я не знаю как работает AddBackslash, в начало она добавлет \ или в конец 1.1 есть обратная функция, по памяти RemoveBackSlashUntilRoot, в справке глянь точно 2. предположу простое Exec(ExpandConstant('{tmp}\7za.exe'), s1 + ' ' + s2 ' ' + s3 + +' saved.exe', ExpandConstant('{tmp}'), SW_SHOW, ewWaitUntilTerminated, Res); 3. Не знаю что у тебя там в переменных но учти что кавычки AddQuotes нужны на полный путь вместе с именем файла, в середине строки их быть не должно 7z.exe "это запаковать" "вот сюда" параметры 4. мх9 это макс сжатие, долго, рамы жрет 1700метров (если склероз не изменяет), ставь mx1 procedure CurStepChanged(CurStep: TSetupStep); var Res: Integer; s1, s2, s3, s4, s5: string; begin if CurStep = ssPostInstall then begin if Zip_CheckBox.Checked = true then begin s1 := 'a -sfx7z.sfx -mx9'; s2 := Addquotes(RemoveBackSlashUntilRoot(Zip_Path_Edit.Text)+'\saved.exe'); s3 := Addquotes(ExpandConstant('{tmp}\{#Save_Folder}')); //s4 := 'saved'; //s4 := AddBackslash('saved'); //s4 := AddBackslash('saved.exe'); ExtractTemporaryFile('7za.exe'); ExtractTemporaryFile('7z.sfx'); Exec(ExpandConstant('{tmp}\7za.exe'), s1 + ' ' + s2 + ' ' + s3, ExpandConstant('{tmp}'), SW_SHOW, ewWaitUntilTerminated, Res); end; end; end; |
------- Последний раз редактировалось R.i.m.s.k.y., 04-05-2012 в 17:00. Отправлено: 16:53, 04-05-2012 | #1825 |
Ветеран Сообщения: 649
|
Профиль | Отправить PM | Цитировать Цитата R.i.m.s.k.y.:
7za a -sfx7z.sfx C:\saved.exe -mx9 C:\saved расширю строку: 7za a -sfx7z.sfx -mx9.......C:\saved.exe.............C:\saved ........параметры...............куда\во что...............откуда (файлы,папки) в инно Exec(ExpandConstant('{tmp}\7za.exe'), s1 + ' ' + s2 + ' ' + s3, ExpandConstant('{tmp}'), SW_SHOW, ewWaitUntilTerminated, Res); расширю для чтения: Exec(ExpandConstant('{tmp}\7za.exe'),......s1.............................................s2........ .......................................................s3.................................ExpandCons tant('{tmp}'), SW_SHOW, ewWaitUntilTerminated, Res); .......................................запустить.......параметры...........текст другого эдита(куда архив).................{tmp}\saved (отсюда файлы)...... те логика такая если отмечен чекбоск "создать архив", то родной Dir.Edit блокируется и всё папки/фалы бэкапа из секции [Files] копируются в папку {tmp}\saved получаем s3 := Addquotes(ExpandConstant('{tmp}\saved')) ......... (откуда) s2 := Addquotes(Zip_Path_Edit.Text); ......(куда). Например на рабочий стол (уже архив.exe) s1 := 'a -sfx7z.sfx -mx9';.............(параметры) Не меняется Трогать s3 нельзя. Файлам прямая дорога только в папку темпа, которая после успешной установки удалится. s1 - параметры Т.е. всё крутится вокруг s2, который может быть любым путём + название архива на данный момент только это получается (пример из строки в начале) вместо C:\saved.exe --получаем-- C:\.exe те вместо saved.exe --получаем-- .exe так тоже не получается s2 := Addquotes(RemoveBackslashUnlessRoot(Zip_Path_Edit.Text)+'saved.exe'; и так s2 := Addquotes(RemoveBackslashUnlessRoot(Zip_Path_Edit.Text)+'\saved.exe'; проблема с \во что Цитата R.i.m.s.k.y.:
![]() вот RemoveBackslashUnlessRoot Цитата R.i.m.s.k.y.:
( в планах есть комбобокс с выботом "среднее(), лёгкое(mx1), сильное (много меньше mx9)" ) |
|||
Последний раз редактировалось Johny777, 04-05-2012 в 17:57. Отправлено: 17:23, 04-05-2012 | #1826 |
Ветеран Сообщения: 1640
|
Профиль | Отправить PM | Цитировать Johny777, не получается? добавь в конец MSGBOX (твоя проблемная строка)
вслепую сложно догадываться, надо хрустальный шар полировать |
------- Отправлено: 18:16, 04-05-2012 | #1827 |
Ветеран Сообщения: 649
|
Профиль | Отправить PM | Цитировать R.i.m.s.k.y.,
истина где-то рядом вот почти заработало при s2 := Addquotes(RemoveBackslashUnlessRoot(Zip_Path_Edit.Text)+'\saved.exe'); в пути где в конце нет обратного слэша \ всё в порядке C:\test в пути, где в конце он есть C:\ архив не создаётся Насчёт месседжбокса даже не знаю куда его прикрутить ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, очень интересные результаты сжатия ![]() думаю оставлю выбор на mx3 и mx5, ведь лишних 200 метров оперативки найдёт каждый! |
Последний раз редактировалось Johny777, 04-05-2012 в 18:53. Отправлено: 18:32, 04-05-2012 | #1828 |
Ветеран Сообщения: 1640
|
Профиль | Отправить PM | Цитировать Johny777, MsgBox('тут кроется лажа' + #13#10 + ExpandConstant('{tmp}\7za.exe'), s1 + ' ' + s2 + ' ' + s3, mbInformation, MB_OK);
procedure CurStepChanged(CurStep: TSetupStep); var Res: Integer; s1, s2, s3, s4, s5: string; begin if CurStep = ssPostInstall then begin if Zip_CheckBox.Checked = true then begin s1 := 'a -sfx7z.sfx -mx9'; s2 := Addquotes(RemoveBackSlashUntilRoot(Zip_Path_Edit.Text)+'\saved.exe'); s3 := Addquotes(ExpandConstant('{tmp}\{#Save_Folder}')); MsgBox('тут кроется лажа' + #13#10 + ExpandConstant('{tmp}\7za.exe'), s1 + ' ' + s2 + ' ' + s3, mbInformation, MB_OK); //s4 := 'saved'; //s4 := AddBackslash('saved'); //s4 := AddBackslash('saved.exe'); ExtractTemporaryFile('7za.exe'); ExtractTemporaryFile('7z.sfx'); Exec(ExpandConstant('{tmp}\7za.exe'), s1 + ' ' + s2 + ' ' + s3, ExpandConstant('{tmp}'), SW_SHOW, ewWaitUntilTerminated, Res); end; end; end; |
------- Отправлено: 19:05, 04-05-2012 | #1829 |
Ветеран Сообщения: 649
|
Профиль | Отправить PM | Цитировать R.i.m.s.k.y.,
сделал (месседж бокс, упростил и изменил немного логику) и без меммедж бокса понятно в чём проблема Вот две строки. При той что не закоментирована всё отлично if not (FileCopy(ExpandConstant('{tmp}\saved.exe'), ExpandConstant('{userdesktop}\saved.exe'), True)) then //if not (FileCopy(ExpandConstant('{tmp}\saved.exe'), 'C:\saved.exe', True)) then MsgBox('Обломись!', mbInformation, MB_OK); целиком при той что закоментирована появляется сообщение бред какой-то http://sendfile.su/586233 |
Последний раз редактировалось Johny777, 04-05-2012 в 20:08. Отправлено: 20:01, 04-05-2012 | #1830 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Test | ferget | Тест-форум | 0 | 24-08-2011 01:25 | |
test | ! ! Aaa ! ! | Тест-форум | 0 | 23-04-2011 11:29 | |
test | Santa aka Snt | Тест-форум | 0 | 16-04-2011 22:35 | |
test | xolod. | Программное обеспечение Linux и FreeBSD | 0 | 19-04-2009 21:03 | |
Test memory | KEugeNik | Хочу все знать | 11 | 23-11-2003 23:11 |
|