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

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

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

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

Ветеран


Contributor


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


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

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


Изменения
Автор: El Sanchez
Дата: 16-02-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] - Скачать;


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

Отправлено: 19:06, 28-03-2013

 

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

Ветеран


Contributor


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

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


Цитата Shkutu:
А нет ли у кого-нибудь случаем алгоритма кодирования в/декодирования base64 для инно? »
Shkutu, держите, делал когда-то для одного товарища:
читать дальше »

Код: Выделить весь код
#define A = (Defined UNICODE) ? "W" : "A"

const
    CRYPT_STRING_BASE64 = $1;
    IS_TEXT_UNICODE_STATISTICS = $2;
 
function MultiByteToWideChar(CodePage: UINT; dwFlags: DWORD; lpMultiByteStr: String; cbMultiByte: Integer; lpWideCharStr: String; cchWideChar: Integer): Integer; external 'MultiByteToWideChar@kernel32.dll stdcall';
function WideCharToMultiByte(CodePage: UINT; dwFlags: DWORD; lpWideCharStr: String; cchWideChar: Integer; lpMultiByteStr: String; cbMultiByte, lpDefaultChar: Integer; lpUsedDefaultChar: Longint): Integer; external 'WideCharToMultiByte@kernel32.dll stdcall';
function CryptBinaryToString(pbBinary: Longint; cbBinary, dwFlags: DWORD; pszString: Longint; var pcchString: DWORD): BOOL; external 'CryptBinaryToString{#A}@crypt32.dll stdcall';
function CryptStringToBinary(szString: String; cchString, dwFlags: DWORD; pbBinary: Longint; var pcbBinary, pdwSkip, pdwFlags: DWORD): BOOL; external 'CryptStringToBinary{#A}@crypt32.dll stdcall';
function IsTextUnicode(const lpv: String; iSize: Integer; var lpiResult: Integer): BOOL; external 'IsTextUnicode@advapi32.dll stdcall';

/////////////////////////////////////////////////////////////////////////////////////////////////////
function Base64Encode(const szString: String; const dwFlags: DWORD; const bUnicode: Boolean): String;
var
    cchString: DWORD;
    pszString, pszResult: Longint;
    iLength: Integer;
#ifdef UNICODE
    szAnsiString: AnsiString;
#endif
begin
    if Length(szString) = 0 then Exit;
    iLength := Length(szString);
    if bUnicode then
    begin
        iLength := iLength shl 1;
    #ifndef UNICODE
        SetLength(Result, iLength);
        MultiByteToWideChar(0, 1, szString, -1, Result, Length(Result));
        szString := Result;
    #endif
        pszString := CastStringToInteger(szString);
    end else begin
    #ifdef UNICODE
        szAnsiString := szString;
        pszString := CastAnsiStringToInteger(szAnsiString);
    #else
        pszString := CastStringToInteger(szString);
    #endif
    end;
    if not CryptBinaryToString(pszString, iLength, dwFlags, 0, cchString) then Exit;
    Result := StringOfChar(#0, cchString-1);
    pszResult := CastStringToInteger(Result);
    CryptBinaryToString(pszString, iLength, dwFlags, pszResult, cchString);
end;

////////////////////////////////////////////////////////////////////////////
function Base64Decode(const szString: String; const dwFlags: DWORD): String;
var
    cchString, dwSkip: DWORD;
    pszResult, iResult: Longint;
    szBuffer: String;
begin
    if Length(szString) = 0 then Exit;
    if not CryptStringToBinary(szString, Length(szString), dwFlags, 0, cchString, dwSkip, dwFlags) then Exit;
    Result := StringOfChar(#0, cchString);
    pszResult := CastStringToInteger(Result);
    CryptStringToBinary(szString, Length(szString), dwFlags, pszResult, cchString, dwSkip, dwFlags);
    szBuffer := Result;
    iResult := IS_TEXT_UNICODE_STATISTICS;
    if IsTextUnicode(Result, cchString, iResult) then
    begin
    #ifndef UNICODE
        SetLength(Result, Length(Result) shr 1);
        WideCharToMultiByte(0, 0, szBuffer, -1, Result, Length(Result), 0, 0);
    end;
    #else
        Result := CastIntegerToString(pszResult);
    end else Result := CastIntegerToAnsiString(pszResult);
    #endif
end;

/////////////////////////////
procedure InitializeWizard();
begin
    MsgBox(Format('Исходная строка: %s'#13#10'Кодированная строка (ANSI): %s', ['test1', Base64Encode('test1', CRYPT_STRING_BASE64, False)]), mbInformation, MB_OK);
    MsgBox(Format('Исходная строка: %s'#13#10'Кодированная строка (Unicode): %s', ['test1', Base64Encode('test1', CRYPT_STRING_BASE64, True)]), mbInformation, MB_OK);
    MsgBox(Format('Исходная строка (ANSI): %s'#13#10'Декодированная строка: %s', ['dGVzdDE=', Base64Decode('dGVzdDE=', CRYPT_STRING_BASE64)]), mbInformation, MB_OK);
    MsgBox(Format('Исходная строка (Unicode): %s'#13#10'Декодированная строка: %s', ['dABlAHMAdAAxAA==', Base64Decode('dABlAHMAdAAxAA==', CRYPT_STRING_BASE64)]), mbInformation, MB_OK);
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:57, 06-12-2013 | #1651



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

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


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


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

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


Цитата Gnom_aka_Lexander:
наоборот в самый низ секции файлов »
Спасибо завтра проверю,не думал,что последовательность в секции Files так жестко влияет на итог,даже в справке по моему не упоминается.Так же спасибо за ваши сборки Инно Ультра,только ей и пользуюсь,правда она устарела,вышли новые версии инно и dll,но я просто копирую в вашу папку куда установлена ультра с заменой(надеюсь так и нужно).Еще раз спасибо вам.

Отправлено: 23:18, 06-12-2013 | #1652


Аватара для Gnom_aka_Lexander

Ветеран


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

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


FX-DENIS, просто при солид-сжатии, когда файлы самого приложения идут до файлов оформления, которые нужны в работе инсталла, ему приходится ооочень долго добираться до этих служебных файлов. если не полениться и почитать архив темы, то вопрос этот всплывал несколько десятков раз. Кто-то даже помнится писал о нескольких часах ожидания..
По аналогии - видел как-то рекламу каких-то чипсов, которые продаются в трубчатой упаковке. Вот, чтоб представить себе муки инсталла, нужно купить такую банку чипсов и попытаться достать из нее самый нижний чипс не вынимаю все остальные, и не отрезая донышка банки.

-------
Я люблю помогать. Но не путайте: "Помогите мне" и "Сделайте за меня" - это совершенно разные понятия.


Последний раз редактировалось Gnom_aka_Lexander, 07-12-2013 в 10:05.

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:56, 07-12-2013 | #1653


Новый участник


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

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


Цитата Dimas2011:
Ребята помогите не показывает картинку.я пытаюсь сделать так что когда выбираешь куда устанавливать файлы потом открывается сам список того что хочешь установить. так чтобы когда наводишь на название какого-то файла выскакивала картинка а оно не работает.Test.rar »
помогите

Отправлено: 21:20, 07-12-2013 | #1654


Аватара для Johny777

Ветеран


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

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


Dimas2011, впиши InitInfo(); в InitializeWizard();
ты используешь этот код: http://forum.oszone.net/post-2169372-662.html
Он был недавно обновлён, я исправил в нём ошибку и оптимизировал.
замени у себя старую его версию на новую

PS:
и на будущее: будь добр выкладывать скрипт с файлами, чтоб перед тем как искать ошибку ни мне ни другим не приходилось закомментировать участки кода и/или искать нужные файлы
в твоём случае например это были
читать дальше »

Source: Files\A.bmp; Flags: dontcopy nocompression
Source: Files\B.bmp; Flags: dontcopy nocompression
Source: Files\C.bmp; Flags: dontcopy nocompression
Source: Files\D.bmp; Flags: dontcopy nocompression
Source: Files\logo.bmp; Flags: dontcopy
Source: Files\BASS.dll; Flags: dontcopy
Source: Files\sound.mp3; Flags: dontcopy nocompression
Source: Files\MusicButton.bmp; Flags: dontcopy
Source: Files\DirBitmap.bmp; DestDir: "{tmp}"; Flags: dontcopy
Source: Files\GroupBitmap.bmp; DestDir: "{tmp}"; Flags: dontcopy
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:01, 08-12-2013 | #1655


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


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

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


Johny777, в коде, который Вы привели в качестве примера (кстати еще раз спасибо)... за что отвечает эта часть? Можно получить коментарии к строкам, если не затруднит?
Код: Выделить весь код
procedure CompOnClick(Sender: TObject);
var
  i, k: Integer;
begin
  k:= -1;
for i:= 0 to 3 do begin
if WizardForm.ComponentsList.Checked[1+i] then
begin
  k:= i;
  Break;
end;
end;
if (k=-1)or(cur=k) then Exit;
  ImgSetVisibility(png[cur], False);
  ImgSetVisibility(png[k], True);
  cur:= k;
  ImgApplyChanges(WizardForm.SelectComponentsPage.Handle);
end;
И еще... как добавить поле с компонентами на форму с произвольными размерами... ну, сказать, что на этой странице должно быть поле с компонентами, такого-то размера в том-то месте.

Отправлено: 14:13, 08-12-2013 | #1656


Новый участник


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

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


Здравствуйте. как сделать так, чтобы "DefaultDirName" для каждого компонента был разный? Например для компонента "One" "DefaultDirName={pf}\Game One", а для "Two" соответственно "DefaultDirName={pf}\Game Two"

Отправлено: 16:16, 08-12-2013 | #1657


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


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

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


Всем привет, вопрос такой.
В стандартном установщике, когда идет странице выбора компонентов, очень маленькое окно, подскажите как его сделать больше? Чтобы е нужно было постоянно прокручивать бегуной.

Отправлено: 19:51, 08-12-2013 | #1658


Новый участник


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

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


Цитата Johny777:
Он был недавно обновлён, я исправил в нём ошибку и оптимизировал.
замени у себя старую его версию на новую »
а можно сылку на обновленый??

Отправлено: 20:33, 08-12-2013 | #1659


SHVtYW4=


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

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


Цитата Dimas2011:
а можно сылку на обновленый?? »
Так Johny777 в своём сообщении указал ссылку. Что тебе ещё? Персонально указать? Сообщение: 662. И посмотри там чуть ниже написано "Последний раз редактировалось Johny777, 05-12-2013 в 23:26.", наверно не трудно догадаться что к чему.

-------
09a468a9b4293cd82adf6d6c60a9da82 | Tm9yZGVr
В связи со сменой железа и переходом на LInux с полным отказом от Windows - посещение на форуме будет редким.


Отправлено: 03:45, 09-12-2013 | #1660



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты 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
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] Serega Автоматическая установка приложений 2651 08-11-2010 18:34
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59




 
Переход