Войти

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


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

TROY Diamond
11-01-2012, 20:33
я дал вам абсолютно рабочий пример, где эти значения подставляются через CustomMessages; если вы не можете в нем разобраться, то рекомендую начать с прочтения справки и изучения азов паскаля

Дайте, пожалуйста, полный пример! Мне нужно, чтобы от выбора языка менялись и значения...

Дык, не работают уже ТВОИ художества, в примере Николая, я не заметил такого стращилища, скрин которого ты показал. учись работать с текстом внутри кода.

Ну так помогите, скажите как правильно? Поэтому и спрашиваю...

PC-USER
11-01-2012, 22:02
Подскажите пожалуйста, возможно ли реализовать значки на кнопках в innosetup ?

http://s018.radikal.ru/i523/1201/5c/65d51519635c.png

profcom
11-01-2012, 22:03
Обновите пожалуйста ссылку на русскую справку к версии 5.4.2

valyok666
12-01-2012, 00:33
PC-USER, да гдето был пример от рестулз

Gnom_aka_Lexander
12-01-2012, 09:40
PC-USER, Смотри во вложении. Картинки на два положения - нажата-ненажата. насколько я понял - возможны 4 положения - свободна, наведена, нажата, неактивна.
Цвет фона - очень строго, именно этот цвет заложен как прозрачный.Ну так помогите, скажите как правильно? »
Во первых, чтоб тебе помогли - необходимо привести скрипт, а не скриншот скрипта - в правилах темы это наверняка есть.
Во вторых, чтобы не нарушать правила и не убивать всякое желание помогать тебе - прячь мемуары под спойлер - в правилах форума это тоже наверняка есть.к версии 5.4.2 » 5.4.3 уже. и в русском переводе она тоже есть.
Скачать (http://rghost.ru/35586967).

YURSHAT
12-01-2012, 15:26
Происходил переход, например, на страницу выбора папки или, опять же к примеру, на кастомный page2. »
Если я вас правильно понял, вы хотите переходить на ту страничку которую зададите в процедуре клика на кнопку? Но так нельзя. Страницы строго упорядочены и прыгнуть с wpWelcome на wpFinished нельзя и в коде прописать прыжок на другую страницу через нажатие какой-то кнопки - нельзя.

leshcat
12-01-2012, 16:08
@YURSHAT

А продублировать кнопку назад\вперед можно?

El Sanchez
12-01-2012, 16:45
насколько я понял - возможны 4 положения - свободна, наведена, нажата, неактивна »
Лександер, почти. Порядок глифов в изображении - отжата, неактивна, момент нажатия, нажата.

Цвет фона - очень строго, именно этот цвет заложен как прозрачный. »
Угу, обычно это цвет clFuchsia.

PC-USER
12-01-2012, 17:57
Лександер, Большое спасибо :)

TROY Diamond
12-01-2012, 20:47
Во первых, чтоб тебе помогли - необходимо привести скрипт, а не скриншот скрипта - в правилах темы это наверняка есть.
Во вторых, чтобы не нарушать правила и не убивать всякое желание помогать тебе - прячь мемуары под спойлер - в правилах форума это тоже наверняка есть.

Вот:

Почему НЕ компилируется этот скрипт, что здесь не так?

[Setup]
AppId={{85D6A3ED-1BE1-42DC-9CBA-CDD181AA79A3}
AppName=My Program
AppVersion=1.5
AppVerName=My Program 1.5
AppPublisher=My Company, Inc.
AppPublisherURL=http://www.example.com/
AppSupportURL=http://www.example.com/
AppUpdatesURL=http://www.example.com/
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
AllowNoIcons=yes
ShowLanguageDialog=auto
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes

[Languages]
Name: english; MessagesFile: compiler:Default.isl
Name: russian; MessagesFile: compiler:Languages\Russian.isl

[CustomMessages]
english.DelMsg=This program or its other version has already been previously installed.%nDo you want to remove it first?
english.ErrorRem=Failure to remove.
english.ErrorRem2=Probably the uninstaller has been moved, deleted or renamed.

russian.DelMsg=Эта программа или другая её версия уже была ранее установлена.%nВы хотите предварительно удалить её?
russian.ErrorRem=Ошибка удаления.
russian.ErrorRem2=Вероятно, деинсталлятор был перемещён, удалён или переименован.


function InitializeSetup(): Boolean;
var
ResultCode: Integer;
ResultStr:string;
begin
Result:=True;
begin
If RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{85D6A3ED-1BE1-42DC-9CBA-CDD181AA79A3}_is1', 'UninstallString', ResultStr)
then
begin
If ResultStr<>''
then
begin
ResultStr:=RemoveQuotes(ResultStr);
if MsgBox(ExpandConstant('{cm:DelMsg}'), mbInformation, MB_YESNO) = idYes
then
if not Exec(ResultStr, '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode)
then
MsgBox(ExpandConstant('{cm:ErrorRem} ') #13#13 '' + SysErrorMessage(ResultCode) + '.' #13#13 ExpandConstant('{cm:ErrorRem2}'), mbError, MB_OK);
end;
end;
end;
end;

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1

[Files]
Source: "C:\Program Files\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion

[Icons]
Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"
Name: "{group}\{cm:ProgramOnTheWeb,My Program}"; Filename: "http://www.example.com/"
Name: "{group}\{cm:UninstallProgram,My Program}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\My Program"; Filename: "{app}\MyProg.exe"; Tasks: desktopicon
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\My Program"; Filename: "{app}\MyProg.exe"; Tasks: quicklaunchicon

[Run]
Filename: "{app}\MyProg.exe"; Description: "{cm:LaunchProgram,My Program}"; Flags: nowait postinstall skipifsilent

уже отвечал на похожий вопрос...
; определение версии установленного .Net Framework

Как к этому скрипту добавить сообщения на разных языках с возможностью указания версии в CustomMessanges в виде переменной, а также как к нему прикрутить предыдущий код из предыдущего скрипта, - они друг друга перекрывают?!

[Setup]
AppName=NetFramework
AppVerName=NetFramework
DefaultDirName={pf}\NetFramework
OutputDir=.
Compression=lzma/ultra64
InternalCompressLevel=ultra64
SolidCompression=yes
VersionInfoCopyright=Serega

[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl


const
MinNetFrameWork = 'v4.0'; // минимальная версия NetFrameWork
// Возможные версии = 'v1.0', 'v1.1', 'v2.0', 'v3.0', 'v3.5', 'v4.0'

var
url: string;

procedure GetUrlNetFrameWork(ver: string);
begin
// страница загрузок http://www.microsoft.com/downloads/results.aspx?pocId=&freetext=Framework&DisplayLang=ru
case ver of
// по этой ссылке v1.1, т.к. ссылку на v1.0, я не нашёл... раритет... ;)
'v1.0': url := 'http://download.microsoft.com/download/0/8/6/086e7824-ddad-45c0-b765-721e5e28e4c5/dotnetfx.exe';
'v1.1': url := 'http://download.microsoft.com/download/0/8/6/086e7824-ddad-45c0-b765-721e5e28e4c5/dotnetfx.exe';
'v2.0': url := 'http://download.microsoft.com/download/5/6/7/567758a3-759e-473e-bf8f-52154438565a/dotnetfx.exe';
'v3.0': url := 'http://download.microsoft.com/download/4/d/a/4da3a5fa-ee6a-42b8-8bfa-ea5c4a458a7d/dotnetfx3setup.exe';
'v3.5': url := 'http://download.microsoft.com/download/7/0/3/703455ee-a747-4cc8-bd3e-98a615c3aedb/dotNetFx35setup.exe';
'v4.0': url := 'http://download.microsoft.com/download/1/B/E/1BE39E79-7E39-46A3-96FF-047F95396215/dotNetFx40_Full_setup.exe';
else
url := 'http://download.microsoft.com/download/5/6/7/567758a3-759e-473e-bf8f-52154438565a/dotnetfx.exe';
end;
end;

function CompareMinVer(const ver: string): Boolean;
var
min_ver: string;
begin
Result := False;
min_ver := MinNetFrameWork;
if (Length(min_ver) > 2) and (Length(ver) > 2) then
if (min_ver[2] > #47) and (min_ver[2] < #58) and (ver[2] > #47) and (ver[2] < #58) then
Result := ver[2] > min_ver[2];
end;

function DetectInstallNetFrameWork: Boolean;
var
VerNetFrameWorkInstalled: TArrayOfString;
i: Integer;
begin
Result := False;
if RegGetSubkeyNames(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP', VerNetFrameWorkInstalled) then
case CompareMinVer(VerNetFrameWorkInstalled[0]) of
True : Result := True;
False:
for i := 0 to GetArrayLength(VerNetFrameWorkInstalled)-1 do
if Pos(MinNetFrameWork, VerNetFrameWorkInstalled[i]) > 0 then
begin
Result := True;
Break;
end;
end;
end;

function SearchNetFrameWork: Boolean;
var
ErrorCode: Integer;
begin
Result := DetectInstallNetFrameWork;
if not Result then
if MsgBox('Для этой программы требуется установленный .NET Framework не ниже ' + MinNetFrameWork + '. ' +
'Пожалуйста загрузите и установите .NET Framework и запустите установку снова. ' +
'Вы хотите загрузить .NET Framework сейчас?', mbConfirmation, MB_YESNO) = idYes then
begin
GetUrlNetFrameWork(MinNetFrameWork);
ShellExec('open', url, '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;
end;

function InitializeSetup: Boolean;
begin
Result := SearchNetFrameWork;
end;

nik1967
12-01-2012, 22:04
Почему НЕ компилируется этот скрипт, что здесь не так? »
[Setup]
AppId={{85D6A3ED-1BE1-42DC-9CBA-CDD181AA79A3}
AppName=My Program
AppVersion=1.5
AppVerName=My Program 1.5
AppPublisher=My Company, Inc.
AppPublisherURL=http://www.example.com/
AppSupportURL=http://www.example.com/
AppUpdatesURL=http://www.example.com/
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
AllowNoIcons=yes
ShowLanguageDialog=yes
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes

[Languages]
Name: english; MessagesFile: compiler:Default.isl
Name: russian; MessagesFile: compiler:Languages\Russian.isl

[CustomMessages]
english.DelMsg=This program or its other version has already been previously installed.%nDo you want to remove it first?
english.ErrorRem=Failure to remove.
english.ErrorRem2=Probably the uninstaller has been moved, deleted or renamed.

russian.DelMsg=Эта программа или другая её версия уже была ранее установлена.%nВы хотите предварительно удалить её?
russian.ErrorRem=Ошибка удаления.
russian.ErrorRem2=Вероятно, деинсталлятор был перемещён, удалён или переименован.

[Files]
Source: "C:\Program Files\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1

[Run]
Filename: "{app}\MyProg.exe"; Description: "{cm:LaunchProgram,My Program}"; Flags: nowait postinstall skipifsilent

[Icons]
Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"
Name: "{group}\{cm:ProgramOnTheWeb,My Program}"; Filename: "http://www.example.com/"
Name: "{group}\{cm:UninstallProgram,My Program}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\My Program"; Filename: "{app}\MyProg.exe"; Tasks: desktopicon
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\My Program"; Filename: "{app}\MyProg.exe"; Tasks: quicklaunchicon

[_Code]
function InitializeSetup(): Boolean;
var
ResultCode: Integer;
ResultStr:string;
begin
Result:=True;
begin
If RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{85D6A3ED-1BE1-42DC-9CBA-CDD181AA79A3}_is1', 'UninstallString', ResultStr)
then
begin
If ResultStr<>''
then
begin
ResultStr:=RemoveQuotes(ResultStr);
if MsgBox(ExpandConstant('{cm:DelMsg}'), mbInformation, MB_YESNO) = idYes
then
if not Exec(ResultStr, '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode)
then
MsgBox(ExpandConstant('{cm:ErrorRem} ') + #13#13 + SysErrorMessage(ResultCode) + '.' + #13#13 + ExpandConstant('{cm:ErrorRem2}'), mbError, MB_OK);
end;
end;
end;
end;

Akella2007
13-01-2012, 15:01
Подскажите, как написать скрипт, для включения файлов в инсталлятор.

Суть такова.
В разных папках лежит много файлов.
Структура папок такова
\папка\346\
\папка\347\
\папка\348\
\папка\....\
\папка\362\

в каждой папке с номером лежит разное количество файлов вот с такими именами:
347-0001.sql
347-0002.sql
347-0003.sql

....
349-0001.sql
349-0002.sql
...
...
...
362-0001.sql
362-0002.sql
362-0003.sql
362-0004.sql
и т.д.

все эти файлы нужно "зашить" в инсталлятор. Это SQL-скрипты для обновления базы на клиентской стороне.
Количество папок может быть разное. Для одного клиента с 346 по 362, а для другого с 350 по 362. В зависимости от версии установленной программы.

В итоге все эти файлы будут при установке у клиента скопированы в одну папку, т.к. имена файлов разные, то проблем нет в этом плане.

Так вот, как мне скриптом собрать эти sql файлы и зашить в инсталлятор?

Сейчас сделано не очень красиво и много рутины:

#define verTo "347"
...
...
[Files]
Source: ..\..\Kvartal21\Update\{#verTo}\{#verTo}-0001.sql; DestDir: {userdocs}\Kvartal Pro\SQL
Source: ..\..\Kvartal21\Update\{#verTo}\{#verTo}-0002.sql; DestDir: {userdocs}\Kvartal Pro\SQL
Source: ..\..\Kvartal21\Update\{#verTo}\{#verTo}-0003.sql; DestDir: {userdocs}\Kvartal Pro\SQL
Source: ..\..\Kvartal21\Update\{#verTo}\{#verTo}-0004.sql; DestDir: {userdocs}\Kvartal Pro\SQL


и так я меняю для каждой папки #define verTo "347"
и потом смотрю какие файлы нужно раскомментировать или закоментировать.
А если папок около 10-15, то на это уходит много времени :( и приходится создавать отдельный инсталлятор для каждой папки, а хотелось бы один для всех.


Заранее благодарен

R.i.m.s.k.y.
13-01-2012, 15:07
Akella2007, ... э э э ...
#define verTo "347"
...
...
[Files]
Source: ..\..\Kvartal21\Update\{#verTo}\{#verTo}*.sql; DestDir: {userdocs}\Kvartal Pro\SQL; Flags: ignoreversion recursesubdirs createallsubdirs uninsrestartdelete overwritereadonly restartreplace
...

Инно понимает "маски" файлов, обрати внимание на запись в папке источника ...{#verTo}*.sql...

Gnom_aka_Lexander
13-01-2012, 15:44
R.i.m.s.k.y., выдели звездочку, а то и я-то не сразу понял :)

wertulll
14-01-2012, 14:02
Ребят что нужно удалить из этого скрипта чтобы остался только внешний вид инстала http://rghost.ru/24985741

Dark_Delphin
14-01-2012, 22:12
Всем привет)

Подскажите пожалуйста или дайте примерчик "Как сделать, что-бы картинка отображалась в компонентлисте? В jpg или PNG формате"?

Заранее спасибо.

valyok666
15-01-2012, 05:04
ntrx, botva2 тебе в помощь))

wertulll, ты бы сначало написал что оставить надо)

wertulll
15-01-2012, 06:38
:) valyok666, ну как обяснить я пока ещё в этих делах новичёк извеняюсь :) мне нужно чтобы в этом скрипте остался только код на внешний вид инсталятора чтобы он работал без arc.ini , unrar.dll и так далее. Я хочю его самим inno setup запаковать .

ну вод может так понятней будет :)

OutputBaseFilename=setup
Compression=lzma/ultra64
;DiskSliceSize=1566000000
;DiskSpanning=yes
;SlicesPerDisk=4
SolidCompression=yes

чтобы остались кнопки , папка , тени , картинка , шрифт ну вобщем только внешний вид без дополнительных файлов разпоковщиков

valyok666
15-01-2012, 06:59
wertulll, щас посмотрю)тоесть убрать ISDone и всё да?

wertulll
15-01-2012, 07:07
ну да




© OSzone.net 2001-2012