Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 7]
Только я забыл в конце дописать: »И не только.
audiofeel
04-04-2014, 07:29
привет всем, вот в этом примере реализовано слайд шоу, через ботву, без b2p.dll, то есть файлы для слайд шоу берутся из {src} . как его прикрутить к новой ботве, из буфера не получится наверное файлы брать, но хотя бы из папки темп = http://rghost.ru/53755419
audiofeel, http://forum.oszone.net/post-2328887.html#post2328887
Привет всем, подскажите как менять конфиг json при выборе определённого компонента
R.i.m.s.k.y.
04-04-2014, 09:40
innot20, ты спамер? если в третий раз не ответили - значит никто не знает
Dodakaedr
04-04-2014, 10:22
Подскажите CLSID и TypeLib в реестре для контекстного меню (файл .dll) генерируется установщиком или изначально задается конкретный номер???
[Registry]
Root: HKLM; SubKey: SOFTWARE\Classes\CLSID\{{280CFDE1-1354-4431-92F3-03073BA593FB}; ValueType: string; ValueData: TotalConverter Context Menu Shell Extension; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; SubKey: SOFTWARE\Classes\CLSID\{{280CFDE1-1354-4431-92F3-03073BA593FB}\InprocServer32; ValueType: string; ValueData: {app}\axTotalConverter.dll; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; SubKey: SOFTWARE\Classes\CLSID\{{280CFDE1-1354-4431-92F3-03073BA593FB}\InprocServer32; ValueType: string; ValueName: ThreadingModel; ValueData: Apartment; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; SubKey: SOFTWARE\Classes\CLSID\{{280CFDE1-1354-4431-92F3-03073BA593FB}\ProgID; ValueType: string; ValueData: axTotalConverter.TotalConverter; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; SubKey: SOFTWARE\Classes\CLSID\{{280CFDE1-1354-4431-92F3-03073BA593FB}\TypeLib; ValueType: string; ValueData: {{14DAD0B3-1F8E-411C-997D-51426AC9DCB5}; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; SubKey: SOFTWARE\Classes\CLSID\{{280CFDE1-1354-4431-92F3-03073BA593FB}\Version; ValueType: string; ValueData: 1.0; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; SubKey: SOFTWARE\Classes\TypeLib\{{14DAD0B3-1F8E-411C-997D-51426AC9DCB5}; Flags: uninsdeletekeyifempty
Root: HKLM; SubKey: SOFTWARE\Classes\TypeLib\{{14DAD0B3-1F8E-411C-997D-51426AC9DCB5}\1.0; ValueType: string; ValueData: axImageConverter Library; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; SubKey: SOFTWARE\Classes\TypeLib\{{14DAD0B3-1F8E-411C-997D-51426AC9DCB5}\1.0\0; Flags: uninsdeletekeyifempty
Root: HKLM; SubKey: SOFTWARE\Classes\TypeLib\{{14DAD0B3-1F8E-411C-997D-51426AC9DCB5}\1.0\0\win32; ValueType: string; ValueData: {app}\axTotalConverter.dll; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; SubKey: SOFTWARE\Classes\TypeLib\{{14DAD0B3-1F8E-411C-997D-51426AC9DCB5}\1.0\FLAGS; ValueType: string; ValueData: 0; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; SubKey: SOFTWARE\Classes\TypeLib\{{14DAD0B3-1F8E-411C-997D-51426AC9DCB5}\1.0\HELPDIR; ValueType: string; ValueData: {app}\; Flags: uninsdeletevalue uninsdeletekeyifempty
Всем привет - прошу вас помочь мне. А то что то у меня не выходит.
У меня возникла мысль добавить вперед страницу (скажем с своим лого). Но она добавляется только 2-ой. Когда же я пытаюсь перенести все надписи на вторую (мою) страницу - инсталятор говорит - ТАКОЕ НЕ ВОЗМОЖНО ВСЕ ЗАБЛОКИРОВАНО.
Помогите мне добавить лого в начало установки. Либо картинкой горящей 5 секунд. Либо добавить страницу(свою пустую) в начало самого инсталера.
Суть такая должно быть сначала лого, а потом начаться установка.
El Sanchez
04-04-2014, 16:29
Подскажите CLSID и TypeLib в реестре для контекстного меню (файл .dll) генерируется установщиком или изначально задается конкретный номер??? »
Все представленные записи появляются после регистрации библиотеки. Просто для этой dll-ки в секции Files допишите флаг regserver.
Ivan_009
04-04-2014, 17:42
Суть такая должно быть сначала лого, а потом начаться установка »
lis5131, Если ты про сплеш заставку то вот пример: http://rghost.ru/53765924
Ivan_009, да - то что надо.
[Files]
Source: "isgsg.dll"; Flags: "DontCopy";
Source: "Splash.png"; Flags: "DontCopy";
[code]
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';
procedure InitializeWizard;
begin
ExtractTemporaryFile('Splash.png');
ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}')+'\Splash.png',{#SplS},{#SplR},{#SplE},0,2 55,False,$FFFFFF,10);
end;
Source: "isgsg.dll"; Flags: "DontCopy"; - а длл где брать?
или если у меня работает значит она подключена?
Inno setup v5.4.2 Ultra Полная версия
Все. Торможу. Спасибо большое за подсказку или совет, ну и за скрипт.
Dodakaedr
04-04-2014, 21:47
Все представленные записи появляются после регистрации библиотеки. Просто для этой dll-ки в секции Files допишите флаг regserver. »
А что ей еще может быть нужно, потому что контекстное меню не появляется и после установки перезапускается проводник, а dll-ка висит в процессе Explore.exe???
Dodakaedr
04-04-2014, 23:30
Если ты про сплеш заставку »
А она точно рабочая??? У меня сплэш не появляется. Inno Ultra.
Разобрался. Использовал issplash.dll
audiofeel
04-04-2014, 23:51
Dodakaedr,
А что ей еще может быть нужно, »
попробуй добавить вот это
[Setup]
ChangesAssociations=true
ChangesEnvironment=true
-----------------------------------
ChangesAssociations-изменяет связи
ChangesEnvironment-изменяет переменные
Dodakaedr
04-04-2014, 23:57
попробуй добавить вот это »
не помогает
audiofeel
05-04-2014, 00:06
не помогает »
-------------------------------
[Setup]
SetupLogging=true
ChangesAssociations=true
RestartIfNeededByRun=false
TimeStampsInUTC=true
ChangesEnvironment=true
[Files]
Flags: regserver regtypelib
Dodakaedr
05-04-2014, 00:22
audiofeel, Спасибо, но уже сам разобрался. Оказалось нужно было с особенным параметром запускать программу после установки (запуск должен быть обязательным). Осталось узнать как её запустить с настройками выбора языка, а то в программе нету такой функции, она как-то при первом запуске появляется в оригинале.
Source: "isgsg.dll"; Flags: "DontCopy"; - а длл где брать? »А разве в папке Splash, рядом со скриптом Example.iss и картинкой Splash.png её нет?
Я увидел isgsg.dll.
Не сомневался я что вы не проявите свою внимательность, а стоило бы:
Прокрутите колёсиком мыши от себя на столько, на сколько это возможно - пока не упрётесь в первое сообщение т.е в шапку темы.
Кликать кнопкой мыши (Левой кнопкой мыши (по умолчанию) для правши или правой кнопкой мыши для левши (для левшей - это уже зависит от настройки конфигурации мыши - т.е в настройках мыши, ставили вы ли ранее галочку "Обменять назначение кнопок" в конфигурации кнопок.))
Кликните: Показать/скрыть: Дополнительные программы для Inno Setup:
Далее найдите:
Inno Setup GameScript Generator - программа генерирует скрипты для Inno Setup . С помощью GameScript Generator и Inno Setup вы сможете быстро создать простенький инсталляционный пакет для любой игры. В инсталлятор можно встроить музыку, слайдшоу и фоновый рисунок. Для специалистов созданный скрипт, возможно, будет неплохой заготовкой для дальнейшей модернизации;
кликните ссылку Inno Setup GameScript Generator
после того как кликните Inno Setup GameScript Generator - вас перенаправит на форум csmania.
Находясь уже на форуме csmania, найдите:
забираем
isgsg_1.1.0.62.7z
кликните ссылку isgsg_1.1.0.62.7z
после того как кликните isgsg_1.1.0.62.7z, вас перенаправит на rusfolder
находясь на rusfolder, будут зелёные циферки а напротив окошко
введите указанные на картинке цифры в окошке напротив и нажмите "скачать"
после того как нажмёте "скачать", вас перенаправит на следующую страницу
Далее на странице найдите "Ссылка для скачивания файла:" (длинная такая) - кликните на неё, после начнётся скачивание файла isgsg_1.1.0.62.7z размером в 571КБ
после того как скачаете, файл isgsg_1.1.0.62.7z распакуйте архиватором 7-Zip (http://7-zip.org/)
после распаковки увидите файл isgsg.exe - это и есть Inno Setup GameScript Generator
И добавляйте им - заставку, фоновые рисунки и фоновую музыку в разных комбинациях.
Достаточно подробно?
Такими не сложными действиями - может за одно свою лень убьёте.
Прямых ссылок на программу не будет (а то ещё не хватало себе карму испортить).
Stealthmax
05-04-2014, 14:39
Интересно! Можешь показать? »
Показываю).
1. Проект VCL Styles (https://code.google.com/p/vcl-styles-utils/)
2. Установщик с библиотекой (http://goo.gl/Exkewk); можешь просто распаковать в папку и использовать редактор без установки, dll-ка там же.
3. Рабочий пример (http://rghost.ru/53791792)
//*********************** Подключаем скин ***************************//
#define A = (Defined UNICODE) ? "W" : "A"
// Импорт функции LoadVCLStyle из VclStylesInno.DLL
procedure LoadVCLStyle(VClStyleFile: String); external 'LoadVCLStyle{#A}@files:VclStylesInno.dll stdcall'; // для Unicode и Ansi
// Импорт функции UnLoadVCLStyles из VclStylesInno.DLL
procedure UnLoadVCLStyles; external 'UnLoadVCLStyles@files:VclStylesInno.dll stdcall';
function InitializeSetup(): Boolean;
begin
Result := True;
//******** извлечение скина********************//
ExtractTemporaryFile('CharcoalDarkSlate.vsf');
//*********** подключение скина **************//
LoadVCLStyle(ExpandConstant('{tmp}\CharcoalDarkSlate.vsf'));
end;
//****** Действие для кнопки Закрыть 'X', не работает по умолчанию со скином **********//
const
SC_CLOSE = 61536;
var
OldProc: Longint;
function CallWindowProc(lpPrevWndFunc: Longint; hWnd: HWND; Msg: UINT; wParam, lParam: Longint): Longint; external 'CallWindowProc{#A}@user32.dll stdcall delayload';
function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLong{#A}@user32.dll stdcall delayload';
// вызов процедуры закрытия
procedure ExitProcess(exitCode:integer); external 'ExitProcess@kernel32.dll stdcall';
function FProc(h: hwnd; Msg, wParam, lParam: Longint): Longint;
begin
if (Msg = $0112) then
begin
if (wParam = SC_CLOSE) then
begin {действие при нажатии крестика}
// параметр процедуры закрытия процесса, в данном случае без подтверждения
ExitProcess(0);
// также можно добавить сообщение при нажатии
//MsgBox('вы нажали крестик', mbInformation, MB_OK);
wParam := 0;
end;
end;
Result := CallWindowProc(OldProc, h, Msg, wParam, lParam);
end;
procedure InitializeWizard();
begin
OldProc := SetWindowLong(WizardForm.Handle, -4, CallbackAddr('FProc')); // хэндл окна, требуется для закрытия
end;
//**** Закрытие установщика и выгрузка подключенных библиотек ***********//
procedure DeinitializeSetup();
begin
SetWindowLong(WizardForm.Handle, -4, OldProc);// хэндл окна
UnLoadVCLStyles; //Выгружаем скин
end;
4. Как выглядит 112154
P.S. Проверено на Unicode и Ansi версиях, пример-вложение перезалил, чтобы вопросов не возникало
Farser21
05-04-2014, 14:51
Всем привет возник такой вопрос. У меня на странице компонентов: окно компонентов и окно для показа изображение при наведении на компонент. Внизу остается немного места, собственно как сделать небольшое окно на странице компонентов на котором бы отображался текст когда наводишь на компонент. Идентично так как и с картинками. Т.е. пользователь наводит на компонент и видит окно в котором есть небольшое описание к данному компоненту. Заранее спасибо за ответ!
Ivan_009
05-04-2014, 15:05
Stealthmax, Проект VCL Styles ,Использовать только Юникод версию Inno Setup на Анси ошибку выбивает...
Че за дела... :(
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC