Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 8]

Закрытая тема
Настройки темы
Скрипты Inno Setup. Помощь и советы [часть 8]

Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1274
Благодарности: 1030


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: El Sanchez
Дата: 22-10-2015
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


Показать/скрыть: Справка, руководство, примеры:

Показать/скрыть: Ссылки на примеры скриптов:

Показать/скрыть: Дополнительные программы для Inno Setup:
  • ISTool - неплохой редактор скриптов Inno Setup.
    Последняя версия: 5.3.0.1 [29.09.2009] - Скачать | зеркало;

  • Inno Script Generator - генератор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать | зеркало на русифицированную программу;
    Примечание: Родной сайт www.hisoft2000.de более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы.
    Последняя версия: 2.0.8 [12.11.2006] - Скачать;
    Примечание: Родной сайт http://isfd.kaju74.de/index.php?isfd более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup GameScript Generator - программа генерирует скрипты для Inno Setup . С помощью GameScript Generator и Inno Setup вы сможете быстро создать простенький инсталляционный пакет для любой игры. В инсталлятор можно встроить музыку, слайдшоу и фоновый рисунок. Для специалистов созданный скрипт, возможно, будет неплохой заготовкой для дальнейшей модернизации;

  • ISSkin - Программа для создания и добавления в инсталлятор скинов. Инструкция.
    Последняя версия: 3.0.0.0 [19.01.2010] - Скачать;

  • ISSJoiner - Программа для объединения нескольких скриптов InnoSetup в один.
    Последняя версия: 3.0 [23.07.2009]

  • Converter - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
    Последняя версия: 0.1.4 [13.03.2010] - Скачать;

  • RegExporter - Фриварная утилита для экспорта реестра и конвертации файлов *.reg и *.ini в инсталляционные скрипты Inno Setup и NSIS.
    Последняя версия: 1.2.0 [23.09.2014] - Скачать;



Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:

Скрипты Inno Setup. Помощь и советы [часть 6]
Скрипты Inno Setup. Помощь и советы [часть 7]

Отправлено: 08:52, 02-02-2015

 

Аватара для habib2302

Ветеран


Сообщения: 862
Благодарности: 102

Профиль | Отправить PM | Цитировать


AlexM22204, в inno setup файлы распакованные в temp они сами удаляются после завершения процесса исполняемого файла

-------
Помог? От "Полезное сообщение" не откажусь!!!


Отправлено: 08:52, 21-06-2015 | #731



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 79
Благодарности: 6

Профиль | Отправить PM | Цитировать


Alex22204, не уверен, но может быть:
[Files]
Source: *.*; DestDir: {tmp}\InstallFile; Flags: сами напишите;

[Run]
Дальше сами...
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:44, 21-06-2015 | #732


Аватара для ROMKA-1977

Пользователь


Сообщения: 77
Благодарности: 2

Профиль | Отправить PM | Цитировать


Подскажите пож. в локализованной винде папка Documents отображается под названием Мои документы.
Возможно ли средствами Inno Setup выполнить переименование папки Мои документы в Documents?

Отправлено: 11:25, 22-06-2015 | #733


Пользователь


Сообщения: 79
Благодарности: 6

Профиль | Отправить PM | Цитировать


ROMKA-1997, на Inno Setup не знаю. Батник (.bat) напиши и в секции [Run] пропиши путь к батнику с флагом /s или -silent, -verysilent.

Отправлено: 06:26, 23-06-2015 | #734


Аватара для ROMKA-1977

Пользователь


Сообщения: 77
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата PlanktoN:
Батник (.bat) напиши »
в Inno Setup знания базовые а в написании .bat ещё не практиковался.

Отправлено: 15:51, 23-06-2015 | #735


Пользователь


Сообщения: 70
Благодарности: 1

Профиль | Отправить 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


Аватара для Dodakaedr

Ветеран


Сообщения: 863
Благодарности: 262

Профиль | Отправить PM | Цитировать


Цитата icetanker:
подскажите как вывести табличку »
В смысле табличку? Типа такого?
Код: Выделить весь код
[setup]
appname=app
appvername=app v1.0
DefaultDirName={sd}\app

[Files]
Source: compiler:license.txt; DestDir: {app}; AfterInstall: ShowMsg;

[code]
procedure ShowMsg;
begin
 MsgBox('Файл установлен.', mbInformation, MB_OK);
end;

-------
Inno Setup 5 Ultra Unicode


Отправлено: 17:11, 23-06-2015 | #737


Пользователь


Сообщения: 70
Благодарности: 1

Профиль | Отправить PM | Цитировать


Dodakaedr,не такую,нужно всплывающее сообщение,чтобы понимать зарегистрировалась она или нет.

Отправлено: 17:28, 23-06-2015 | #738


Пользователь


Сообщения: 79
Благодарности: 6

Профиль | Отправить PM | Цитировать


Romka-1997, команда help в помощь.

Отправлено: 17:41, 23-06-2015 | #739


Аватара для habib2302

Ветеран


Сообщения: 862
Благодарности: 102

Профиль | Отправить PM | Цитировать


Доброе время суток.
Скрытый текст
Заменить команду /LANG на /L
Заменить команду /DIR на /D
Заменить команду /COMPONENTS на /C

-------
Помог? От "Полезное сообщение" не откажусь!!!


Отправлено: 18:46, 25-06-2015 | #740



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 8]

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты 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




 
Переход