PDA

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


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

Shift85
26-07-2014, 14:13
Подскажите пожалуйста как в скрипте прописать 2 шт Splash'a чтобы показывались по очереди? »
Как то так.

Добавь свои файлы. (isgsg.dll,Splash1.png,Splash2.png)

Антон_Мураткин@vk
26-07-2014, 14:42
Shift85, Не показывает Splash. Есть ещё какие нибудь способы?

Nordek
26-07-2014, 15:09
Не показывает Splash. »Всё дело в том, что кто-то использует Unicode версию.

Gnom_aka_Lexander
26-07-2014, 15:14
Не показывает Splash »
в строке
procedure ShowSplashScreen(p1:HWND;p2:string;p3,p4,p5,p6,p7:integer;p8:boolean;p9:Cardinal;p10:integer);
external 'ShowSplashScreen@files:isgsg.dll stdcall delayload';
string заменить на AnsiString и все будет показывать.
Вот так:
procedure ShowSplashScreen(p1:HWND;p2:AnsiString;p3,p4,p5,p6,p7:integer;p8:boolean;p9:Cardinal;p10:integer);
external 'ShowSplashScreen@files:isgsg.dll stdcall delayload';

Dinvin4ester
26-07-2014, 21:11
Dinvin4ester, 90 строка. »
на 90 строке у меня прекомп.Можно поточнее ? Спасибо.

sergey3695
26-07-2014, 22:50
Dinvin4ester,
function SevenZipCommand(const hWnd: HWND; szParams: AnsiString; const lpArchiverCallback: Longint): Longint;
begin
Result := SZ_ERROR;
case szParams[1] of
'a': ProgressPage.Description := 'Создание архива';
'b': ProgressPage.Description := 'Тестирование производительности';
'd': ProgressPage.Description := 'Удаление файлов из архива';
'e': ProgressPage.Description := 'Извлечение файлов из архива';
'l': ProgressPage.Description := 'Список файлов архива';
't': ProgressPage.Description := 'Тестирование файлов архива';
'u': ProgressPage.Description := 'Обновление файлов в архиве';
'x': ProgressPage.Description := 'Извлечение файлов из архива с полными путями';
end;
if lpArchiverCallback <> 0 then szParams := Format('%s -hide', [szParams]);
CharToOemBuff(szParams);
try
if lpArchiverCallback <> 0 then
begin
hMsg1Label := ProgressPage.Msg1Label.Handle;
hMsg2Label := ProgressPage.Msg2Label.Handle;
//show progress page
ProgressPage.Show;
ProgressPage.ProgressBar.Show;
//set callback
SevenZipSetOwnerWindowEx(hWnd, lpArchiverCallback);
end;
Result := SevenZip(hWnd, szParams, '', 0);
finally
if lpArchiverCallback <> 0 then
begin
ProgressPage.Hide;
SevenZipKillOwnerWindowEx(hWnd);
end;
except
Result := SZ_DLLERROR;
end;
end;

куда уж точнее? в том что мне кидал, там 90 строка.

Dinvin4ester
27-07-2014, 11:02
sergey3695,
Хоть убейте,но не найду этого.

Антон_Мураткин@vk
27-07-2014, 17:28
Gnom_aka_Lexander, Благодарю, это слово всё исправило.

Dinvin4ester
27-07-2014, 17:44
sergey3695,
Или я что-то не то смотрю или вы скачали другой скрипт. Я не использую внешние упаковщики,а скрипт расчитан на них и из-за этого не видно прогресс бара,пользуюсь только средствами инно.
Поэтому и прошу помощи и подсказки.

El Sanchez
28-07-2014, 12:06
Я не использую внешние упаковщики,а скрипт расчитан на них и из-за этого не видно прогресс бара »
Dinvin4ester, с чего вдруг такое утверждение? Внешние упаковщики вообще никак не влияют на отображение элементов управления.
пользуюсь только средствами инно »
Dinvin4ester, а ботва уже стандартное средство? Используя ботву, все скрывают OuterNotebook с почти всеми элементами управления, используемых в установщике, потом имеют геморрой в виде имитации перехода между страницами инсталлятора и поиска пропавших элементов. Если хотите видеть ProgressGauge, то меняйте ему родителя на WizardForm, в нужный момент показывайте/скрывайте. Это подсказка.

Nordek
28-07-2014, 14:42
это слово всё исправило. »Упоминалось (http://forum.oszone.net/post-2335469-359.html) ранее - это говорит о том, что люди не читают тему.

Антон_Мураткин@vk
28-07-2014, 15:29
Доброе время суток! Подскажите пожалуйста установил в скрипт музыку, всё играет нормально кнопка вкл выкл есть работает. Но при отмене или завершение установки, музыка ещё играет секунд 3-4. Как с этим бороться? Может кто знает! Заранее благодарю!!!

Dinvin4ester
28-07-2014, 15:52
El Sanchez,
убрал и поменял , но все-равно не видно прогрессбара,помогите!

Dodakaedr
28-07-2014, 17:24
при отмене или завершение установки, музыка ещё играет секунд 3-4. »
Знаю, что такое бывает если не указывать BASS_DeInit в процедуре DeinitializeSetup.
procedure DeinitializeSetup;
begin
BASS_DeInit;
end;

sergey3695
28-07-2014, 18:15
Dinvin4ester, вот что вы кидали http://www.oszone.net/go.php?url=http://forum.oszone.net/attachment.php?attachmentid=115462&stc=1&d=1406151895
там 90 строка. кусок скрипта отсюда. да и в шапке тот же скрипт для работы с zip архивами. прям незнаю. потерялся что-ли.

El Sanchez
28-07-2014, 18:22
убрал и поменял , но все-равно не видно прогрессбара,помогите! »
Dinvin4ester, нечего там убирать, там добавлять надо. Алгоритм решения задачи примерно такой: 1) ProgressGauge не виден, т.к. его прародитель OuterNotebook скрыт, делаем родителем ProgressGauge форму WizardForm - после OuterNotebook.Hide пишем ProgressGauge.Parent := WizardForm; 2) Запускаем инсталлятор, видим его сразу на стартовой странице. Если размер формы нестандартный, то видим его еще и не там, где хотелось бы. Задаем новые координаты там же, где и задавали ему родителя, пишем ProgressGauge.Left := 100500; ProgressGauge.Top := 100500;
3) На стартовой странице ему делать нечего, поэтому там, где задавали координаты, скрываем его, пишем ProgressGauge.Hide. Где он должен быть показан в первый раз? Правильно, на странице InstallingPage. В какой стандартной процедуре можно что-либо делать в зависимости от того, какая в данный момент текущая страница? Правильно, в CurPageChanged. Пишем условие любыми способами, при котором на странице InstallingPage ProgressGauge будет показан, а на FinishedPage (либо InfoAfterPage, если используется) будет скрыт, например, if CurPage = wpInstalling then WizardForm.ProgressGauge.Show; if CurPage = wpFinished then WizardForm.ProgressGauge.Hide;

alenov
28-07-2014, 21:07
Добрый день!

Для меня программа Inno Setup еще незнакомая. Пытаюсь использовать ее для создания дистрибутива своей программы. Возникла проблема, что при записи в дистрибутив файлов в папку, они не инсталируются, если использовать следующий тэг:

Source: "C:\Science\Equilibrium\Code\Crono_sources\Modeling scenarios\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

а если такой:

Source: "C:\Science\Equilibrium\Code\Crono_sources\Modeling scenarios\Test.ini"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

то файл ini инсталируется в корень. Как правильно записывать файлы во вложенную папку?

Антон_Мураткин@vk
28-07-2014, 21:20
Dodakaedr, Такие строчки были только чуть-чуть в другом месте. Благодарю за подсказку!

alenov
28-07-2014, 22:06
С задачей описанной выше я справился (прописал загрузку каждого файла в специальную папку), но столкнулся с другой проблемой. В системной папке с программами, куда я предполагаю по умалчанию устанавливать свою программу, у нее ограниченная функциональность. Если то же самое просто перекопировать в любую другую папку, то все работает, а в этой системной происходят разные ошибки. Как это исправить?

Если права не администратора, то в Program Files разрешено только чтение, а мне нужно делать создание и удаление файлов. Это вообще можно релизовать?

R.i.m.s.k.y.
29-07-2014, 07:32
Если права не администратора, то в Program Files разрешено только чтение, а мне нужно делать создание и удаление файлов. Это вообще можно релизовать? »
для этого в системе есть папки {appdata} и {commonappdata}
ставь туда




© OSzone.net 2001-2012