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

Компьютерный форум 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

 

Ветеран


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

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


vk_k14m@vk, да, четвёртый параметр. Надо ж было мне так обсчитаться . Приношу Вам свои извинения.

Цитата vk_k14m@vk:
Или не 0 а SW_HIDE? »
Если SW_HIDE равно 0, то можно . Надо полагать, что так оно и есть. В любом случае всё сводится к функции WinAPI CreateProcess().
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:58, 06-11-2017 | #2261



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

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


Аватара для vk_k14m@vk

Старожил


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

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


Iska, что ж буду проверять)

-------
Взялся отвечать, отвечай до конца!


Отправлено: 07:00, 06-11-2017 | #2262


SHVtYW4=


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

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


Цитата vk_k14m@vk:
В секции [Run] есть фалг runhidden. »
Код: Выделить весь код
  SW_HIDE
  SW_SHOWNORMAL
  SW_SHOWMINIMIZED
  SW_SHOWMAXIMIZED
  SW_SHOW
  SW_SHOWMINNOACTIVE
Само за себя выдаёт: Вместо SW_SHOW задайте SW_HIDE.

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

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

Отправлено: 10:07, 06-11-2017 | #2263


Аватара для R.i.m.s.k.y.

Ветеран


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

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


скажите, пожалуйста, можно ли как-то научить писать инно в ini через секцию ini в UTF8?
или как-то сконвертировать потом сформированный установщиком ниншник в utf8?

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Отправлено: 18:30, 09-11-2017 | #2264


Аватара для nik1967

Старожил


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

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


R.i.m.s.k.y., а что, разве не сохраняет в UTF8?
Скрытый текст

-------
Если сообщение оказалось полезным для Вас, то помимо спасибо, можно нажать на "Полезное сообщение".


Отправлено: 07:20, 11-11-2017 | #2265


Ветеран


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

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


nik1967, надо сохранение в UTF-8 создаваемого разделом [INI] инсталлятора ini-файла. Но дело в том, что WritePrivateProfileString()/GetPrivateProfileString() не работают с UTF-8. Ещё не существующий файл будет создаваться посредством WritePrivateProfileStringA() в ANSI/1251. Если предварительно создать искомый пустой ini-файл в UTF-16LE/1200 — будет использоваться WritePrivateProfileStringW(). Аналогично будет работать и при удалении. Но вот путей совместить раздел [INI] и UTF-8 я не вижу.

Можно попробовать оставить создание ini-файла из раздела [INI] как есть, а на заключительном этапе после установки просто взять и кодом прочитать содержимое файла, а затем посредством SaveStringsToUTF8File() перезаписать его. Для деинсталляции проделать обратное — на предварительном этапе прочитать UTF-8 и записать содержимое в ANSI, чтобы деинсталлятор смог отработать указанными выше функциями. Это, конечно, предварительные соображения, я их даже не проверял.

P.S. По поводу скриншота с примером: если в файле нет многобайтовых символов (например, той же кириллицы), то UTF-8 без BOM ничем не отличается от ANSI/1251.

Отправлено: 08:02, 11-11-2017 | #2266


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

Ветеран


Contributor


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

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


Цитата R.i.m.s.k.y.:
можно ли как-то научить писать инно в ini через секцию ini в UTF8? »
R.i.m.s.k.y.,
Скрытый текст

Код: Выделить весь код
[INI]
Filename: "{src}\test.ini"; Section: "test"; Key: "test"; String: {code:UTF8Encode|this is чёрт знает что за うんこ}

[Code]
const
  CP_ACP = 0;
  CP_UTF8 = 65001;

// Unicode and Character Set Functions
function WideCharToMultiByte(CodePage: UINT; dwFlags: DWORD; lpWideCharStr: string; cchWideChar: Integer; lpMultiByteStr: AnsiString; cbMultiByte, lpDefaultChar: Integer; lpUsedDefaultChar: Longint): Integer; external 'WideCharToMultiByte@kernel32.dll stdcall';
function MultiByteToWideChar(CodePage: UINT; dwFlags: DWORD; lpMultiByteStr: AnsiString; cbMultiByte: Integer; lpWideCharStr: string; cchWideChar: Integer): Integer; external 'MultiByteToWideChar@kernel32.dll stdcall';

/////////////////////////////////////////////////
function UTF8Encode(const Value: string): string;
var
  Len: Integer;
  UTF16Buffer: string;
  UTF8Buffer: AnsiString;
begin
  if Value = '' then Exit;
#ifndef UNICODE
  Len := MultiByteToWideChar(CP_ACP, 0, Value, -1, '', 0);
  if Len = 0 then Exit;
  UTF16Buffer := StringOfChar(#0, Len shl 1);
  if MultiByteToWideChar(CP_ACP, 0, Value, -1, UTF16Buffer, Len) = 0 then Exit;
#else
  UTF16Buffer := Value;
#endif
  Len := WideCharToMultiByte(CP_UTF8, 0, UTF16Buffer, -1, '', 0, 0, 0);
  if Len = 0 then Exit;
  UTF8Buffer := StringOfChar(#0, Len - 1);
  if WideCharToMultiByte(CP_UTF8, 0, UTF16Buffer, -1, UTF8Buffer, Len, 0, 0) = 0 then Exit;
  Result := UTF8Buffer;
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:59, 11-11-2017 | #2267


Аватара для vk_k14m@vk

Старожил


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

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


Как можно запускать приложение через секцию [Сode] с параметрами.

Например в секции [Run] все просто

Код: Выделить весь код
[Run]
Filename: "{sys}\CMD.EXE";  WorkingDir: "{app}\data"; Parameters: /C RD /S /Q jg2e00_00_00
Я использую такой код
Код: Выделить весь код
[Соde]
procedure unpack_this_file_xx();
var res:integer; file, path : string;
begin
  file := ExpandConstant('{app}\data\Decrypt.bat'); path := ExpandConstant('{app}');
  if FileExists(file) then Exec(file, 'параметры',path,SW_HIDE,ewWaitUntilTerminated,res) else MsgBox('Файл' + ' ' + file + #13#10 + 'не найден', mbInformation, MB_OK);
end;
Как я понял file в [code] то же самое что Filename в [Run]. А path в [code] как WorkingDir в [Run]. Значит к "var res:integer; file, path, " нужно написать что-то подобное для параметров?

***

И еще. Можно сделать еще одно окно с индикатором выполнения? У меня через секцию [Сode] запускается 101 приложение. И в [Run] еще 178. Хотелось бы наглядно видеть ход их выполнения...

-------
Взялся отвечать, отвечай до конца!


Последний раз редактировалось vk_k14m@vk, 15-11-2017 в 07:25.


Отправлено: 20:53, 13-11-2017 | #2268


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


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

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


парни, проблема я отключил папку установки , но теперь не отображается дополнительные программы Microsoft Visual C++ может кто поправит
скрипт

[Setup]
DisableWelcomePage=yes
DisableReadyPage=yes
DisableFinishedPage=yes
Compression=none
RestartIfNeededByRun=no
AppName=vbvb
AppVersion=5
CreateAppDir=False
[Files]
Source: "C:\Users\ww\Desktop\длполнение\W.bmp"; Flags: dontcopy

[Run]
Filename: {src}\Redist\vcredist_x86.exe; Parameters: /q; StatusMsg: Устанавливаем Microsoft Visual C++ 2005 Redist...; Flags: skipifdoesntexist; Check: MicrosoftVisualCheck

Код: Выделить весь код
var
BitmapImage1: TBitmapImage;
Panel1: TPanel;
Reg: TLabel;
DopSoft: TNewCheckBox;

function MicrosoftVisualCheck: Boolean;
begin
Result := DopSoft.Checked;
end;

procedure InitializeWizard();
begin
WizardForm.ClientWidth:=ScaleX(500);
WizardForm.ClientHeight:=ScaleY(120);
WizardForm.Center;
WizardForm.OuterNotebook.Hide;
WizardForm.InnerNotebook.Hide;
WizardForm.Bevel.Hide;

BitmapImage1 := TBitmapImage.Create(WizardForm);
with BitmapImage1 do
begin
Parent := WizardForm;
Left := ScaleX(5);
Top := ScaleY(5);
Width := ScaleX(64);
Height := ScaleY(64);
ExtractTemporaryFile('W.bmp');
Bitmap.LoadFromFile(ExpandConstant('{tmp}\W.bmp'));
end;

Panel1 := TPanel.Create(WizardForm);
with Panel1 do
begin
Parent := WizardForm;
Left := ScaleX(80);
Top := ScaleY(20);
Width := ScaleX(320);
Height := ScaleY(40);
BorderStyle := bsSingle;
end;

with WizardForm.DirEdit do
begin
Top := ScaleY(8);
Left := ScaleX(5);
Parent := Panel1;
Width := ScaleX(285)
Color := clMenu;
BorderStyle := bsNone;
Font.Name := 'Times New Roman';
Font.Height := -16;
end;

Reg := TLabel.Create(WizardForm);
with Reg do
begin
Parent := WizardForm;
Caption := 'Зарегистрированная русская версия ';
Left := ScaleX(150);
Top := ScaleY(65);
Width := ScaleX(209);
Height := ScaleY(13);
end;

DopSoft := TNewCheckBox.Create(WizardForm);
with DopSoft do
begin
Parent := WizardForm;
Left := ScaleX(150);
Top := ScaleY(90);
Width := ScaleX(129);
Height := ScaleY(17);
Caption := 'Microsoft Visual C++';
Checked:=True;
end;

with WizardForm.NextButton do
begin
Left := ScaleX(405);
Top := ScaleY(20);
Width := ScaleX(90);
Height := ScaleY(40);
Font.Name := 'Times New Roman';
end;

with WizardForm.CancelButton do
begin
Left := ScaleX(405);
Top := ScaleY(20);
Width := ScaleX(90);
Height := ScaleY(40);
Font.Name := 'Times New Roman';
end;
with WizardForm.ProgressGauge do
begin
Top := ScaleY(20);
Left := ScaleX(80);
Width := ScaleX(320);
Height := ScaleY(40);
Parent := WizardForm;
end;
with WizardForm.StatusLabel do
begin
Left := ScaleX(80);
Top := ScaleY(70);
Parent := WizardForm;
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
WizardForm.ProgressGauge.Hide;
Panel1.Hide;
Reg.Hide;
DopSoft.Hide;
WizardForm.StatusLabel.Hide;
case CurPageID of
wpSelectDir:
begin
Panel1.Show;
Reg.Show;
DopSoft.Show;
end;
wpInstalling:
begin
WizardForm.ProgressGauge.Show;
WizardForm.StatusLabel.Show;
end;
end;
end;

Отправлено: 17:00, 15-11-2017 | #2269


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


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

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


Может ли Inno Setup проверять наличие нужной папки перед установкой? и если ее нет, то завершать процесс установки.

Отправлено: 01:13, 18-11-2017 | #2270



Компьютерный форум 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




 
Переход