Jump to content
Korean Random

Создание инсталляторов для модпаков на базе Inno Setup


Recommended Posts

я тебе уже ответил, в редакторе создай новую стр и на ней делай

ты имеешь виду сделать страницу в редакторе форм и потом вставить код бекапа в эту страницу?

Link to comment
Short link
Share on other sites

@Hatsan, подскажу:

  1. К лейблам нужно применять их же свойство Transparent;
  2. Без ботвы с любыми контролами (Button, CheckBox, RadioButton) ничего красивого не сделать - по краям будут такие же обрезки фона, как и у кнопок, которые есть на представленном тобой скрине.
Edited by Kotyarko_O
  • Upvote 1
Link to comment
Short link
Share on other sites

ты имеешь виду сделать страницу в редакторе форм и потом вставить код бекапа в эту страницу?

не весь код а функции на чеки, а текст, чеки и лейблалы рисуй в редакторе на новой стр

Edited by Dark_Knight_MiX
Link to comment
Short link
Share on other sites

Каким образом можно считать информацию из файла на сервере, не скачивая его?

Текстовик?

А хотя что я спрашиваю.. текстовик, вроде, можно спарсить из html страницы (точно - яхз), php\xml точно можно. Но в пределах Inno это большой велосипед.

А вообще, для такого уже клиент-серверное делать надо) (и опять же, почти без инно)

Edited by Kotyarko_O
Link to comment
Short link
Share on other sites

Каким образом можно считать информацию из файла на сервере, не скачивая его?

 

Берет текст из файла

 

#define URLFile        "http://1337modpack.com/file.txt"

[C0de]

function DownloadFile(const URL: string; var Response: string): Boolean;
var
  WinHttpRequest: Variant;
begin
  Result := True;
  try
    WinHttpRequest := CreateOleObject('WinHttp.WinHttpRequest.5.1');
    WinHttpRequest.SetTimeouts(7000, 7000, 7000, 7000);
    WinHttpRequest.Open('GET', URL, False);
    WinHttpRequest.Send;
    Response := WinHttpRequest.ResponseText;
  except
    MsgBox('Нет подключения.', mbError, MB_OK);
    Result := False;
    Response := GetExceptionMessage;
  end;
end;

function InitializeSetup:boolean;
var
  blahblahblah: string;
begin
  Result:=True;
  begin
  if DownloadFile(ExpandConstant('{#URLFile}'), blahblahblah) then
    begin
      MsgBox(blahblahblah, mbInformation, MB_OK);
    end;
  end;
end;
Edited by ADBokaT57
Link to comment
Short link
Share on other sites

Неплохо, сам как-то не подумал про оле.

Через него проще всего сделать такие вещи. По такому же принципу можно сделать отправку запроса на сервер (читай количество установок). Но там нужно ещё что бы сервер лог вёл запросов на него и обработать всё это дело правильно.

Link to comment
Short link
Share on other sites

возможно ли HTML код прикрутить на завершение установки?

Если ещё актуально..

Порылся в стандартных примерах, сделал вывод: возможно. Есть такой модуль WebCtrl, от китайцев с ResTools (авторов расширенного компилятора). С его помощью, на страницу можно вешать html-скрипты (тянуть рекламку из сети тоже можно).

Edited by Kotyarko_O
Link to comment
Short link
Share on other sites

Как изменить Result:=ExpandConstant('C:\Games\World_of_Tanks\'); чтоб при выборе папки не создавало папку.

 

[setup]

DefaultDirName={code:GetInstDir}

 

function MyDirName(S:String): String;
var
  InsPath: String;
  er: boolean;
  myFile:String;
begin
  Result:=ExpandConstant('C:\Games\World_of_Tanks\'); //если ключа нет то будем ставить сюда
  er := RegQueryStringValue(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1', 'InstallLocation', InsPath);
  if er and (InsPath<>'') then //если ключ существует и там что-то записано
  begin
    Result := InsPath;
  end;
end;

Link to comment
Short link
Share on other sites

Как изменить Result:=ExpandConstant('C:\Games\World_of_Tanks\'); чтоб при выборе папки не создавало папку.

Хватит этого:

[Setup]
AppendDefaultDirName=no
Edited by Kotyarko_O
Link to comment
Short link
Share on other sites

Берет текст из файла

хм.. а как сделать если файл  xml  и мне нужны из него определенные значения?

Например локально у меня эта байда выглядит так:

#include "XML.iss"
[C0de]
XMLFileReadValue(ExpandConstant('{src}\Test.xml'), 'Settings\Info1', InfoValue);
XMLFileReadValue(ExpandConstant('{src}\Test.xml'), 'Settings\Info2', InfoValue2);

и тд.

 

 

 

Если ещё актуально.. Порылся в стандартных примерах, сделал вывод: возможно. Есть такой модуль WebCtrl, от китайцев с ResTools (авторов расширенного компилятора). С его помощью, на страницу можно вешать html-скрипты (тянуть рекламку из сети тоже можно).

Выложи пример и он тут же уйдет в массы  =)

Edited by -zav-
Link to comment
Short link
Share on other sites

 

 

хм.. а как сделать если файл xml и мне нужны из него определенные значения?

'Легко:'

#include "XML.iss"
#define URLFile "http://chto-to.tam/file.xml"

[Code]
Var
 XMLS: XMLString;
 Response, InfoValue: String;

function DownloadFile(const URL: string): Boolean;
var
  WinHttpRequest: Variant;
begin
  Result := True;
  try
    WinHttpRequest := CreateOleObject('WinHttp.WinHttpRequest.5.1');
    WinHttpRequest.SetTimeouts(7000, 7000, 7000, 7000);
    WinHttpRequest.Open('GET', URL, False);
    WinHttpRequest.Send;
    Response := WinHttpRequest.ResponseText;
  except
    MsgBox('Нет подключения.', mbError, MB_OK);
    Result := False;
    Response := GetExceptionMessage;
  end;
end;

Function InitializeSetup(): Boolean;
begin
 if DownloadFile(ExpandConstant('{#URLFile}')) then
 begin
  XMLStringReadValue(Response, 'Settings\Info', InfoValue);
  MsgBox(InfoValue, mbInformation, MB_OK);
 end;
 Result := True;
end;


Выложи пример и он тут же уйдет в массы =)

Inno WebCtrl v2.1.rar

Link to comment
Short link
Share on other sites

 

 

Легко:

И действительно. Работает.
Но вот решил я вывести информацию русскими символами и тут пришла проблема.
Сам xml файл на сервере в utf-8 кодировке, и даже заголовок имеет  <?xml version="1.0" encoding="utf-8" standalone="yes"?>
как я не пытался сменить ему кодировку  один фиг программа выводит кракозябры.
Вопрос знатокам, как победить это?

Link to comment
Short link
Share on other sites

И действительно. Работает.

Но вот решил я вывести информацию русскими символами и тут пришла проблема.

Сам xml файл на сервере в utf-8 кодировке, и даже заголовок имеет  <?xml version="1.0" encoding="utf-8" standalone="yes"?>

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

Вопрос знатокам, как победить это?

 

Не надо ему кодировку менять. Он на сервере и должен в универсальной кодировке хранится. Нуно после того как считаел его с сервера перекодировать содержимое в ANSI и усе. Тыц.

Link to comment
Short link
Share on other sites

@StranikS_Scan, а там и так перекодировка есть.

Function MultiByteToWideChar(CodePage: UINT; dwFlags: DWORD; lpMultiByteStr: PAnsiChar; cbMultiByte: integer; lpWideCharStr: PAnsiChar; cchWideChar: integer): longint; external '[email protected] stdcall';
Function WideCharToMultiByte(CodePage: UINT; dwFlags: DWORD; lpWideCharStr: PAnsiChar; cchWideChar: integer; lpMultiByteStr: PAnsiChar; cbMultiByte: integer; lpDefaultChar: integer; lpUsedDefaultChar: integer): longint; external '[email protected] stdcall';

Function Utf8ToAnsi(strSource: String): string;
var
  nRet2, len: integer;
  WideCharBuf, MultiByteBuf: AnsiString;
begin
  Len:= Length(strSource);
  SetLength(WideCharBuf, Len*2);
  SetLength(MultiByteBuf, Len*2);
  MultiByteToWideChar(CP_UTF8, 0, PAnsiChar(strSource), -1, WideCharBuf, Length(WideCharBuf));
  nRet2:= WideCharToMultiByte(CP_ACP, 0, PAnsiChar(WideCharBuf), -1, MultiByteBuf, Length(MultiByteBuf), 0, 0);
  Result:= Trim(Copy(MultiByteBuf, 1, nRet2));
end;

 

@-zav-, а у тебя не юникодовская версия разве?

Edited by Kotyarko_O
Link to comment
Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...