Войти

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

AlekseyPopovv
26-06-2015, 09:49
habib2302, Заменить команду /DIR на /D
function GetDirFromCMD(kWord: string): string;
var
i, lStr: integer;
begin
Result := WizardDirValue;
lStr := Length(kWord);
for i := 0 to ParamCount do begin
if Pos(LowerCase(kWord), LowerCase(ParamStr(i))) > 0 then begin
Result := Copy(ParamStr(i), Pos(LowerCase(kWord), LowerCase(ParamStr(i))) + lStr,
Length(ParamStr(i)) - lStr);

while (Result[1] = '"') and (Result[Length(Result)] = '"') do
begin
Delete(Result, Length(Result), 1);
Delete(Result, 1, 1);
end;
end;
if Result <> WizardDirValue then
Break;
end;
end;

procedure InitializeWizard();
begin
WizardForm.DirEdit.Text := GetDirFromCMD('/D='); // можно поменять на любую букву
end;
Как Заменить команду /LANG на /L и Заменить команду /COMPONENTS на /C не знаю.

PlanktoN
27-06-2015, 17:19
как показать TasksList через CurPageChanged; (Как в скрипте от Serega.)

AlekseyPopovv
28-06-2015, 19:17
Помогите чтоб был виден текст на Выборе задач,Выборе Группы для Ярлыков и Страница Установки FreeArc(Просто там не виден текст какой файл распаковывается сколько времени осталось) »
Пока не понятно что вы хотите? Почему там текст не виден?... Пишите скрипт.

Как перед запуском инсталлятора проверить подключен ли компьютер к интернет? Если интернет подключен, то выдать сообщение "Имеется активное подключение к интернет! Отключите интернет и попробуйте снова!" (mb_ok), если нет то продолжить установку.

kotyarko@fb
28-06-2015, 19:48
Как перед запуском инсталлятора проверить подключен ли компьютер к интернет? »
Например, так:
Function InternetGetConnectedState(var lpdwFlags: DWORD; dwReserved: DWORD): Boolean;
external 'InternetGetConnectedState@wininet.dll stdcall';

Function InitializeSetup(): Boolean;
begin
if not InternetGetConnectedState(ConnectionState, 0) then
Result := True
else
begin
MsgBox('Имеется активное подключение к интернет! Отключите интернет и попробуйте снова!', mbError, MB_OK);
Result := False;
end;
end;

Есть и такой вариант (http://forum.oszone.net/post-1860073-827.html).

AlekseyPopovv
28-06-2015, 20:31
kotyarko@fb, В первом варианте вообще не собирается скрипт, во втором варианте всё собирается, но всегда пишет что интернета нет и продолжает установку!

Dodakaedr
29-06-2015, 00:07
В первом варианте вообще не собирается скрипт »
Попробуйте так:[setup]
appname=app
appversion=1.0
defaultdirname={sd}\app

[Code]
var
ConnectionState: DWORD;

Function InternetGetConnectedState(var lpdwFlags: DWORD; dwReserved: DWORD): Boolean;
external 'InternetGetConnectedState@wininet.dll stdcall';

Function InitializeSetup(): Boolean;
begin
if not InternetGetConnectedState(ConnectionState, 0) then
Result := True
else
begin
MsgBox('Имеется активное подключение к интернет! Отключите интернет и попробуйте снова!', mbError, MB_OK);
Result := False;
end;
end;

AlekseyPopovv
29-06-2015, 04:40
Dodakaedr, Ваш код работает. Но у меня вылазит ошибка сразу после нажатия "ок". Это мешает:
procedure DeinitializeSetup();
begin
ISWin7DeInit;
end;
Как с ней быть?

Dodakaedr
29-06-2015, 07:12
Как с ней быть? »
[setup]
appname=app
appversion=1.0
defaultdirname={sd}\app

[Code]
var
ConnectionState: DWORD;
Int: boolean;

Function InternetGetConnectedState(var lpdwFlags: DWORD; dwReserved: DWORD): Boolean;
external 'InternetGetConnectedState@wininet.dll stdcall';

Function InitializeSetup(): Boolean;
begin
if not InternetGetConnectedState(ConnectionState, 0) then
Result := True
else
begin
MsgBox('Имеется активное подключение к интернет! Отключите интернет и попробуйте снова!', mbError, MB_OK);
Result := False;
end;
end;

procedure InitializeWizard();
begin
Int := True;
end;

procedure DeinitializeSetup();
begin
if Int <> False then
begin
ISWin7DeInit;
end;
end;

habib2302
29-06-2015, 10:28
доброе время суток. подскажите пожалуйста код для ansi на проверку на наличие файла перед распаковкой файлов
у меня есть один код, но при компиляции выдает ошибку
[code]
var found: boolean;

procedure NextButtonClick (CurPageID: integer): boolean;
begin
if CurPageID=wpSelectDir then
begin
if not FileExists(AddBackslash(WizardForm.DirEdit.text) + 'CaptureDotNetRes.dll') then
begin
found:=false;
result:=false;
MsgBox('Отсутствуют некоторые файлы. Установка будет прервана!', MBinformation, mb_OK)
WizardForm.Close;
end
else
begin
found:=true;
result:=true;
end;
end
end;

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
if ((CurPageID= wpSelectDir )and (not found)) then
begin
cancel:=true;
confirm:=false;
end;
end;

TryRooM
29-06-2015, 14:09
habib2302, Так пойдет. На любой версии.

var
error : Boolean;
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := true;
error := false;
if CurPageID=wpSelectDir then begin
Result := FileExists(ExpandConstant('{src}\file.test'))
if not Result then begin
MsgBox('Отсутствуют некоторые файлы. Установка будет прервана!', mbError, MB_OK);
error := true;
WizardForm.CancelButton.OnClick(WizardForm.CancelButton);
end;
end;
end;

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
Confirm:=False;
end;

PlanktoN
29-06-2015, 18:31
Я про фоновое изображение. При накладывании изображения текст становится не виден. Как показать? Имено через CurPageChanged и именно TasksList

icetanker
01-07-2015, 08:50
как добавить в инсталлятор поддержку Windows 8,8.1 и 10?(не обновляя программу)

PlanktoN
01-07-2015, 11:48
Думаю без кода должен поддерживаться на всех ОС. На крайняк: Режим Совместимости Windows.

icetanker
01-07-2015, 13:30
Думаю без кода должен поддерживаться на всех ОС. На крайняк: Режим Совместимости Windows. »
хотелось бы красиво,чтобы было,не нашел в справке как указать

Dodakaedr
01-07-2015, 16:43
хотелось бы красиво,чтобы было »
В смысле?

PlanktoN
01-07-2015, 22:56
Ты про Metro стиль?? Типа на Windows 7 такая тема, на Win 8, 8.1, 10 был Metro?? Два стиля в одном инсталле.Слмневаюсь что такое может быть. Если есть то код будет длинным думаю.

ekspoint
02-07-2015, 05:59
Я про фоновое изображение. При накладывании изображения текст становится не виден. Как показать? Имено через CurPageChanged и именно TasksList »
тоесть ты хочешь фон на таск лист?

icetanker
02-07-2015, 08:57
Dodakaedr, мне нужно добавить в манифест инсталлятора совместимость с Win 8/2012/8.1/2012 R2/10,сейчас если ничего не прописываю манифест Win XP/2003/Vista/2008/7/2008 R2

El Sanchez
02-07-2015, 10:49
мне нужно добавить в манифест инсталлятора совместимость с Win 8/2012/8.1/2012 R2/10,сейчас если ничего не прописываю манифест Win XP/2003/Vista/2008/7/2008 R2 »
icetanker, это потому что китайской версией пользуетесь, собранной на устаревшей версии 5.5.1. На данный момент в последней (5.5.5) официальной версии в манифесте декларирована совместимость с ОС до Win 10. Win 10 будет в будущей 5.5.6. Если очень хочется на китайской версии, то приводить supportedOS в манифесте готового инсталлятора редактором ресурсов к такому виду (https://raw.githubusercontent.com/jrsoftware/issrc/master/Projects/Compil32.manifest.txt).

Irenis
02-07-2015, 15:30
Всем привет :) Помогите пожалуйста. Нужно создать установщик, который бы распаковывал две папки, одну туда куда укажет пользователь, на любой диск, в любую папку, а вторая чтоб принудительно распаковалась просто на диск без всяких подпапок (но именно на тот диск, куда укажет пользователь в целом для приложения).Например, устанавливает пользователь приложение, указывает путь Е/Games/Игра, и вот какая то часть туда и установилась, а другая часть просто по пути Е/Приложение. Возможно ли так сделать? Спасибо, буду надеяться на ответы))




© OSzone.net 2001-2012