Войти

Показать полную графическую версию : Скрипты 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

habib2302
13-11-2015, 12:48
Как организовать подхват настроек через раздел Files с проверкой и без копирования в инсаллятор?

ZVSRus
13-11-2015, 18:41
Dodakaedr, Как правильно зарегестрировать программу. Прописывать в секции [Registry] все записи найденные в реестре или только те строки что относятся к ключу. Или можно как-то прописать в скрипте reg файл.

Dodakaedr
13-11-2015, 22:21
ZVSRus, если программа не делает прочих проверок, то достаточно записи ключа: экспортируете из реестра ключ и через конвертер, который в шапке темы есть, конвертируете в формат inno, потом копируете строки в свой скрипт в секцию [Registry].

habib2302, если правильно помню, то как-то так:
[Files]
Source: {src}\FILE.reg; Flags: external

В любом случаи все это написано в справке в секции Files. Проверку можно сделать через check функцию, вроде тебе же и писал пример, либо через флаг, в справке найдешь.

Nordek
14-11-2015, 01:47
Как организовать подхват настроек через раздел Files с проверкой и без копирования в инсаллятор? »
[Files]
Source: {src}\Settings.ini; DestDir: {userappdata}\MyProg; Flags: external skipifsourcedoesntexist

external - Внешний. Это значит что файлы будут браться с внешнего источника. В Source, присутствие константы {src} обязательно.
skipifsourcedoesntexist - Пропустить, если источник отсутствует. Т.е пропускает файл или каталог, если таковые отсутствуют.


Или можно как-то прописать в скрипте reg файл. »
[Run]
Filename: regedit.exe; Parameters: "/S ""{src}\MyRegistryFile.reg"""

ZVSRus
17-11-2015, 13:02
Вопрос ко-всем знающим форум-чанам. Как правильно экспортировать ключ реестра. Какими программами лучше всего пользоваться для снятия снимков реестра. Как это делается. Не могу сделать ACDSee 5.0 PowerPack зарегестрированной, не могу корректно экспортировать из реестра данные. Опишите как все это делается на своих конкретных примерах.

Dodakaedr
17-11-2015, 13:08
ZVSRus, Любая программа по работе с реестром. Но можно и стандартным способом: кнопка "Пуск" > "Выполнить" вводите regedit > жмете "Enter", перед вами появится стандартный обозреватель реестра.http://i67.fastpic.ru/big/2015/1117/89/cbde3d02274e738c09a1149d575bb089.jpg

не могу корректно экспортировать »
а как оно экспортируется?

ZVSRus
17-11-2015, 13:50
Dodakaedr, Экспортирую как на вашем рисунке. В regedit в строке поиск ввожу название программы, выдает список в около 1000 строк, все экспортирую в reg файл. Далее делаю в секции [Run]
Filename: regedit.exe; Parameters: "/S ""{src}\MyRegistryFile.reg""" в итоге выдает ошибки при запуске программы. Или ACDSee 5.0 такая хитрозадая или что-то делаю неправильно с реестром. За 2 дня всю голову сломал.

ZVSRus
17-11-2015, 14:04
Так программа вносит данные в реестр

Dodakaedr
17-11-2015, 14:36
ZVSRus, чтобы вам помочь, надо знакомится с работой программы, на что сейчас нету времени.

ZVSRus
17-11-2015, 15:48
Dodakaedr, Как правильно сделать чтобы ярлыки реально закреплялись на панели задач и в меню пуск

habib2302
17-11-2015, 21:29
Помогите решить проблему
http://savepic.ru/8064127.png (http://savepic.ru/8063103.png)

Nordek
17-11-2015, 21:44
зарегестрированной »
[HKEY_LOCAL_MACHINE\SOFTWARE\ACD Systems\ACDSee Pro\50\InTouch2]
"LicenseKey"="XXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX"
"Trial"=dword:00000000
"KeyCount"=dword:00000001
Вместо "XXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX" - Ваш регистрационный ключ.

[HKEY_LOCAL_MACHINE\SOFTWARE\ACD Systems\ACDSee Pro\50\LClient]
"md"=hex:***********
Вместо звёздочек конечное содержимое.

Не показывать Quick Start Guide:
[HKEY_CURRENT_USER\Software\ACD Systems\ACDSee Pro\50]
"ShowStartupWizard"=dword:00000000

Nordek
17-11-2015, 22:02
Помогите решить проблему »
habib2302, Не ленитесь сюда приводить текстовый вид: Содержимое [Icons] в месте ошибки.

[Icons]
Name: {group}\{cm:UninstallProgram,Alcohol 120%25}; Filename: {uninstallexe}

МИШАНЧИК
19-11-2015, 14:39
Dodakaedr, подскажите пожалуйста, а как сделать:
1. чтоб разрядность отображалась и в SetupWindowTitle
2. убрать слово моя программа setup в описании инсталятора создаваемого инно, или заменить его на программа и т.п.?

Dodakaedr
19-11-2015, 18:20
1.Все хорошо, только теперь еще Welcx... прописывается в SetupWindowTitle »
удалите строку WizardForm.Caption := WizardForm.WelcomeLabel1.Caption; »
2. [Setup]
VersionInfoDescription=бла-бла

МИШАНЧИК
20-11-2015, 08:50
WizardForm.Caption := WizardForm.WelcomeLabel1.Caption; »
тогда полностью копируется строка WelcomeLabel1.Caption, а можно как-то задать туда другую надпись?

ZVSRus
20-11-2015, 09:31
Какой Flags нужно подставить чтобы эти две папки устанавливались в данных директориях, но их не было видно,
а чтобы появлялись они только после первого запуска программы. Или нужно сделать что-то другое.

Source: C:\Installer\Roaming\ACD Systems\ImageDB\*; DestDir: {userappdata}\ACD Systems\ImageDB; Flags: ignoreversion recursesubdirs createallsubdirs; Check: RusLang and InstallerCheck
Source: C:\Installer\CommonAppData\ACD Systems\*; DestDir: {commonappdata}\ACD Systems; Flags: ignoreversion recursesubdirs createallsubdirs; Check: RusLang and InstallerCheck

Dodakaedr
20-11-2015, 21:45
а можно как-то задать туда другую надпись? »
А что вам мешает добавить её?[setup]
appname=App
appversion=1.1
UninstallDisplayName={code:GetUnName}
DefaultDirName={sd}\Apps

[CustomMessages]
Welcx32=Установка {#SetupSetting("AppName")} x32
Welcx64=Установка {#SetupSetting("AppName")} x64
UnName32=Удалить {#SetupSetting("AppName")} x32
UnName64=Удалить {#SetupSetting("AppName")} x64
Title32={#SetupSetting("AppName")} x32
Title64={#SetupSetting("AppName")} x64


[Code]
function GetUnName(uname: string): string;
begin
if IsWin64 then uname := CustomMessage('UnName64') else uname := CustomMessage('UnName32');
Result := uname;
end;

procedure InitializeWizard();
begin
if IsWin64 then
begin
WizardForm.WelcomeLabel1.Caption := CustomMessage('welcx64');
WizardForm.Caption := CustomMessage('Title64');
end
else
begin
WizardForm.WelcomeLabel1.Caption := CustomMessage('welcx32');
WizardForm.Caption := CustomMessage('Title32');
end;
end;

Какой Flags нужно подставить »
никакой
чтобы появлялись они только после первого запуска программы »
при отсутствии программа сама создаст их. Если там что-то необходимо для работы программы, например, какие-то настройки, лицензии, то их можно и до запуска программы устанавливать.

ZVSRus
21-11-2015, 09:32
Dodakaedr, Есть программа (Ваша) Windows Player 3.0.0.0 RePack Portable by Dodakaedr вместо страницы финиша появляется окно. if MsgBox Как сделать как на картинке.

МИШАНЧИК
21-11-2015, 16:12
Dodakaedr, подскажите пожалуйста. Пытался заменить окно "о прграмме" этим скриптом:
[Files]
Source: compiler:CallbackCtrl.dll; Flags: dontcopy

[Code]
type
TWFProc = function(h:hWnd;Msg,wParam,lParam:Longint):Longint;

function CallWindowProc(lpPrevWndFunc: Longint; hWnd: HWND; Msg: UINT; wParam: Longint; lParam: Longint): Longint; external 'CallWindowProcA@user32.dll stdcall';
function SetWindowLong(Wnd: HWnd; Index: Integer; NewLong: Longint): Longint; external 'SetWindowLongA@user32.dll stdcall';
function WrapWFProc(Callback: TWFProc; ParamCount: Integer): Longword; external 'wrapcallbackaddr@files:CallbackCtrl.dll stdcall';

var
OldProc:Longint;

procedure AboutSetupClick;
begin
//здесь обрабатываем нажатие на пункт меню "О программе ..."
MsgBox('bla-bla-bla', mbInformation, MB_OK);
end;

function WFWndProc(h:HWND;Msg,wParam,lParam:Longint):Longint;
begin
if (Msg=$112) and (wParam=9999) then begin
Result:=0;
AboutSetupClick;
end else begin
if Msg=$2 then SetWindowLong(WizardForm.Handle,-4,OldProc);
Result:=CallWindowProc(OldProc,h,Msg,wParam,lParam);
end;
end;

procedure InitializeWizard;
begin
OldProc:=SetWindowLong(WizardForm.Handle,-4,WrapWFProc(@WFWndProc,4));
end;
и на windows 7 х86 при отказе от дальнейшей установки(скрипт скомпилирован в 7х64) и закрытии инсталятора, выдает ошибку:
http://s018.radikal.ru/i510/1511/a0/5a9ef7b04699t.jpg (http://radikal.ru/fp/965e534c4f0f494ea15bbb5b3cf157e8)




© OSzone.net 2001-2012