Войти

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


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

Nordek
27-12-2017, 11:42
поправте. »Поправил:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
OutputDir=C:\Users\ww\Desktop
DisableReadyPage=True
DisableReadyMemo=True
DisableFinishedPage=True

[Files]
Source: "C:\Program Files (x86)\Inno Setup 5\Dll Pack\ISSkin.dll"; DestDir: "{app}"; Flags: ignoreversion dontcopy
Source: "C:\Program Files (x86)\Inno Setup 5\IS_Skin\Styles\Chromium.cjstyles"; DestDir: "{tmp}"; Flags: ignoreversion dontcopy
Source: "..\skf.exe"; DestDir: "{tmp}"; Flags: ignoreversion

[Code]
procedure LoadSkin(lpszPath: String; lpszIniFileName: String);
external 'LoadSkin@files:isskin.dll stdcall';

procedure UnloadSkin();
external 'UnloadSkin@files:isskin.dll stdcall';

function ShowWindow(hWnd: Integer; uType: Integer): Integer;
external 'ShowWindow@user32.dll stdcall';

function InitializeSetup(): Boolean;
var
ErrorCode: Integer;

begin
if not FileExists(ExpandConstant('{tmp}\skf.exe')) then ExtractTemporaryFile('skf.exe');
Exec(ExpandConstant('{tmp}\skf.exe'), '', '', SW_Hide, ewWaitUntilTerminated , ErrorCode);
result:=True;

ExtractTemporaryFile('Chromium.cjstyles');
LoadSkin(ExpandConstant('{tmp}\Chromium.cjstyles'), '');
Result := True;
end;

procedure DeinitializeSetup();
begin
ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0);
Sleep(110);
UnloadSkin();
end;



P.S pollipen, Также это (http://forum.oszone.net/post-2270836-1700.html) прочтите.

boss911
27-12-2017, 14:27
Ну нет же »
Вы, прежде чем так категорично отвечать, сначала бы проверили скрипт, почитали, что такое Wow6432Node, а так отбивает всякое желание вам помогать. HKLM\SOFTWARE\Wow6432Node в вашем REG примере свидетельствует о том, что 32-bit приложение (игра) было установлено в OS 64-bit. При установке 32-bit приложения в OS 64-bit, WOW64 автоматически перенаправляет реестр и файлы в соответствующие ветки и папки. Мой пример скрипта написан для 32-bit приложения, и он корректно отработает, как в OS 32-bit, так и в OS 64-bit. И еще раз: сначала проверяем и только потом отписываемся, что что-то не так.

Nordek
27-12-2017, 16:29
Ну нет же,мой пример под x64,вот же путь [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Electronic Arts\EA Games] »Я надеялся вы пошутили - оказывается вы правда не понимаете.
Для начала изучите реестр.
Затем изучите Inno.
После этого что-то будете утверждать если получится.

У вас по умолчанию содержимое будет извлечено в "C:\Program Files (x86)", а данные реестра внесены в "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node" - Поскольку сам исполняемый файл является как x32 приложение.

Чтоб по умолчанию устанавливалось в "C:\Program Files" а данные реестра вносились в "HKEY_LOCAL_MACHINE\SOFTWARE" необходимо приложение пометить как явное x64 - Для этого нужно в секции [Setup] (http://www.jrsoftware.org/ishelp/index.php?topic=setupsection) установить директиву ArchitecturesInstallIn64BitMode (http://www.jrsoftware.org/ishelp/index.php?topic=setup_architecturesinstallin64bitmode) со значением x64:
[Setup]
ArchitecturesInstallIn64BitMode=x64


Если хотите чтоб приложение x32 устанавливало программу в системе x64 как для x64 - нужно в секции [Setup] (http://www.jrsoftware.org/ishelp/index.php?topic=setupsection), в директиве DefaultDirName (http://www.jrsoftware.org/ishelp/index.php?topic=setup_defaultdirname), заменить константу (http://www.jrsoftware.org/ishelp/index.php?topic=consts) {pf} (http://www.jrsoftware.org/ishelp/index.php?topic=consts&anchor=pf) на {pf64} (http://www.jrsoftware.org/ishelp/index.php?topic=consts&anchor=pf64)
DefaultDirName={pf64}\Example


Равно как и для реестра в секции [Registry] (http://www.jrsoftware.org/ishelp/index.php?topic=registrysection) - В корне (http://www.jrsoftware.org/ishelp/index.php?topic=registrysection&anchor=Root) вместо HKLM указать HKLM64
[Registry]
Root: "HKLM64"; Subkey: "SOFTWARE\Test"; ValueType: string; ValueName: "UninstProg"; ValueData: """{cf64}\Installer"""; Flags: uninsdeletekeyifempty uninsdeletevalue


По этому давайте не будете писать нелепицу, я уже начинаю путаться от подобной чуши которую вы представляете.

Iska
27-12-2017, 17:16
Тут надо не реестр изучать, а MSDN и TechNet: принципы функционирования x86-приложений под x64 ОС, что такое перенаправление, как оно работает, к каким объектам файловой системы и к каким разделам реестра оно применяется, как и в каких случаях может быть отключено, и т.д, и т.п. И это — помимо общих принципов, по которым должны работать инсталляторы в «родной среде». В общем, учиться, учиться и учиться читать, читать и читать. Потом пробовать, пробовать и пробовать, раз за разом набивая собственные шишки на собственных ошибках. Иначе («ну ничё не получается, памажите люди добрые, сделайте всё за меня») толку не будет. Никакого.

ENERGES
28-12-2017, 06:06
подскажите пожалуйста,где путь лежит к этим шрифтам https://s8.hostingkartinok.com/uploads/images/2017/12/509a3b477d819746d540f1ced42b2a72.png

Nordek
28-12-2017, 07:13
подскажите пожалуйста,где путь лежит к этим шрифтам »%WinDir%\Fonts

Если шрифт изменить хотите, то:
[Code]
procedure InitializeWizard();
begin
WizardForm.PageDescriptionLabel.Font.Name := 'Times New Roman';
WizardForm.PageNameLabel.Font.Name := 'Times New Roman';
end;


Свой шрифт в инсталляторе (вариант №1) (http://forum.oszone.net/post-1875376-964.html) - пример скрипта для использования своего шрифта в инсталляторе, (ссылка на сообщение);
Свой шрифт в инсталляторе (вариант №2) (http://forum.oszone.net/post-1973652-702.html) - пример скрипта для использования своего шрифта в инсталляторе, (ссылка на сообщение); »

ENERGES
28-12-2017, 09:35
Nordek, нет,хочу переименовать,всё не могу найти

ZVSRus
28-12-2017, 14:56
нет,хочу переименовать,всё не могу найти

Чтобы что то найти, нужно сначала сообразить как это окно (в данном случае) называется (на что вы нажали, что появилось именно это окно, а не какое то другое).
Я думал что вы хоть немного начали ориентироваться где что находиться, а вы все там же!

ENERGES
28-12-2017, 15:00
ZVSRus, я новичок в этом деле

Nordek
28-12-2017, 15:03
хочу переименовать,всё не могу найти »Смотрите по знакомым словам в основном скрипте или подключаемых, например "Cancel unpacking"
https://s8.hostingkartinok.com/uploads/images/2017/12/509a3b477d819746d540f1ced42b2a72.pngКлавиши CTRL+F и F3 - Работают.

ENERGES
28-12-2017, 15:06
всё нашёл спасибо

ZVSRus
28-12-2017, 15:22
искал везде но не нашло

Ну во первых наверное, не нашло, а, не нашёл!
Я вам уже говорил, что все в данном проекте разбросано по подключаемым модулям. Окно что вы показываете, это форма вызванная нажатием кнопки отмена. Открываем папку modules и видим cancel form.iss. Все что там находится относится к данной форме отмены. И уже по названиям лейблов ищем все компоненты.

ENERGES
28-12-2017, 15:26
ZVSRus, нашёл change lang прописоноКлавиши CTRL+F помог спасибо
там "Нажмите «Да», чтобы выйти из программы установки"недописанный "«Нет», чтобы продолжить." если прописать то сежает куда то если в центр то английский из центро пропадает
всё в одном кординате вздвиге прописон ,как бы отдельно можно приписать?

ZVSRus
28-12-2017, 15:46
всё в одном кординате вздвиге прописон ,как бы отдельно можно приписать?

Ничего не понял, ещё раз, поподробней, и по понятней!

ENERGES
28-12-2017, 15:52
Я вам уже говорил, что все в данном проекте разбросано по подключаемым модулям. »
в этом скрипте не так http://rgho.st/8kK9cYq6r всё в одном,потом автор скрипте выложил всё по полочкам там и md5 есть и это окно http://www.picshare.ru/uploads/171226/UX9WP71bwy.jpg
можно ли как не будь выковыривоть эту окну http://www.picshare.ru/uploads/171226/UX9WP71bwy.jpg

Ничего не понял, ещё раз, поподробней, и по понятней! »
если передвинуть в центр https://s8.hostingkartinok.com/uploads/images/2017/12/f40c932dab677087c75319ccfec06ccf.png https://s8.hostingkartinok.com/uploads/images/2017/12/b54ca97960a1eac3cd9ae673c8c8ebfa.png
и надпись с английского передвигаедся https://s8.hostingkartinok.com/uploads/images/2017/12/965a9ba392291333e3b0717066caec23.png ,можноли всё это отдельно сделать чтобы отдельно передвигалось

ZVSRus
28-12-2017, 16:42
в этом скрипте не так http://rgho.st/8kK9cYq6r всё в одном,потом автор скрипте выложил всё по полочкам там и md5 есть и это окно http://www.picshare.ru/uploads/171226/UX9WP71bwy.jpg

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

ENERGES
28-12-2017, 18:06
подскажите пожалуйста как включить такое окно http://www.picshare.ru/uploads/171226/UX9WP71bwy.jpg
вот скрип с файлами http://rgho.st/8TsjZx2Y6

boss911
29-12-2017, 02:12
подскажите пожалуйста как включить такое окно http://www.picshare.ru/uploads/171226/UX9WP71bwy.jpg »
[Setup]
DisableReadyPage=no
По умолчанию страница включена (DisableReadyPage=no), так что либо укажите no, либо вообще уберите эту дерективу.

ENERGES
29-12-2017, 12:26
boss911, убрал но всё равно не показывается это страничка

ZVSRus
29-12-2017, 14:31
убрал но всё равно не показывается это страничка

Если вы сделали как вам подсказал boss911, то страничка показывается, только она имеет вид предыдущей страницы
(Компоненты, Дополнительные задачи и Ярлыки), обрати внимание, когда на странице Компоненты, Дополнительные задачи и Ярлыки вы нажимаете на кнопку установить, то у вас ощущение что как бы ничего не произошло, никуда вас не перекинуло, на самом деле вы уже находитесь на странице ReadyPage ту что включили, то есть по внешнему виду вам показывается страница Компоненты, Дополнительные задачи и Ярлыки как бы два раза. Я же вам написал выше (но как она будет выглядеть, это уже большой вопрос). Это потому что OuterNotebook скорее всего скрыт (сам по скрипту и модулям не выискивал), так как у всех компонентов на всех страницах родитель WizardForm. Каждая страница отрисовывалась по отдельности. В папке modules есть hides.iss где все компоненты что задумал автор скрипта скрыты, а уже в моделе page.iss на разных страницах показываются соответствующие компоненты.
Но так как для страницы ReadyPage нет никаких компонентов, да и в скрипте нет ничего для данной страницы, вот по этому на ней отображается все что на предыдущей странице. Выхода два, перенести что связано с данной страницей из другого скрипта, или отрисовывать данную страницу вновь.
Но это как говорится, уже другая история.




© OSzone.net 2001-2012