PDA

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

ZVSRus
03-12-2015, 21:15
Dodakaedr, А можно поподробнее

vint56
04-12-2015, 11:34
ZVSRus,
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
DisableProgramGroupPage=yes

[Code]
var
GroupBox1,GroupBox2: TNewGroupBox;

procedure InitializeWizard();
begin
GroupBox1 := TNewGroupBox.Create(WizardForm);
with GroupBox1 do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(75);
Width := ScaleX(417);
Height := ScaleY(65);
end;
GroupBox2 := TNewGroupBox.Create(WizardForm);
with GroupBox2 do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(150);
Width := ScaleX(417);
Height := ScaleY(65);
end;
with WizardForm.DirEdit do
begin
Left := ScaleX(10);
Top := ScaleY(20);
Width := ScaleX(310);
Parent := GroupBox1;
end;
with WizardForm.DirBrowseButton do
begin
Left := ScaleX(330);
Top := ScaleY(20);
Parent := GroupBox1;
end;
with WizardForm.GroupEdit do
begin
Left := ScaleX(10);
Top := ScaleY(20);
Width := ScaleX(310);
Parent := GroupBox2;
end;
with WizardForm.GroupBrowseButton do
begin
Top := ScaleY(20);
Left := ScaleX(330);
Parent := GroupBox2;
end;
end;

ZVSRus
04-12-2015, 23:11
Ребята помогите пожалуйста.
Скрипт
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
OutputDir=.
UsePreviousAppDir=no
UsePreviousGroup=no

[Code ]
var
Component: TWizardPage;

Panel1: TPanel;
Bevel1: TBevel;

InstallerGroupBox: TNewGroupBox;
Installer: TNewRadioButton;
Portable: TNewRadioButton;

IconsGroupBox: TNewGroupBox;
DesktopIcon: TNewCheckBox;
PuskIcon: TNewCheckBox;
PanelZadach: TNewCheckBox;
PanelPusk: TNewCheckBox;

function InstallerCheck: Boolean;
begin
Result := Installer.Checked;
end;

function PortableCheck: Boolean;
begin
Result := Portable.Checked;
end;

function DesktopIconCheck: Boolean;
begin
Result:= DesktopIcon.Checked;
end;

function PuskIconCheck: Boolean;
begin
Result:= PuskIcon.Checked;
end;

function PanelZadachCheck: Boolean;
begin
Result:= PanelZadach.Checked;
end;

procedure CompClick(Sender: TObject);
begin
case TNewRadioButton(Sender) of
Portable:
begin
DesktopIcon.Checked:=False;
DesktopIcon.Enabled:= DesktopIcon.Checked;
PuskIcon.Checked:=False;
PuskIcon.Enabled:= PuskIcon.Checked;
PanelZadach.Checked:=False;
PanelZadach.Enabled:= PanelZadach.Checked;
PanelPusk.Checked:=False;
PanelPusk.Enabled:= PanelPusk.Checked;
end;

Installer:
begin
DesktopIcon.Checked:=True;
DesktopIcon.Enabled:= DesktopIcon.Checked;
PuskIcon.Checked:=True;
PuskIcon.Enabled:= PuskIcon.Checked;
PanelZadach.Checked:=true;
PanelZadach.Enabled:= PanelZadach.Checked;
PanelPusk.Checked:=True;
PanelPusk.Enabled:= PanelPusk.Checked;
end;
end;
end;

procedure InitializeWizard();
begin
Component := CreateCustomPage(wpWelcome, 'Выбор типа установки', '...');

with WizardForm.InnerNotebook do
begin
Left := ScaleX(20);
Top := ScaleY(60);
Width := ScaleX(457);
Height := ScaleY(250);
end;

Panel1 := TPanel.Create(WizardForm);
with Panel1 do
begin
Parent := Component.Surface;
Left := ScaleX(0);
Top := ScaleY(0);
Width := ScaleX(457);
Height := ScaleY(250);
end;

Bevel1 := TBevel.Create(WizardForm);
with Bevel1 do
begin
Parent := Panel1;
Left := ScaleX(5);
Top := ScaleY(5);
Width := ScaleX(447);
Height := ScaleY(240);
end;

InstallerGroupBox := TNewGroupBox.Create(WizardForm);
with InstallerGroupBox do
begin
Parent := Panel1;
Left := ScaleX(10);
Top := ScaleY(8);
Width := ScaleX(210);
Height := ScaleY(64);
Caption := 'Тип установки:';
end;

Installer := TNewRadioButton.Create(WizardForm);
with Installer do
begin
Parent := InstallerGroupBox;
Left := ScaleX(10);
Top := ScaleY(14);
Width := ScaleX(195);
Height := ScaleY(17);
Caption := 'Установка обычной версии';
Checked := True
OnClick:=@CompClick;
end;

Portable := TNewRadioButton.Create(WizardForm);
with Portable do
begin
Parent := InstallerGroupBox;
Left := ScaleX(10);
Top := ScaleY(39);
Width := ScaleX(195);
Height := ScaleY(17);
Caption := 'Распаковка портативной версии';
OnClick:=@CompClick;
end;

IconsGroupBox := TNewGroupBox.Create(WizardForm);
with IconsGroupBox do
begin
Parent := Panel1;
Left := ScaleX(10);
Top := ScaleY(80);
Width := ScaleX(210);
Height := ScaleY(114);
Caption := 'Компоненты:';
end;

DesktopIcon := TNewCheckBox.Create(WizardForm);
with DesktopIcon do
begin
Parent := IconsGroupBox;
Left := ScaleX(10);
Top := ScaleY(14);
Width := ScaleX(195);
Height := ScaleY(17);
Caption := 'Ярлык на рабочем столе';
Checked := True
end;

PuskIcon := TNewCheckBox.Create(WizardForm);
with PuskIcon do
begin
Parent := IconsGroupBox;
Left := ScaleX(10);
Top := ScaleY(39);
Width := ScaleX(195);
Height := ScaleY(17);
Caption := 'Ярлык в меню Пуск';
Checked := True
end;

PanelZadach := TNewCheckBox.Create(WizardForm);
with PanelZadach do
begin
Parent := IconsGroupBox;
Left := ScaleX(10);
Top := ScaleY(64);
Width := ScaleX(195);
Height := ScaleY(17);
Caption := 'Закрепить на панели задач';
Checked := False
end;

PanelPusk := TNewCheckBox.Create(WizardForm);
with PanelPusk do
begin
Parent := IconsGroupBox;
Left := ScaleX(10);
Top := ScaleY(89);
Width := ScaleX(195);
Height := ScaleY(17);
Caption := 'Закрепить в меню Пуск';
Checked := False
end;
end;

Как сделать что-бы при возвращении с Portable распаковки на Installer установку
два нижних чекбокса были видны но галочки не стояли.
Нужно что-то поменять, не знаю что.

TryRooM
04-12-2015, 23:45
ZVSRus, Так

Installer:
begin
DesktopIcon.Checked:=True;
DesktopIcon.Enabled:= DesktopIcon.Checked;
PuskIcon.Checked:=True;
PuskIcon.Enabled:= PuskIcon.Checked;
PanelZadach.Checked:=False;
PanelZadach.Enabled:=True;
PanelPusk.Checked:=False;
PanelPusk.Enabled:= True;
end;
end;
end;

habib2302
05-12-2015, 18:18
помогите переместить на задний план NewGroupBox1
[Code]
var
NewGroupBox1: TNewGroupBox;

procedure InitializeWizard;
begin
with WizardForm.DirBrowseButton do
begin
Left := ScaleX(326);
Top := ScaleY(128);
end;

with WizardForm.DirEdit do
begin
Left := ScaleX(16);
Top := ScaleY(129);
Width := ScaleX(300);
end;

{ NewGroupBox1 }
NewGroupBox1 := TNewGroupBox.Create(WizardForm);
with NewGroupBox1 do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(104);
Width := ScaleX(417);
Height := ScaleY(57);
Caption := 'NewGroupBox1';
end;

NewGroupBox1.TabOrder := 5;
end;

Мой скрипт (https://yadi.sk/d/nZry8Xtekzdqz)

TryRooM
05-12-2015, 19:37
habib2302,
Пробуйте
http://rghost.ru/8td6vQNGj

ZVSRus
05-12-2015, 19:48
помогите переместить на задний план NewGroupBox1
Если Вы имеете ввиду NewCroupBox1 сделать подложкой под стандартные диалоги,
то чуть выше скрипт от vint56

ZVSRus
12-12-2015, 22:05
Всем Доброе время суток.
Может кто знает, как в оригинальный INNO установщик запихнуть DLL,ку,
и прописать ее в реестре, что-бы при деинсталляции она удалялась.

vadjliss
13-12-2015, 14:17
парни что сделать если программа больше 5 гигов,а то выдаёт ошибку
я в setap прописал DiskSliceSize=1987570657
результат нулевой
http://fs5.directupload.net/images/151213/temp/3ltx5q6w.jpg (http://fs5.directupload.net/images/151213/3ltx5q6w.jpg)

kotyarko@fb
13-12-2015, 20:46
vadjliss, [Setup]
DiskSpanning=yes

Stealthmax
13-12-2015, 21:55
Доброе время суток. Помогите с кодом. Пытаюсь выполнить удаление файлов через unlocker, но происходит "exit code: 1" после запуска »
Дружище, зачем такой изврат? Все банальнее и проще:[_Code]
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
ErrorCode: Integer;
begin
case CurUninstallStep of
usPostUninstall:
begin
//отмена регистрации *.dll
Exec(ExpandConstant('{sys}')+'\regsvr32.exe', '/u /s ' + ExpandConstant('{pf}') + '\WinRar\RarExt.dll', '', SW_HIDE, ewWaitUntilTerminated, ErrorCode);
//освобождаем dll-ку перезапуском Проводника
Exec('cmd', '/C WMIC PROCESS WHERE Name="explorer.exe" delete & WMIC PROCESS WHERE Name="explorer.exe" call SetPriority 64', '', sw_hide, ewWaitUntilTerminated, ErrorCode);
//Exec('cmd', '/C WMIC PROCESS WHERE Name="explorer.exe" CALL Terminate', '', sw_hide, ewWaitUntilTerminated, ErrorCode); // либо этот вариант
//далее удаляем папки, файлы
end;
end;
В любом случае, Unlocker при выполнении команды принудительно перезапустит оболочку Проводника. Так что лишние телодвижения ни к чему.

ZVSRus
16-12-2015, 18:14
Парни подскажите, как сделать чтобы файл удалялся вместе со всеми файлами при деинсталляции.
Файл (DLL) добавлен в дистрибутив отдельно для регистрации.

sergey3695
17-12-2015, 17:14
ZVSRus,
[UninstallDelete]
Type: FilesAndOrDirs; Name: {app};

ZVSRus
17-12-2015, 18:31
sergey3695,
[UninstallDelete]
Type: FilesAndOrDirs; Name: {app};
Результат нулевой, как не удалялся, так и не удаляется.
Наверное надо как-то через скрипт.

Nordek
17-12-2015, 20:01
Файл (DLL) добавлен в дистрибутив отдельно для регистрации. »Смотрите флаг regserver - При установке регистрирует, при деинсталляции отменяет регистрацию.
Т.е:
[Files]
Source: example.dll; DestDir: {app}; Flags: regserver

ZVSRus
17-12-2015, 20:44
Source: example.dll; DestDir: {app}; Flags: regserver
Результат нулевой. Деинстоллятором не удаляется. Вручную легко.
Когда msimg32.dll находится в папке с программой, программа становится зарегестрированной.
Если ее убрать программа не зарегестрирована.
Прога Light Image Resizer 4.7.6.1

TryRooM
17-12-2015, 21:19
ZVSRus, Наверное надо как-то через скрипт. »


Procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if (CurUninstallStep = usPostUninstall) then
UnloadDLL(ExpandConstant('{app}\msimg32.dll'));
DeleteFile(ExpandConstant('{app}\msimg32.dll'));
end;

ZVSRus
17-12-2015, 21:40
Наверное надо как-то через скрипт
DLL,ка удалилась но остались папки в которой она находилась.
наверное надо что-то дописать к процедуре.

Nordek
17-12-2015, 23:06
msimg32.dll »GDIEXT Client DLL уже есть и в Windows XP и в Windows 7 в папке System32.

наверное надо что-то дописать »
DelTree(ExpandConstant('{app}'), True, True, True);

ZVSRus
17-12-2015, 23:28
DelTree(ExpandConstant('{app}'), True, True, True);
Удаляет все в чистую в таком виде:

UnloadDLL(ExpandConstant('{app}\msimg32.dll'));
DeleteFile(ExpandConstant('{app}\msimg32.dll'));
DelTree(ExpandConstant('{app}'), True, True, True);
RemoveDir(ExpandConstant('{app}'));
RemoveDir(ExpandConstant('{pf}\ObviousIdea'));

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




© OSzone.net 2001-2012