PDA

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


Страниц : 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 127 128 129 130 131 132 133

Serega
22-12-2009, 20:55
а примерно в чём она может заключаться, если при ewNowait относительно нормально ставиться? »
Интересное высказывание... если бы было у вас нормально, то думаю вы бы не задавались таким вопросом.
Ошибка может быть в передаваемых параметрах запуска, вашей сторонней программы.

lmiol
22-12-2009, 22:18
я писал
как сделать чтобы если виста то файлы автоматом в одну папку а если хр то в другую инсталились?

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\{code:DetectWindows}
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}; Flags: ignoreversion

[Code]
function DetectWindows(s: string): string;
var
SubKeyName, ResultStr: string;
begin
SubKeyName:= 'Software\Microsoft\Windows NT\CurrentVersion';
RegQueryStringValue(HKLM, SubKeyName, 'ProductName', ResultStr);
if Pos('XP', ResultStr) > 0 then
Result:= 'XP'
else
if Pos('Vista', ResultStr) > 0 then
Result:= 'Vista'
else Result:= 'My Program';
end;

я не совсем понял как вписать, у мну первый ХР путь это
C:\Documents and Settings\Ваше_имя_пользователя\Application Data\id Software
а на Vista это
C:\Users\Ваше_имя_пользователя\AppData\LocalLow\id Software\

Habetdin
22-12-2009, 22:25
lmiol, используйте переменные {userappdata} и {localappdata}, а не прямые пути :)

lmiol
22-12-2009, 22:44
я и использую я просто путь нашкрябал

а LocalLow что в висте определяется как {localappdata}?

Serega
22-12-2009, 23:15
я не совсем понял как вписать »

[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {code:DetectWindows}; Flags: ignoreversion

[Code]
function DetectWindows(s: string): string;
var
SubKeyName, ResultStr: string;
begin
SubKeyName:= 'Software\Microsoft\Windows NT\CurrentVersion';
RegQueryStringValue(HKLM, SubKeyName, 'ProductName', ResultStr);
if Pos('XP', ResultStr) > 0 then
Result:= ExpandConstant('{%APPDATA}\id Software')
else
if Pos('Vista', ResultStr) > 0 then
// не знаю, будет ли это C:\Users\Ваше_имя_пользователя\AppData\LocalLow\id Software
// проверить не где
Result:= ExpandConstant('{%APPDATA}\LocalLow\id Software')
else Result:= ''; // сюда нужно вписать путь по дефолту, т.е. если не XP или Vista
end;

lmiol
22-12-2009, 23:17
серега как всегда выручает!!!!+1

beve
23-12-2009, 00:00
Подскажите плз, если надо добавить в инсталятор какой то файл, то это можно прописать в скрипте в секции [Files] так: Source: "{app}\help.chm"; DestDir: "{app}"; . Откуда возьмется файл и куда установится мне понятно. Но, вот как добавить в установщик вместо файла help.chm например папку help из вложенными в нее разными файлами и подпапками, не перечисляя их все, а просто чтоб впихнуть в инсталятор готовую папку с файлами, а потом ее извлеч в корень установленной проги???

Serega
23-12-2009, 00:20
Подскажите »
так:

[Files]
Source: Papka\*; DestDir: {app}; Flags: createallsubdirs ignoreversion recursesubdirs

lmiol
23-12-2009, 01:18
опа тут новая нипонятка а как сделать если у мну дефолтной папки нет
[Files]
Source: "uninstall.ico"; Components: main; DestDir: "{userappdata}\id Software\uninstall"; Flags: ignoreversion
Source: "usercur\*"; Components: main; DestDir: "{userappdata}\id Software"; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension
Source: "usercur2\*"; Components: manual; DestDir: "{userappdata}\id Software"; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension
Source: "usercur3\*"; Components: browser; DestDir: "{userappdata}\"; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension
Source: "programfiles\*"; Components: browser; DestDir: "{pf}\"; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension
Source: "pk3\*"; Components: main; DestDir: "{userappdata}\id Software"; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension nocompression
Source: "pbsvc.exe" ;Components: anti;DestDir: "{tmp}"; Flags: ignoreversion
Source: "QuakeLiveNP_277.msi" ;Components: plug;DestDir: "{tmp}"; Flags: ignoreversion
тоисть есть еще отдельные пути (pf и tmp я думаю путь такой же и на висте)

МИШАНЧИК
23-12-2009, 10:24
Подскажите пожалуйста, как правильно удалить ветвь реестра перед инсталяцией?

REXE
23-12-2009, 13:39
Помогите пожалуйста как исправить ,я поставил кнопки которые прилогались к черному фону,кнопка работает только при нажатии на текст в кнопке а не на сому кнопку.буду благодарен

Habetdin
23-12-2009, 18:05
МИШАНЧИК, Пост 631 (http://forum.oszone.net/post-1292649-631.html), InitializeSetup - это инициализация установщика, происходит явно перед установкой ;)

REXE
23-12-2009, 18:26
Народ дайте пожалуйста код чтобы на каждой странице верхнюю картинку растянуть(это я умею),а на эту картинку наложить текст ,это как раз не получается

Только чтобы текст был без фона черного

A1EXXX
23-12-2009, 20:15
REXE, [Code]
var
PageNameLabel1, PageDescriptionLabel1: TLabel;


procedure InitializeWizard();
begin
PageNameLabel1 := TLabel.Create(WizardForm);
with PageNameLabel1 do
begin
Left := ScaleX(13);
Top := ScaleY(9);
Width := ScaleX(300);
Height := ScaleY(14);
AutoSize := False;
WordWrap := True;
Font.Name := 'Tahoma'
Font.Style := [fsBold];
ShowAccelChar := False;
Transparent := True;
Parent := WizardForm.MainPanel;
end;

PageDescriptionLabel1 := TLabel.Create(WizardForm);
with PageDescriptionLabel1 do
begin
Left := ScaleX(25);
Top := ScaleY(24);
Width := ScaleX(475);
Height := ScaleY(30);
AutoSize := False;
WordWrap := True;
Font.Name := 'Tahoma'
ShowAccelChar := False;
Transparent := True;
Parent := WizardForm.MainPanel;
end;

with WizardForm do
begin
PageNameLabel.Hide;
PageDescriptionLabel.Hide;
with MainPanel do
begin
with WizardSmallBitmapImage do
begin
Left := ScaleX(0);
Top := ScaleY(0);
Width := Mainpanel.Width;
Height := MainPanel.Height;
end;
end;
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
PageNameLabel1.Caption := WizardForm.PageNameLabel.Caption;
PageDescriptionLabel1.Caption := WizardForm.PageDescriptionLabel.Caption;
end;

REXE
23-12-2009, 21:57
A1EXXX спасибо большое!!))

МИШАНЧИК
24-12-2009, 03:03
Habetdin, спасибо!

Затупил, простите

А если несколько ветвей, так?

function InitializeSetup(): Boolean;
begin
RegDeleteKeyIncludingSubkeys(HKLM, 'Software\My Program1');
Result:= True;
RegDeleteKeyIncludingSubkeys(HKLM, 'Software\My Program2');
Result:= True;
RegDeleteKeyIncludingSubkeys(HKCU, 'Software\My Program3');
Result:= True;
end;

REXE
24-12-2009, 11:20
Народ дайте ссылку где скачать последний фриарк,и научите как им пользоватся или дайте ссылку где можно научится.

Sotonisto
24-12-2009, 11:57
Народ, вы ток не смейтесь - возможно я задам глупые вопросы, но я только 2 дня назад познакомился с этой прогой и естественно я в ней ламер.
И так...

1. У меня есть игра Left 4 Dead 2. Я ее обновил всеми патчами, установил кряк. Терь мне нужно свободное место на диске. И вот я решил создать инсталл игры. Все бы ничего, но все инсталлы размер которых больше 700Mb у меня зависают :(
Вопрос - это чет я в коде не то сделал (скрипт прилагается), или же файлы игры нужно чем-нить cжать, а потом прописать какуе-то команду для распаковки.

2. Патчи для Left 4 Dead 2 нужно прописывать в реестре. В каждой системе (х64 и х32) нужно вносить в реестр разные значения.Для х32
[HKEY_CURRENT_USER\Software\Classes\CLSID\{5F63E8CB-8F57-490A-97FE-62BC2F2A5EA4}\InprocServer32]
[HKEY_CURRENT_USER\Software\Classes\CLSID\{66B6B493-6055-4572-8FC1-A0FA86D63545}]
[HKEY_CURRENT_USER\Software\Classes\CLSID\{8D083C4F-F8B1-42ED-851B-51017CF4C161}]

Для х64
[HKEY_CURRENT_USER\Software\Classes\Wow6432Node\CLSID\{5F63E8CB-8F57-490A-97FE-62BC2F2A5EA4}\InprocServer32]
[HKEY_CURRENT_USER\Software\Classes\Wow6432Node\CLSID\{66B6B493-6055-4572-8FC1-A0FA86D63545}]
[HKEY_CURRENT_USER\Software\Classes\Wow6432Node\CLSID\{8D083C4F-F8B1-42ED-851B-51017CF4C161}]
Так вот, можно ли автоматом (в зависимости от системы) внести эти значения в реестр? Или хотя бы дать пользователю возможность выбрать какое из значений внести в реестр.
Если такое возможно - дайте код.

3. Можно ли сделать вот такое. Вместо того что бы выбирать в меню с лиц. соглашением "Я согласен" а потом нажимать "Далее", сделать кнопку "Принимаю" - нажал на нее и появился следующий диалог (желательно что бы кнопка "Принимаю" находилась на месте кнопки "Далее")?

gera777
24-12-2009, 16:09
Создаю инсталлятор для одной проги возникло пару вопросов. Буду очень признателен, если посоветуете что-то.

1. Есть ли команды для Командной строки? Но не для уже собранного инсталлятора, а для скрипта(т.е. менять настройки типа AppName, AppVerName). В общем мне надо менять AppVerName автоматически - до того как собереться инсталлятор. Возможно ли это?

2. Довольно глупо, но не смог найти. Как добавить кнопку "New Folder" для Browse for Folder в Select Destination Location. Странно, но у меня она не отображается.

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

lmiol
24-12-2009, 16:45
1. Есть ли команды для Командной строки? Но не для уже собранного инсталлятора, а для скрипта(т.е. менять настройки типа AppName, AppVerName). В общем мне надо менять AppVerName автоматически - до того как собереться инсталлятор. Возможно ли это?

Да в папке с инсталятором есть папка Language найди там Russian.lng и открой блокнотом там можешь подправить что нужно
или есть второй вариант прям в скрипте вписать нужные тебе строки
[Messages]
BeveledLabel=Copyright © Mio Dark Project
WelcomeLabel1=Вас приветствует Мастер обновления [name]
WelcomeLabel2=Программа обновит [name] (до версии 0.1.0 270 за 11.11.09) на Вашем компьютере.%n%nРекомендуется закрыть все прочие приложения перед тем, как продолжить.
ClickNext=Нажмите «Далее», чтобы продолжить, или «Отмена», чтобы выйти из программы обновления.
SetupAppTitle=Обновление
SetupWindowTitle=Обновление %1
WizardReady=Всё готово к обновлению
ReadyLabel1=Программа обновления готова начать обновление [name].
WizardInstalling=Обновление...
InstallingLabel=Пожалуйста, подождите, пока [name] обновится на Вашем компьютере.
ReadyLabel2b=Нажмите «Обновить», чтобы продолжить.
ButtonInstall=&Обновить
ExitSetupTitle=Выход из программы обновления
ExitSetupMessage=Обновление не завершено. Если Вы выйдете, программа не будет обновлена.%n%nВы сможете завершить обновление, запустив программу обновления позже.%n%nВыйти из программы обновления?
FinishedHeadingLabel=Завершение Мастера обновления [name]
FinishedLabelNoIcons=Программа [name] обновлена на Вашем компьютере.
ClickFinish=Нажмите «Завершить», чтобы выйти из программы обновления.

всё с последним кодом разобрался спасибо сергей,,,, осталось нати тестеров для проверки




© OSzone.net 2001-2012