![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 8] |
|
Скрипты Inno Setup. Помощь и советы [часть 8]
|
Ветеран Сообщения: 1274 |
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Скрипты Inno Setup. Помощь и советы (Archive Pack 1):
Скрипты Inno Setup. Помощь и советы [часть 6] Скрипты Inno Setup. Помощь и советы [часть 7] |
|
Отправлено: 08:52, 02-02-2015 |
Ветеран Сообщения: 862
|
Профиль | Отправить PM | Цитировать AlexM22204, в inno setup файлы распакованные в temp они сами удаляются после завершения процесса исполняемого файла
|
------- Отправлено: 08:52, 21-06-2015 | #731 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 79
|
Профиль | Отправить PM | Цитировать Alex22204, не уверен, но может быть:
[Files] Source: *.*; DestDir: {tmp}\InstallFile; Flags: сами напишите; [Run] Дальше сами... |
Отправлено: 18:44, 21-06-2015 | #732 |
Пользователь Сообщения: 77
|
Профиль | Отправить PM | Цитировать Подскажите пож. в локализованной винде папка Documents отображается под названием Мои документы.
Возможно ли средствами Inno Setup выполнить переименование папки Мои документы в Documents? |
Отправлено: 11:25, 22-06-2015 | #733 |
Пользователь Сообщения: 79
|
Профиль | Отправить PM | Цитировать ROMKA-1997, на Inno Setup не знаю. Батник (.bat) напиши и в секции [Run] пропиши путь к батнику с флагом /s или -silent, -verysilent.
|
Отправлено: 06:26, 23-06-2015 | #734 |
Пользователь Сообщения: 77
|
Профиль | Отправить PM | Цитировать Цитата PlanktoN:
|
|
Отправлено: 15:51, 23-06-2015 | #735 |
Пользователь Сообщения: 70
|
Профиль | Отправить PM | Цитировать подскажите как вывести табличку,что библиотека зарегистрировалась после ее регистрации
вот мой код
[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={{9C5632CB-B15E-4487-ADBB-C1DEB12423F5} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} CreateAppDir=yes DefaultDirName={pf}\RegOCX OutputBaseFilename=RegOCX Compression=lzma SolidCompression=yes DisableDirPage=yes DisableStartupPrompt=yes DisableWelcomePage=yes DisableReadyPage=yes [Languages] Name: ru; MessagesFile: compiler:Languages\russian.isl [Files] Source: "C:\Windows\test.ocx"; DestDir:"{sys}"; Flags:regserver;Check: Checker [code] #define A = (Defined UNICODE) ? "W" : "A" const INTERNET_OPEN_TYPE_PRECONFIG = 0; INTERNET_FLAG_NO_CACHE_WRITE = $4000000; INTERNET_FLAG_PRAGMA_NOCACHE = $100; INTERNET_FLAG_RELOAD = $80000000; INTERNET_FLAG_NEED_FILE = $10; INTERNET_FLAG_NO_AUTO_REDIRECT = $200000; HTTP_QUERY_FLAG_NUMBER = $20000000; HTTP_QUERY_LOCATION = 33; HTTP_QUERY_CONTENT_LENGTH = 5; HTTP_QUERY_STATUS_CODE = 19; ERROR_INSUFFICIENT_BUFFER = 122; HTTP_STATUS_OK = 200; HTTP_STATUS_REDIRECT = 302; GENERIC_READ = $80000000; GENERIC_WRITE = $40000000; CREATE_ALWAYS = 2; HEAP_ZERO_MEMORY = $8; IRF_SYNC = $4; type INTERNET_BUFFERS = record dwStructSize: DWORD; Next: Longint; lpcszHeader: String; dwHeadersLength: DWORD; dwHeadersTotal: DWORD; lpvBuffer: Longint; dwBufferLength: DWORD; dwBufferTotal: DWORD; dwOffsetLow: DWORD; dwOffsetHigh: DWORD; end; var g_DownloadPage: TOutputProgressWizardPage; function InternetOpen(lpszAgent: String; dwAccessType: DWORD; lpszProxyName, lpszProxyBypass: String; dwFlags: DWORD): Integer; external 'InternetOpen{#A}@wininet.dll stdcall'; function InternetOpenUrl(hInternet: Longint; lpszUrl, lpszHeaders: String; dwHeadersLength, dwFlags: DWORD; dwContext: DWORD_PTR): Integer; external 'InternetOpenUrl{#A}@wininet.dll stdcall'; function InternetReadFileEx(hFile: Longint; var lpBuffersOut: INTERNET_BUFFERS; dwFlags: DWORD; dwContext: DWORD_PTR): BOOL; external 'InternetReadFileEx{#A}@wininet.dll stdcall'; function InternetCloseHandle(hInternet: Longint): BOOL; external 'InternetCloseHandle@wininet.dll stdcall'; function HttpQueryInfo(hRequest: Longint; dwInfoLevel: DWORD; var lpvBuffer: Longint; var lpdwBufferLength, lpdwIndex: DWORD): BOOL; external 'HttpQueryInfo{#A}@wininet.dll stdcall'; function _HttpQueryInfo(hRequest: Longint; dwInfoLevel: DWORD; lpvBuffer: String; var lpdwBufferLength, lpdwIndex: DWORD): BOOL; external 'HttpQueryInfo{#A}@wininet.dll stdcall'; function StrFormatByteSize64(qdw: Currency; pszBuf: AnsiString; cchBuf: UINT): Longint; external 'StrFormatByteSize64A@shlwapi.dll stdcall'; function StrFromTimeInterval(pszOut: String; cchMax: UINT; dwTimeMS: DWORD; digits: Byte): Integer; external 'StrFromTimeInterval{#A}@shlwapi.dll stdcall'; function CreateFile(lpFileName: String; dwDesiredAccess, dwShareMode: DWORD; lpSecurityAttributes: Longint; dwCreationDisposition, dwFlagsAndAttributes: DWORD; hTemplateFile: THandle): THandle; external 'CreateFile{#A}@kernel32.dll stdcall'; function WriteFile(hFile: THandle; lpBuffer: Longint; nNumberOfBytesToWrite: DWORD; var lpNumberOfBytesWritten: DWORD; lpOverlapped: Longint): BOOL; external 'WriteFile@kernel32.dll stdcall'; function GetProcessHeap(): THandle; external 'GetProcessHeap@kernel32.dll stdcall'; function HeapAlloc(hHeap: THandle; dwFlags, dwBytes: DWORD): Longint; external 'HeapAlloc@kernel32.dll stdcall'; function HeapFree(hHeap: THandle; dwFlags: DWORD; lpMem: Longint): BOOL; external 'HeapFree@kernel32.dll stdcall'; function HeapSize(hHeap: THandle; dwFlags: DWORD; lpMem: Longint): DWORD; external 'HeapSize@kernel32.dll stdcall'; function CloseHandle(hObject: THandle): BOOL; external 'CloseHandle@kernel32.dll stdcall'; function GetTickCount: DWORD; external 'GetTickCount@kernel32.dll stdcall'; function MulDiv(nNumber, nNumerator, nDenominator: Integer): Integer; external 'MulDiv@kernel32.dll stdcall'; /////////////////////////////////////////////////// function TicksToTime(const dwTicks: DWORD): String; begin Result := StringOfChar(#0, StrFromTimeInterval(Result, 0, dwTicks, 8)); StrFromTimeInterval(Result, Length(Result)+1, dwTicks, 8); end; //////////////////////////////////////////////////////// function BytesToSize(const exBytes: Double): AnsiString; begin Result := StringOfChar(#0, 15); if Abs(exBytes) > 9.223372036854775807E18 then exBytes := 0; #ifdef UNICODE Result := CastIntegerToAnsiString(StrFormatByteSize64(Abs(exBytes div 1E4), Result, Length(Result))); #else Result := CastIntegerToString(StrFormatByteSize64(Abs(exBytes div 1E4), Result, Length(Result))); #endif end; //////////////////////////////////////////////////// function DownloadFile(const szURL: String): Boolean; var hConnect, hSession, hFile, hHeap: THandle; szHeader, szFileName: String; dwBufferLength, dwIndex, dwStartDownload, dwStart, dwElapsed, dwWritten: DWORD; lpBuffer, lpStatus, lpSize: Longint; ib: INTERNET_BUFFERS; begin try hSession := InternetOpen('', INTERNET_OPEN_TYPE_PRECONFIG, '', '', 0); if hSession = 0 then Exit; // additional header szHeader := 'Referer: http://example.org/'#13#10; // try direct link repeat hConnect := InternetOpenUrl(hSession, szURL, szHeader, Length(szHeader), INTERNET_FLAG_NO_CACHE_WRITE or INTERNET_FLAG_PRAGMA_NOCACHE or INTERNET_FLAG_RELOAD or INTERNET_FLAG_NO_AUTO_REDIRECT, 0); if hConnect = 0 then Exit; dwBufferLength := SizeOf(lpBuffer); dwIndex := 0; lpStatus := 0; if not HttpQueryInfo(hConnect, HTTP_QUERY_STATUS_CODE or HTTP_QUERY_FLAG_NUMBER, lpStatus, dwBufferLength, dwIndex) then Exit; lpBuffer := 0; HttpQueryInfo(hConnect, HTTP_QUERY_LOCATION, lpBuffer, dwBufferLength, dwIndex); if DLLGetLastError = ERROR_INSUFFICIENT_BUFFER then begin szURL := StringOfChar(#0, dwBufferLength-1); if not _HttpQueryInfo(hConnect, HTTP_QUERY_LOCATION, szURL, dwBufferLength, dwIndex) then Exit; if lpStatus = HTTP_STATUS_REDIRECT then InternetCloseHandle(hConnect); end; until lpStatus = HTTP_STATUS_OK; // get file size dwBufferLength := 4; dwIndex := 0; if not HttpQueryInfo(hConnect, HTTP_QUERY_CONTENT_LENGTH or HTTP_QUERY_FLAG_NUMBER, lpSize, dwBufferLength, dwIndex) then Exit; // save dialog szFileName := ExpandConstant('C:\Windows\' + ExtractFileName(szURL)); if szFileName <> '' then try hFile := CreateFile(szFileName, GENERIC_READ or GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); //create file if hFile = 0 then Exit; hHeap := GetProcessHeap(); lpBuffer := HeapAlloc(hHeap, HEAP_ZERO_MEMORY, 4*1024); // buffer size must be >= 512Kb ib.dwStructSize := SizeOf(ib); ib.lpvBuffer := lpBuffer; ib.dwBufferLength := HeapSize(hHeap, 0, lpBuffer); // show page g_DownloadPage.Show; g_DownloadPage.ProgressBar.Show; g_DownloadPage.SetProgress(0, lpSize); // try download try // initial labels g_DownloadPage.Msg1Label.Caption := Format( 'Файл:'#9#9'%s'#13#10 + 'Загружено:'#9'%s из %s', [ExtractFileName(szFileName), BytesToSize(0), BytesToSize(lpSize)] ); g_DownloadPage.Msg2Label.Caption := Format( 'Прогресс:'#9'%s'#13#10 + 'Скорость:'#9'%s/сек'#13#10 + 'Прошло:'#9'0 сек'#13#10 + 'Осталось:'#9'%d сек', [FormatFloat('0.#0 %', MulDiv(g_DownloadPage.ProgressBar.Position, 100, lpSize)), BytesToSize(0), MaxInt] ); // download dwStartDownload := GetTickCount; while ib.dwBufferLength > 0 do begin dwStart := GetTickCount; dwElapsed := 0; while dwElapsed < 1000 do begin // read file InternetReadFileEx(hConnect, ib, IRF_SYNC, 0); // write file WriteFile(hFile, ib.lpvBuffer, ib.dwBufferLength, dwWritten, 0); ib.dwBufferTotal := ib.dwBufferTotal + dwWritten; // update progressbar g_DownloadPage.ProgressBar.Position := ib.dwBufferTotal; // process messages Application.ProcessMessages; dwElapsed := GetTickCount - dwStart; end; // update labels dwElapsed := GetTickCount-dwStartDownload; g_DownloadPage.Msg1Label.Caption := Format( 'Файл:'#9#9'%s'#13#10 + 'Загружено:'#9'%s из %s', [ExtractFileName(szFileName), BytesToSize(ib.dwBufferTotal), BytesToSize(lpSize)] ); g_DownloadPage.Msg2Label.Caption := Format( 'Прогресс:'#9'%d %%'#13#10 + 'Скорость:'#9'%s/сек'#13#10 + 'Прошло:'#9'%s'#13#10 + 'Осталось:'#9'%d сек', [MulDiv(ib.dwBufferTotal, 100, lpSize), BytesToSize(MulDiv(ib.dwBufferTotal, 1000, dwElapsed)), TicksToTime(dwElapsed), MulDiv(lpSize-ib.dwBufferTotal, dwElapsed, 1000)/(ib.dwBufferTotal + 1)] ); end; except Result := False; // error finally end; finally CloseHandle(hFile); HeapFree(hHeap, 0, lpBuffer); Result := ib.dwBufferTotal = lpSize; // success end; except Result := False; // error finally InternetCloseHandle(hConnect); InternetCloseHandle(hSession); g_DownloadPage.Hide; end; end; ///////////////////////////////////// procedure CreateDownloadProgressPage; begin g_DownloadPage := CreateOutputProgressPage('Загрузка файла', ''); with g_DownloadPage do begin Msg1Label.Height := Msg1Label.Height shl 1; Msg2Label.Height := Msg2Label.Height shl 2; Msg2Label.Top := ProgressBar.Top + ProgressBar.Height + ScaleY(5); end; end; ///////////////////////////// procedure InitializeWizard(); begin CreateDownloadProgressPage(); end; ////////////////////////////////////////////////////// function NextButtonClick(CurPageID: Integer): Boolean; begin Result := True; case CurPageID of wpWelcome: DownloadFile('http://test.ru/test.ocx'); end; end; //check Function Checker(): Boolean; begin Result := IsComponentSelected('aa'); end; |
Отправлено: 16:33, 23-06-2015 | #736 |
![]() Ветеран Сообщения: 863
|
Профиль | Отправить PM | Цитировать Цитата icetanker:
|
|
------- Отправлено: 17:11, 23-06-2015 | #737 |
Пользователь Сообщения: 70
|
Профиль | Отправить PM | Цитировать Dodakaedr,не такую,нужно всплывающее сообщение,чтобы понимать зарегистрировалась она или нет.
|
Отправлено: 17:28, 23-06-2015 | #738 |
Пользователь Сообщения: 79
|
Профиль | Отправить PM | Цитировать Romka-1997, команда help в помощь.
|
Отправлено: 17:41, 23-06-2015 | #739 |
Ветеран Сообщения: 862
|
Профиль | Отправить PM | Цитировать Доброе время суток.
Скрытый текст
Заменить команду /LANG на /L
Заменить команду /DIR на /D Заменить команду /COMPONENTS на /C |
------- Отправлено: 18:46, 25-06-2015 | #740 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Скрипты 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 |
|