PDA

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


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

SatHan
12-09-2012, 02:18
у значков в панели задач (куда функция El Sanchez-а их закрепляет нет имени) »это наверно то когда наводишь и показывается имя ярлыка? Так это наверно комментарий (подсказка) а не название ярлыка. а у панели не замечал чтоб ещё название было.

Aleksoid1978
12-09-2012, 02:26
Johny777
Да это обычный ярлык на самом деле, только "закрепленный" на панели задач.
вот все мои "значки" с панели
http://s53.radikal.ru/i141/1209/42/540efaab9670t.jpg (http://radikal.ru/F/s53.radikal.ru/i141/1209/42/540efaab9670.png.html)
видим имя ярлыка для Оперы(она сама его так сделала при установке)
и вот как показывается на панели задач.
http://s017.radikal.ru/i436/1209/86/697ddec58d36t.jpg (http://radikal.ru/F/s017.radikal.ru/i436/1209/86/697ddec58d36.png.html)

Johny777
12-09-2012, 02:28
SatHan,
только что прикрепил
PinToTaskbarWin7('C:\hl2.exe') - просто положил экзешник в C
всплыла подсказка "Half-Life 2"

http://img689.imageshack.us/img689/8270/51289086.png (http://imageshack.us/photo/my-images/689/51289086.png/)
хех
даже винда знает об этой игре! :)

и вот как показывается на панели задач. »
аналогично

http://img402.imageshack.us/img402/4250/16305614.png (http://imageshack.us/photo/my-images/402/16305614.png/)

SatHan
12-09-2012, 02:31
даже винда знает об этой игре! »у игр и приложений обычно должно так быть, ещё кроме "производитель", "дата" - в свойства эксешника посмотри, есть?

Johny777
12-09-2012, 02:37
"производитель", "дата" - в свойства эксешника посмотри, есть? »
есть цифровая подпись продлённая до конца этого года
дата есть
вот
изучай

MogilShik2007
12-09-2012, 06:32
Johny777, спасибо, а не подскажешь как прикрутить огонь на последнюю страницу?

Aleksoid1978
12-09-2012, 08:30
Нашел косяк в скрипте Закрепления на панели задач - если в х64 битной системе и файл расположен по пути "C:\Program Files\..." - то значок программы закреплаяется, но если запустить программу - создается еще один значок, уже запущенной задачи на панели задач, если закрепить из пути "C:\Program Files (x86)\..." - то все ок. Разрядность программы при этом не имеет значения.

P.S. - как верно закрепить нашел, вот кусок

if IsWin64 and (Pos (ExpandConstant ('{pf64}\'), Filename) = 1) then begin
sVBSFile := GenerateUniqueName (GetTempDir, 'mpc_be.vbs');

SaveStringToFile (sVBSFile, \
'Set oShell=CreateObject("Shell.Application")' + #13 + \
'Set oVerbs=oShell.NameSpace("' + ExtractFileDir (Filename) + '").ParseName("' + ExtractFileName (Filename) + '").Verbs' + #13 + \
'For Each oVerb In oVerbs' + #13 + \
' If (oVerb="' + strVerb + '") Then' + #13 + \
' oVerb.DoIt' + #13 + \
' Exit For' + #13 + \
' End If' + #13 + \
'Next' , False);

ExecAsOriginalUser (ExpandConstant ('{win}\Sysnative\cscript.exe'), '"' + sVBSFile + '" /B', '', SW_HIDE, ewWaitUntilTerminated, i);
DeleteFile (sVBSFile);
end

Закрепляется нормально, но вот открепиться нормально не может.

P.S. - все разобрался.

Ivan_009
12-09-2012, 09:02
Как наложить кнопки свернуть и закрыть через ботву...Подскажите кто знает...

Johny777
12-09-2012, 16:42
изменил код из шапки "поиск по маске" под свои нужды
кому пригодится забирайте:

[Setup]
AppName=Reg_Path_Demo
AppVerName=Reg_Path_Demo
DefaultDirName={pf}\Reg_Path_Demo


[ code]
function FindFileByMask(Path, Mask: string): Boolean;
var
FSR: TFindRec;
FindResult: Boolean;
begin
Result:= False;
if Path[Length(Path)] <> '\' then Path:= Path + '\';
FindResult:= FindFirst(Path + Mask, FSR);
try
while FindResult do
begin
if FSR.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then
begin
Result:= True;
Exit;
end;
FindResult:= FindNext(FSR);
end;
finally
FindClose(FSR);
end;
end;


procedure InitializeWizard();
begin
/// использование
///FindFileByMask(...........путь к папке...........,маска(расширение))
if FindFileByMask(ExpandConstant('{pf}\Inno Setup 5'), '*.dll') = True then MsgBox('ok', mbInformation, MB_OK);
end;


Ivan_009,
извиняй
ботву не знаю :(

vint56
12-09-2012, 17:26
Как наложить кнопки свернуть и закрыть через ботву...Подскажите кто знает...
http://rghost.ru/40324331

nik1967
12-09-2012, 20:27
Ivan_009, vint56, #include "botva2.iss"

#define CloseBtnPic "closebtn.png"
#define MinimizeBtnPic "minimizebtn.png"

[Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program
SolidCompression=yes
Compression=lzma2/ultra64

[Files]
Source: Files\*; DestDir: "{tmp}"; Flags: dontcopy sortfilesbyextension

[ Code]
var
hMinimizeBtn,
hCloseBtn: HWND;


function InitializeSetup:boolean;
begin
if not FileExists(ExpandConstant('{tmp}\botva2.dll')) then ExtractTemporaryFile('botva2.dll');
Result:=True;
end;

procedure CloseBtnClick(hBtn:HWND);
begin
WizardForm.Close;
end;

procedure MinimizeBtnClick(hBtn:HWND);
begin
SendMessage(WizardForm.Handle,$0112,61472,0);
end;

procedure InitializeWizard;
begin
ExtractTemporaryFile('{#CloseBtnPic}');
ExtractTemporaryFile('{#MinimizeBtnPic}');
with WizardForm do begin
BorderStyle:=bsNone;
Bevel.Hide;
InnerNotebook.Hide;
OuterNotebook.Hide;
Width:=640;
Height:=240;
Position:=poScreenCenter;
Color := cl3DDkShadow;
end;

hCloseBtn:=BtnCreate(WizardForm.Handle,556,5,22,22,ExpandConstant('{tmp}')+'\{#CloseBtnPic}',3,False );
BtnSetEvent(hCloseBtn,BtnClickEventID,CallbackAddr('CloseBtnClick'));

hMinimizeBtn:=BtnCreate(WizardForm.Handle,529,5,22,22,ExpandConstant('{tmp}')+'\{#MinimizeBtnPic}',3 ,False);
BtnSetEvent(hMinimizeBtn,BtnClickEventID,CallbackAddr('MinimizeBtnClick'));
end;

procedure DeinitializeSetup;
begin
gdipShutdown;
end;

HElmo
12-09-2012, 20:43
Всем привет, что-то не получается с компонентами.
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "Mods"
#define MyAppVersion "1.0"
#define MyAppPublisher "Mods"
#define MyAppURL "Mods"

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{5ACDEBF9-5182-444F-B068-0B3C07C67F44}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName=D:\Games\World of tanks\World_of_tanks\res_mods\{#MyAppName}
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
OutputDir=C:\Users\Admin\Desktop
OutputBaseFilename=ModsHelmo
Compression=lzma
SolidCompression=yes

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

[Types]
Name: "Full"; Description: "Полная установвка"
Name: "Custom"; Description: "Выборочная установка"

[Components]
Name: "Pricels"; Description: "Все прицелы"; Types: Custom Full
Name: "DamagePanel"; Description: "Панель урона"; Types: Custom Full
Name: "Clock"; Description: "Часы+калькулятор в ангаре"; Types: Custom Full

[Files]
Source: "D:\GAMES\World of tanks\World_of_Tanks\res_mods\0.7.5\gui\flash\crosshair_panel_arcade.swf"; DestDir: "{app}"; DestName: "Аркадный"; Flags: ignoreversion; Components: Pricels
Source: "D:\GAMES\World of tanks\World_of_Tanks\res_mods\0.7.5\gui\flash\crosshair_panel_postmortem.swf"; DestDir: "{app}"; DestName: "Дополнения"; Flags: ignoreversion; Components: Pricels
Source: "D:\GAMES\World of tanks\World_of_Tanks\res_mods\0.7.5\gui\flash\crosshair_panel_sniper.swf"; DestDir: "{app}"; DestName: "Снайперский(стратегический)"; Flags: ignoreversion; Components: Pricels
Source: "D:\GAMES\World of tanks\World_of_Tanks\res_mods\0.7.5\gui\flash\crosshair_panel_strategic.swf"; DestDir: "{app}"; DestName: "Артилерийский(стратегический)"; Flags: ignoreversion; Components: Pricels
Source: "D:\GAMES\World of tanks\World_of_Tanks\res_mods\0.7.5\gui\flash\crosshair_sniper.swf"; DestDir: "{app}"; DestName: "Снайперский"; Flags: ignoreversion; Components: Pricels
Source: "D:\GAMES\World of tanks\World_of_Tanks\res_mods\0.7.5\gui\flash\crosshair_strategic.swf"; DestDir: "{app}"; DestName: "Артилерийский"; Flags: ignoreversion; Components: Pricels
Source: "D:\GAMES\World of tanks\World_of_Tanks\res_mods\0.7.5\gui\flash\DamagePanel.swf"; DestDir: "{app}"; DestName: "Damage Panel"; Flags: ignoreversion; Components: DamagePanel
Source: "D:\GAMES\World of tanks\World_of_Tanks\res_mods\0.7.5\gui\flash\logos.swf"; DestDir: "{app}"; DestName: "Часы"; Flags: ignoreversion; Components: Clock
Но при запуске инсталлятора, просто выбор: полная или выборочная, но нету где что отмечать галочками. Справку читал, вроде все как там делаю...Помогите..

Gnom_aka_Lexander
12-09-2012, 20:45
HElmo, а так?

[Types]
Name: "Full"; Description: "Полная установвка"; Flags : iscustom;

HElmo
12-09-2012, 20:56
Gnom_aka_Lexander, Точно, совсем забыл!! Спасибо. А можно где-нибудь прописать, что бы не создавался деинсталлятор? Заранее спасибо.

R.i.m.s.k.y.
12-09-2012, 21:01
HElmo,
Вот держи рабочий код сразу на два твоих вопроса, и даже больше чтобы несколько раз дверью не скрипеть

//универсальная переменная названия дистрибутива
# define SmoothVideoProject "SmoothVideoProject v.3.1"

[Setup]
// не создавать деинсталятор
Uninstallable=false

[Types]
// типы установки
Name: full; Description: Рекомендуемая (полная) установка
Name: compact; Description: Минимальная установка
Name: custom; Description: Выборочная установка; Flags: iscustom

[Components]
// для каждого типа установки - свой набор компонентов
Name: SmoothVideoProject; Description: {#SmoothVideoProject}; Types: full
Name: SVPtube; Description: {cm:SVPtube}; Types: compact;
Name: LAV; Description: {cm:mpclavreg}; Types: custom;

[Languages]
// языки инсталлера
Name: russian; MessagesFile: compiler:Languages\Russian.isl;
Name: english; MessagesFile: compiler:Languages\English.isl;

[CustomMessages]
// сообщения в списке компонентов в зависимости от выбранного языка
english.SVPtube=SVPTube v.1.0 (Play YouTube clips in you favorite player)
russian.SVPtube=SVPTube v.1.0 (Воспроизведение роликов YouTube в любимом плеере)
english.mpclavreg=Install and register LAV
russian.mpclavreg=Установить и зарегистрировать LAV

__________

Сообщение помогло? Жми "полезное сообщение" внизу поста

HElmo
12-09-2012, 21:27
R.i.m.s.k.y., спасибо, очень помог!!! Все получилось, рад, что есть такие люди.

Ivan_009
12-09-2012, 21:44
Как можно решить проблему с текструированной кнопкой отмена через ботву... Дело в том, что когда я переключаю на ssPostInstall
невозможно отменить установку... Вернее можно но только один раз :o
Вот код наложения кнопок...

R.i.m.s.k.y.
12-09-2012, 22:38
HElmo, да не за что, это я тут поднаторел, вот должок возвращаю ;)

SatHan
13-09-2012, 14:34
Johny777, Ну да ошибочка вышла.
Вот он скрин
http://img24.imageshack.us/img24/3205/65705569.png
если создать ярлык на рабочем столе и обозвать любым именем после закрепить на панели то при наведении такое же имя будет и на панели.
насколько понял нужно что-то вроде {#выделил красным}
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchiconэтого.
Если код каким то образом находит имя и приписывает его к ярлыку - это конечно не понятно от куда берёт. А вот как его задать на своё (Например я хочу чтоб hl.exe назывался не Half-Life а Half-Life-Моя Игра). Как это сделать? В коде ничего знакомого не нашёл.

MogilShik2007
13-09-2012, 17:39
Johny777 как через TextModule на последней странице текст возле чекбокса разрисовать, мол запустить игру такую-то, а название игры своим текстом?




© OSzone.net 2001-2012