PDA

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


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

usermode
10-03-2019, 19:46
El Sanchez, да, я это уловил и отредактировал предыдущее сообщение, вопрос полностью решен, спасибо еще раз!

там кстати на количество проходов влияют параметры:

LOptions.bEnableMultiPass := true;
LOptions.nMultiPassThreshold := 0;
LOptions.nMultiPassMaxAdditionalPasses := 3;

если мультипроходы отключены или выставлены в 1, то только один раз до 100 процентов выполняется. а на образце по дефолту 3 прохода выставляется, поэтому чуть не запутался с этим, думал глюки снова :)

mdli
28-03-2019, 19:51
Подскажите каким способом можно скрыть кнопку Inno Setup из панели задач ? Окно я скрываю, а кнопка остается и показывает прогресс распаковки, мне это не нужно.
SetWindowLong пробовал, не помогает.

Iska
29-03-2019, 04:05
каким способом можно скрыть кнопку Inno Setup из панели задач ? »
Зачем?

El Sanchez
31-03-2019, 10:24
Подскажите каким способом можно скрыть кнопку Inno Setup из панели задач ? »
mdli,
#ifndef IS_ENHANCED
const
GW_OWNER = 4;

function GetWindow(hWnd: HWND; uCmd: UINT): HWND; external 'GetWindow@user32.dll stdcall';
#endif
function ShowWindow(hWnd: Integer; uType: Integer): Integer; external 'ShowWindow@user32.dll stdcall';

procedure FormActivate(Sender: TObject);
begin
ShowWindow({#ifdef IS_ENHANCED}Application.Handle{#else}GetWindow(MainForm.Handle, GW_OWNER){#endif}, SW_HIDE);
end;

procedure InitializeWizard;
begin
WizardForm.OnActivate := @FormActivate;
end;

SBalykov
01-04-2019, 15:05
Добрый день!
Помогите решить проблему сохранения файлов SlideShow в память и последующей их воспроизведения из памяти:
#ifndef IS_ENHANCED
#error Для компиляции данного скрипта необходимо расширенное издание Inno Setup (restools)!
#endif

#define SLIDE "4"

[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={sd}\My Application

[Files]
Source: Sourse\*; Flags: dontcopy

[_Code]
type
#ifdef UNICODE
PChar = PAnsiChar;
#else
AnsiChar = Char;
#endif

var
i: Integer;

function ssInitialize(hParent: HWND; ssTimeShow: Integer; FadeOut: Boolean; StretchMode: Integer; BkgColor: DWORD): Boolean; external 'ssInitialize@{tmp}\isgsg.dll stdcall delayload';
procedure ssAddImage(FileName: PChar); external 'ssAddImage@files:isgsg.dll stdcall delayload';
procedure ssDeInitialize; external 'ssDeInitialize@files:isgsg.dll stdcall delayload';
procedure ssStartShow; external 'ssStartShow@files:isgsg.dll stdcall delayload';
procedure ssStopShow; external 'ssStopShow@files:isgsg.dll stdcall delayload';

{* Запуск отображения слайдшоу *}
function InitializeSlideShow: Boolean;
begin
ExtractTemporaryFile('isgsg.dll');
Result := ssInitialize(WizardForm.Handle, 2, True, 0, 0);
for i := 1 to {#SLIDE} do begin
ExtractTemporaryFile(IntToStr(i)+'.jpg');
ssAddImage(ExpandConstant('{tmp}\'+IntToStr(i)+'.jpg'));
end;
Sleep(5);
ssStartShow;
end;

procedure InitializeWizard();
begin
InitializeSlideShow;
end;

procedure DeinitializeSetup();
begin
ssStopShow;
ssDeInitialize;
end;

El Sanchez
01-04-2019, 21:05
Помогите решить проблему сохранения файлов SlideShow в память и последующей их воспроизведения из памяти »
SBalykov, а пущай для начала автор библиотеки реализует ssAddImage с загрузкой из TStream.

SBalykov
02-04-2019, 02:40
El Sanchez
Понял.
Спасибо за ответ...

ErikPshat
10-04-2019, 08:34
Здравствуйте! Есть ли способ извлечения файлов из инсталлятора во время запуска не в папку {tmp)?
Предположим в секции [Files] помещаю файл:
[Files]
Source: "Include\utility.exe"; DestDir: "{tmp}"; Flags: dontcopy
Затем, при запуске инсталлятора я извлекаю этот файл во временную директорию как обычно такой командой:
ExtractTemporaryFile('utility.exe');
Но, если мне нужно извлекать не в {tmp}, а допустим, в папку "С:\Tools\utility.exe", тогда это просто так не получится? Что-то пробовал менять путь, выдаёт ошибку.

Пока ничего не приходит в голову, как копировать файл из временной папки, типа так:
ExtractTemporaryFile('utility.exe');
FileCopy(ExpandConstant('{tmp}\utility.exe'), ExpandConstant('С:\Tools\utility.exe'), True);

Irenis
10-04-2019, 17:40
Добрый день. Подскажите пожалуйста, как сделать так, чтоб при установке приложения, на рабочем столе создавался ярлык со ссылкой, которую можно открыть через указанный браузер?
Например, чтоб сайт yandex.ru открывался через Explorer, нужно создать на рабочем столе такой ярлык
«C:\Program Files\Internet Explorer\iexplore.exe» //yandex.ru

Можно ли в inno setyp сделать подобное, чтоб создавался ярлык со ссылкой, которая открывалась бы через указанный браузер?

usermode
10-04-2019, 17:58
ErikPshat, а с помощью ExtractTemporaryFiles(s) никак это не сделаешь. Если посмотреть исходники, то там код для этих функций работает только в пределах временной папки.
Так что способ копирования вполне себе, только не забудь перед копированием файла создать нужные папки, если они не существуют, например: ForceDirectories(ExpandConstant('{sd}\Tools'))

Iska
10-04-2019, 18:23
там код для этих функций работает только в пределах временной папки. »
И это правильно.

Irenis
10-04-2019, 20:12
Например, чтоб сайт yandex.ru открывался через Explorer, нужно создать на рабочем столе такой ярлык
«C:\Program Files\Internet Explorer\iexplore.exe» //yandex.ru

Можно ли в inno setyp сделать подобное, чтоб создавался ярлык со ссылкой, которая открывалась бы через указанный браузер? »

Ну или как то по другому. Например, запакую я браузер хромиум (или любой другой браузер) через inno setyp, затем нужно, чтоб после установки этого браузера на другом компьютере и последующего запуска, открывалась не домашняя страница браузера, а та сслыка, которую я указала. Возможно ли так сделать? Подскажите, плиз.

ErikPshat
10-04-2019, 21:25
только не забудь перед копированием файла создать нужные папки, если они не существуют, например: ForceDirectories(ExpandConstant('{sd}\Tools')) »
Ага, это я понял, т.к., если папки не существует, тогда копирование файлов само не создаёт папки.
Правда я создаю папку такой командой: CreateDir(ExpandConstant('{src}\Tools'));

И это правильно. »
Странно, почему-бы не сделать извлечение из экзешника по указанному пути. Тут такое дело и просто уже надоело бороться со школьниками, которые создают на компе профиль на кириллице. Получается путь к папке %TEMP% по умолчанию в таком виде: C:\Users\Вася Пупкин\AppData\Local\Temp
А используемая конфиденциальная утилита, от именитого производителя Sony, не понимает кириллицу и аналогов не имеет.
Так вот такие юзеры постоянно жалуются, типа нифига не работает ваша прога. И это довольно частая проблема. Надоело каждый день по 10 раз объяснять, что не надо называть комп и имя профиля, создавать почтовые ящики, исполььзовать пароли - на кириллице.

ErikPshat
10-04-2019, 22:41
Ну или как то по другому. Например, запакую я браузер хромиум (или любой другой браузер) через inno setyp, затем нужно, чтоб после установки этого браузера на другом компьютере и последующего запуска, открывалась не домашняя страница браузера, а та сслыка, которую я указала. Возможно ли так сделать? Подскажите, плиз. »
А с каким умыслом устанавливать на комп юзера свой браузер? Дкмаю никому не понравится, если у него на компе вдруг появится Internet Explorer или Opera, либо мазила, и зачем-то именно в этом стороннем браузере будет открываться ссылка.

Выводите просто ярлык интернета на рабрчий стол. А при его запуске, будет у юзера открываться его браузер, выставленный у него по умолчанию. Воспользуйтесь официальной функцией Inno Setup по созданию ярлыков. Укажите секцию [Icons] и выводите URL-ярлык, например так:
[Icons]
Name: "{commondesktop}\Открыть в Яндекс"; Filename: "https://yandex.ru"

Dodakaedr
10-04-2019, 22:42
Например, чтоб сайт yandex.ru открывался через Explorer, нужно создать на рабочем столе такой ярлык »
Ну или как то по другому. »

[Setup]
AppName=App
AppverName=App v1.0
DefaultDirName={pf}\App
OutputDir=.

// 1 вариант
[ini]
Filename: "{userdesktop}\HomePageWeb.url"; Section: "InternetShortcut"; Key: "URL"; String: "https://yandex.ru";

// 2 вариант
[icons]
Name: "{userdesktop}\HomePageWeb2"; Filename: """C:\Program Files\Internet Explorer\iexplore.exe"""; Parameters: "//yandex.ru";


Есть ли способ извлечения файлов из инсталлятора во время запуска не в папку {tmp)? »
Есть такой (расширенная версия inno setup):
[Setup]
AppName=App
AppverName=App v1.0
DefaultDirName={pf}\App
OutputDir=.

[Files]
Source: "Include\utility.exe"; DestDir: "{tmp}"; Flags: dontcopy

[Code]
function InitializeSetup(): Boolean;
begin
Result := True;
CreateDir(ExpandConstant('{src}\Tools'));
ExtractTemporaryFileEx('utility.exe', ExpandConstant('{src}\Tools'));
end;

Iska
11-04-2019, 03:36
Тут такое дело и просто уже надоело бороться со школьниками, которые создают на компе профиль на кириллице. Получается путь к папке %TEMP% по умолчанию в таком виде: C:\Users\Вася Пупкин\AppData\Local\Temp
А используемая конфиденциальная утилита, от именитого производителя Sony, не понимает кириллицу и аналогов не имеет. »
Так здесь проблема с программистами, которые в XXI веке продолжают считать, что в мире не существует никакого иного языка, кроме английского.

Irenis
11-04-2019, 11:31
Как вариант »
Спасибо, вариант 2 очень помог. А нельзя немного сложнее сделать, чтоб при первом запуске ярлыка открывалась одна ссылка, а при всех последующих запусках другая? Например, создался ярлык на рабочем столе, при первом запуске он самоудалился и вместо него появился другой ярлык, с таким же названием, но уже с другой ссылкой. И при этом сохранялось бы условие запуска этих ярлыков через тот браузер, который я указала.

Dodakaedr
11-04-2019, 15:47
Irenis, Только если через планировщик. Но вообще такое не рекомендуется.

alexander-mex
18-04-2019, 08:32
Всем привет! На работе дали задание сделать сборник инсталляторов. Этим я никогда не занимался. Есть 2 основные программы и 2 файла которые устанавливают службы (ярлыки). Можно ли сделать с помощью этой программы сборник, чтобы открывалось окно и я мог выбрать, что хочу установить?

usermode
18-04-2019, 10:47
Можно ли сделать с помощью этой программы сборник, чтобы открывалось окно и я мог выбрать, что хочу установить? »
Имеется в виду оболочку как в старых добрых авторанах на дисках? В Inno можно, но лучше в "гуевых" программах типа AutoPlay Menu Builder или AutoPlay Media Studio.




© OSzone.net 2001-2012