|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 9] |
|
Скрипты Inno Setup. Помощь и советы [часть 9]
|
Ветеран Сообщения: 1264 |
Профиль | Отправить PM | Цитировать
Внимание! Данная тема предназначена только для обсуждения написания скриптов!
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Скрипты Inno Setup. Помощь и советы [часть 6] | Скрипты Inno Setup. Помощь и советы [часть 6].7z Скрипты Inno Setup. Помощь и советы [часть 7] | Скрипты Inno Setup. Помощь и советы [часть 7].7z Скрипты Inno Setup. Помощь и советы [часть 8] | Скрипты Inno Setup. Помощь и советы [часть 8].7z |
|
Отправлено: 16:09, 04-04-2018 |
Пользователь Сообщения: 96
|
Профиль | Отправить PM | Цитировать ZVSRus,
Setup
[Setup]
MinVersion = 0.0,5.01 ShowLanguageDialog = yes #define AppExe "{app}\Program.exe" #define AppName "Program" #define AppVerName = "Program 1.0" #define AppVer "1.0" AppName = {#AppName} AppVerName = {#AppVerName} AppVersion = {#AppVer} AppPublisher = {#AppPub} AppPublisherURL = {#AppURL} AppId = {#AppName} UninstallDisplayIcon = {#AppExe} VersionInfoVersion = {#AppVer} AppComments = "Program" DefaultDirName = "{pf}\Program\Program" DefaultGroupName = "Program\Program" DisableWelcomePage = no AlwaysUsePersonalGroup = yes AllowNoIcons = yes SetupIconFile = Image\Setup.ico WizardImageFile = Image\WizardImage.bmp WizardSmallImageFile = Image\WizardSmallImage.bmp |
Последний раз редактировалось DA-Bro, 25-11-2022 в 01:41. Отправлено: 17:52, 17-11-2022 | #901 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 62
|
Профиль | Отправить PM | Цитировать Цитата DA-Bro:
|
|
Последний раз редактировалось Alex S, 17-11-2022 в 18:19. Причина: Правка текста Отправлено: 18:14, 17-11-2022 | #902 |
Старожил Сообщения: 284
|
Профиль | Отправить PM | Цитировать Ваш скрипт у меня работает правильно
#define AppExe "{app}\SSDToolBox.exe" #define AppName "ADATA SSD ToolBox" #define AppVerName = "ADATA SSD ToolBox 5.0.16" #define AppVer "5.0.16" #define AppPub "ADATA Technology Co., Ltd." #define AppCopyright "Copyright © 2020-2022, ADATA Technology Co., Ltd." #define AppDescription AppVerName #define AppURL "https://www.adata.com/" [Setup] MinVersion = 0.0,5.01 ShowLanguageDialog = yes AppName = {#AppName} AppVerName = {#AppVerName} AppVersion = {#AppVer} AppPublisher = {#AppPub} AppPublisherURL = {#AppURL} AppSupportURL = {#AppURL} AppUpdatesURL = {#AppURL} AppCopyright = {#AppCopyright} AppId = {#AppName} UninstallDisplayIcon = {#AppExe} VersionInfoDescription = {#AppDescription} VersionInfoVersion = {#AppVer} AppComments = "ADATA SSD ToolBox" DefaultDirName = "{pf}\ADATA\SSD ToolBox" DefaultGroupName = "ADATA\SSD ToolBox" OutputBaseFilename = ADATA.SSD.ToolBox DisableWelcomePage = no AlwaysUsePersonalGroup = yes AllowNoIcons = yes SetupIconFile = Setup.ico WizardImageFile = WizardImage.bmp //WizardSmallImageFile = Image\WizardSmallImage.bmp |
------- Отправлено: 18:26, 17-11-2022 | #903 |
Пользователь Сообщения: 62
|
Профиль | Отправить PM | Цитировать SetupIconFile = Image\Setup.ico
Если рядом со скриптом есть папка, в которой лежит твой файл значка Setup.ico, то все должно работать без проблем... |
Отправлено: 18:27, 17-11-2022 | #904 |
Пользователь Сообщения: 96
|
Профиль | Отправить PM | Цитировать ZVSRus, а кусок кода можно посмотреть который Вы проверяли.
Мне надо пример полностью увидеть, так то легче соображается. Вот вставляю я это: procedure NewIcon; begin var Icon: TNewIcon; begin Icon := TNewIcon.Create; ///Support True Color Icon.LoadFromFile(ExpandConstant('Image\Icon.ico')); Icon.Width := 16; ///Selected Icon Size (16x16 ; 32x32; 48x48 ......) Icon.Height := 16; ///Default Size: 32x32 WizardForm.Icon.Handle := Icon.Handle; end; |
Последний раз редактировалось DA-Bro, 17-11-2022 в 19:17. Отправлено: 19:01, 17-11-2022 | #905 |
Старожил Сообщения: 284
|
Профиль | Отправить PM | Цитировать DA-Bro
Выше var begin убери. Иконка и без этого куска кода работает. |
------- Отправлено: 19:16, 17-11-2022 | #906 |
Пользователь Сообщения: 96
|
Профиль | Отправить PM | Цитировать ZVSRus,
Цитата:
А мы об одном и том же говорим? Иконка должна заменить картинку в правом верхнем углу. Вот мне и попались в справке два варианта этих словами не скажешь злополучных кодов) |
|
Последний раз редактировалось DA-Bro, 25-11-2022 в 01:49. Отправлено: 19:50, 17-11-2022 | #907 |
Старожил Сообщения: 284
|
Профиль | Отправить PM | Цитировать DA-Bro
Это сообщение что Неизвестный тип TNewIcon. Без скрипта тяжело что либо понять. Показывай весь скрипт. |
------- Отправлено: 20:06, 17-11-2022 | #908 |
Пользователь Сообщения: 96
|
Профиль | Отправить PM | Цитировать ZVSRus,
...
[code]#define WildcardExists(str FileName) \
((Local[0] = FindFirst(FileName, faAnyFile)) ? \ (FindClose(Local[0]), True): False) #define FolderExists(str FolderName) \ ((Local[0] = FindFirst(FolderName, faDirectory)) ? \ (FindClose(Local[0]), True): False) #ifdef UNICODE #define AW "W" #define W "W" #else #define AW "A" #define W "" #endif { Функции, константы и типы WinAPI } const INVALID_HANDLE_VALUE = -1; LOAD_LIBRARY_AS_DATAFILE = $2; LOAD_LIBRARY_AS_IMAGE_RESOURCE = $20; ERROR_SUCCESS = $0; TH32CS_SNAPPROCESS = $2; PROCESS_TERMINATE = $1; SPI_SETSCREENSAVEACTIVE = $11; SPI_SETCURSORS = $57; SPIF_SENDCHANGE = $2; { GENERIC_READ = $80000000; GENERIC_WRITE = $40000000; GENERIC_EXECUTE = $20000000; GENERIC_ALL = $10000000; FILE_SHARE_READ = $1; FILE_SHARE_WRITE = $2; FILE_SHARE_DELETE = $4; CREATE_NEW = $1; CREATE_ALWAYS = $2; OPEN_EXISTING = $3; OPEN_ALWAYS = $4; TRUNCATE_EXISTING = $5; FILE_READ_ATTRIBUTES = $80; FILE_WRITE_ATTRIBUTES = $100; } type TProcessEntry32 = record dwSize : dword; cntUsage : dword; th32ProcessID : dword; th32DefaultHeapID : longint; th32ModuleID : dword; cntThreads : dword; th32ParentProcessID : dword; pcPriClassBase : longint; dwFlags : dword; szExeFile : Array[0..259] of Char; end; function CloseHandle (hObject: THandle): bool; external 'CloseHandle@kernel32.dll stdcall delayload'; function LoadLibraryEx (lpFileName: string; hFile: THandle; dwFlags: dword): THandle; external 'LoadLibraryEx{#AW}@kernel32.dll stdcall delayload'; function LoadString (hInstance: THandle; uID: longint; lpBuffer: String; nBufferMax: integer): integer; external 'LoadString{#AW}@user32.dll stdcall delayload'; function FreeLibrary (hModule: THandle): bool; external 'FreeLibrary@kernel32.dll stdcall delayload'; function CreateToolhelp32Snapshot (dwFlags, th32ProcessID: dword): THandle; external 'CreateToolhelp32Snapshot@kernel32.dll stdcall delayload'; function Process32First (hSnapshot: THandle; var lppe: TProcessEntry32): bool; external 'Process32First{#W}@kernel32.dll stdcall delayload'; function Process32Next (hSnapshot: THandle; var lppe: TProcessEntry32): bool; external 'Process32Next{#W}@kernel32.dll stdcall delayload'; function OpenProcess (dwDesiredAccess: dword; bInheritHandle: bool; dwProcessId: dword): THandle; external 'OpenProcess@kernel32.dll stdcall delayload'; function TerminateProcess (hProcess: THandle; uExitCode: longint): bool; external 'TerminateProcess@kernel32.dll stdcall delayload'; function SystemParametersInfo (uiAction: dword; uiParam: variant; var pvParam: variant; fWinIni: dword): bool; external 'SystemParametersInfo{#AW}@user32.dll stdcall delayload'; { function CreateFile (lpFileName: String; dwDesiredAccess: Cardinal; dwShareMode: Cardinal; lpSecurityAttributes: Cardinal; dwCreationDisposition: Cardinal; dwFlagsAndAttributes: Cardinal; hTemplateFile: Integer): Integer; external 'CreateFile{#AW}@kernel32.dll stdcall delayload'; function ReadFile (hFile: THandle; lpBuffer: String; nNumberOfBytesToRead: LongInt; var lpNumberOfBytesRead: LongInt; lpOverlapped: LongInt): Boolean; external 'ReadFile@kernel32.dll stdcall delayload'; function WriteFile (hFile: THandle; lpBuffer: String; nNumberOfBytesToWrite: LongInt; var lpNumberOfBytesWritten: LongInt; lpOverlapped: LongInt): Boolean; external 'WriteFile@kernel32.dll stdcall delayload'; } { Получение пути к папке Программы для константы code. Использование: GetProgsDir (''); } function GetProgramsDir (Default: String): String; begin if IsAdminLoggedOn() then result:= ExpandConstant ('{commonprograms}') else result:= ExpandConstant ('{userprograms}'); end; { Адаптация ф-ции WizardGroupValue для константы code. Использование: GetProgsCatName (''); } function GetGroupDir (Default: String): String; begin result:= WizardGroupValue (); end; { Получение текущей даты для константы code. Использование: GetDateTime ('yyyymmdd'); } function GetDateTime (Default: String): String; begin result:= GetDateTimeString (Default, #0, #0) end; { Разделение строки в массив. Использование: StringSplit ('Строка', 'Разделитель'); } function StringSplit (Const Str, Splitter: String): Array of String; var cPos : Integer; cStr : String; begin while Length (Str) > 0 do begin cPos:= Pos (Splitter, Str); if not (cPos = 0) then begin cStr:= Copy (Str, 1, cPos - 1); Delete (Str, 1, cPos); end else begin cStr:= Copy (Str, 1, Length (Str)); Str:= ''; end; if Length (cStr) > 0 then begin SetArrayLength (result, GetArrayLength (result) + 1); result[GetArrayLength (result) - 1]:= cStr; end; end; end; { Получение значения бита в числе. Использование: GetBit (Число, бит); } function GetBit (Const Value, Bit: Integer): Boolean; begin result:= (Value and (1 shl Bit)) <> 0; end; { Установка значения 1 бита в числе. Использование: SetBit (Переменная, бит); } procedure SetBit (Var Value: Integer; const Bit: Integer); begin Value:= Value or (1 shl Bit); end; { Эмулятор типа встроенной Inc Использование: Inc (Переменная Integer); } procedure Inc (Var a: Integer); begin a:= a + 1; end; { Удаление файла из-под текущего юзера (нужна для W7) Использование: FileDelete_AsUser ('путь к файлу') } procedure FileDelete_AsUser (Const sFileName: String); begin DeleteFile (ExpandConstant ('{localappdata}\VirtualStore\') + ExtractRelativePath (ExpandConstant ('{sd}'), ExpandConstant (sFileName))); end; { Добавление в панель задач (Taskband на W7) Использование: PinToTaskband ('путь к файлу') } procedure PinToTaskband (sFileName: String); var i : Integer; hLib : THandle; sRealFile, sVerb, sVBSFile : String; oShell, oFile, oVerbs : Variant; begin sFileName := ExpandConstant (sFileName); sRealFile := sFileName; if (GetWindowsVersion shr 16 < $0601) or Not FileExists (sFileName) then Exit; try hLib:= LoadLibraryEx ('shell32.dll', 0, LOAD_LIBRARY_AS_DATAFILE or LOAD_LIBRARY_AS_IMAGE_RESOURCE); SetLength (sVerb, 256); SetLength (sVerb, LoadString (hLib, 5386, sVerb, 255 {#(defined (UNICODE)) ? ("*2") : ("")})); if Not (Length (sVerb) > 0) then RaiseException ('Error getting "Pin to taskband" verbosity name'); oShell := CreateOleObject ('Shell.Application'); oFile := oShell.NameSpace(ExtractFileDir (sFileName)).ParseName(ExtractFileName (sFileName)); oVerbs := oFile.Verbs if oFile.IsLink then sRealFile:= oFile.GetLink.Path; for i:= 0 to oVerbs.Count - 1 do if CompareText (sVerb, oVerbs.Item(i).Name) = 0 then begin if oFile.IsLink then DeleteFile (ExpandConstant ('{userappdata}\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\') + ExtractFileName (sFileName)); if IsWin64 and (Pos (ExpandConstant ('{pf64}\'), sRealFile) = 1) then begin sVBSFile:= GenerateUniqueName (GetTempDir, '.vbs'); SaveStringToFile (sVBSFile, \ 'Set oShell=CreateObject("Shell.Application")' + #13 + \ 'Set oVerbs=oShell.NameSpace("' + ExtractFileDir (sFileName) + '").ParseName("' + ExtractFileName (sFileName) + '").Verbs' + #13 + \ 'For Each oVerb In oVerbs' + #13 + \ ' If (oVerb="' + sVerb + '") Then' + #13 + \ ' oVerb.DoIt' + #13 + \ ' Exit For' + #13 + \ ' End If' + #13 + \ 'Next' , False); Exec (ExpandConstant ('{win}\Sysnative\cscript.exe'), '"' + sVBSFile + '" /B', '', SW_HIDE, ewWaitUntilTerminated, i); DeleteFile (sVBSFile); end else oVerbs.Item(i).DoIt; Break; end; except end; if Not (hLib = 0) then FreeLibrary (hLib); end; { Убивание процессов Использование: ProcessKill (PID); (функция) pProcessKill (PID); (процедура) ProcessKillAll ('имя_процесса');(функция) pProcessKillAll ('имя_процесса');(процедура) } function ProcessKill (Pid: longint): bool; var hTargetProc : THandle; begin hTargetProc:= OpenProcess (PROCESS_TERMINATE, False, Pid); if not (hTargetProc = INVALID_HANDLE_VALUE) then begin result:= TerminateProcess (hTargetProc, -1); CloseHandle (hTargetProc); end; end; procedure pProcessKill (Pid: longint); begin ProcessKill (Pid); end; function ProcessKillAll (TaskName: String): bool; var i : longint; bContinue : bool; sCurrentProc : String; hSnapshot : THandle; rCurrentProc : TProcessEntry32; begin if Length (TaskName) = 0 then Exit; hSnapshot:= CreateToolhelp32Snapshot (TH32CS_SNAPPROCESS, 0); if hSnapshot = INVALID_HANDLE_VALUE then exit; rCurrentProc.dwSize := SizeOf (rCurrentProc); bContinue := Process32First (hSnapshot, rCurrentProc); while bContinue do begin sCurrentProc:= ''; for i:= 0 to 259 do begin if rCurrentProc.szExeFile[i] = #0 then break; sCurrentProc:= sCurrentProc + rCurrentProc.szExeFile[i]; end; if CompareText (sCurrentProc, TaskName) = 0 then Result:= ProcessKill (rCurrentProc.th32ProcessID); rCurrentProc.dwSize := SizeOf (rCurrentProc); bContinue := Process32Next (hSnapshot, rCurrentProc); end; CloseHandle (hSnapshot); end; procedure pProcessKillAll (TaskName: String); begin ProcessKillAll (TaskName); end; |
Последний раз редактировалось DA-Bro, 18-11-2022 в 00:05. Отправлено: 20:18, 17-11-2022 | #909 |
Старожил Сообщения: 284
|
Профиль | Отправить PM | Цитировать DA-Bro
Это понятно, только какая? А мы об одном и том же говорим? Иконка должна заменить картинку в правом верхнем углу. Вот мне и попались в справке два варианта этих словами не скажешь злополучных кодов) Блин, две страницы форума исписали, наконец то дошло картинку прикрепить. Там должна быть не иконка, а простая картинка в .bmp или .png формате. Эта картинка называется WizardSmallImageFile = WizardSmallImage.bmp (директива в секции Setup) Ранее я вам давал пример как запихнуть свою картинку на MainPanel Ваш скрипт |
------- Отправлено: 20:55, 17-11-2022 | #910 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Скрипты Inno Setup. Помощь и советы [часть 7] | El Sanchez | Автоматическая установка приложений | 2499 | 02-02-2015 08:59 | |
Скрипты Inno Setup. Помощь и советы [часть 6] | El Sanchez | Автоматическая установка приложений | 2494 | 10-03-2014 11:51 | |
Скрипты Inno Setup. Помощь и советы [часть 5] | El Sanchez | Автоматическая установка приложений | 1999 | 28-03-2013 19:09 | |
Скрипты Inno Setup. Помощь и советы [часть 4] | El Sanchez | Автоматическая установка приложений | 2099 | 22-05-2012 23:16 | |
Скрипты Inno Setup. Помощь и советы [часть 3] | Serega | Автоматическая установка приложений | 3755 | 26-10-2011 17:58 |
|