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

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

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

Ветеран


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


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

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


Изменения
Автор: jameszero
Дата: 08-11-2010
Описание: тема закрыта
Лимит страниц.
Тема закрыта.
Продолжение по ссылке Скрипты Inno Setup. Помощь и советы [часть 3]




Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


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

  • Inno Script Generator - ещё один редактор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать;

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы. Официальный сайт - недоступен.
    Последняя версия: 2.0.8 [12.11.2006] - Страница с зеркалами;

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

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

  • InnoSetup Script Joiner - Программа для объединения нескольких скриптов InnoSetup в один;

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


Ссылка на архив предыдущей темы (также можно скачать из вложения)

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.


Отправлено: 22:06, 23-08-2009

 

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


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

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


Цитата:
Прочитал в руководствах по Inno Setup о двух различных методах защиты инсталлятора от "вскрытия".

1. Автоматически заполняется поле ввода пароля.
2. Поле ввода пароля не заполняется вообще, а в функции проверки пароля пишем:
Код: Выделить весь код
Result:= True
Первый метод я освоил и уже применял на практике... Но второй меня удивил... В руководстве, в котором я о нём прочёл, он назван "Невзламываемый экзешник".

Понятно, что раз поле ввода пароля не заполняется, значит и "вынуть" этот самый пароль не от куда...
Хочу узнать у опытных программистов, какой из этих двух методов надёжнее... а так же, что именно так хорошо защищает второй метод: запакованный контент или исходник, или и то и другое?
И ещё 1 вопрос, связанный с защитой инсталлятора...
Если зашифровать инсталлятор ([setup] Encryption=Yes), то возникают проблемы при использовании дополнительных dll ([Files] Flags: dontcopy).
Насколько хорошо защищён инсталлятор (в т.ч. его исходник) если использовать пароль без шифрования?

Подскажите, как использовать доп. библиотеки вместе с шифрованием, как их извлекать после подтверждения пароля (но до распаковки основных файлов)...

Отправлено: 20:29, 04-02-2010 | #1211



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

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


Аватара для semiono

Ветеран


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

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


Столкнулся с такой трудностью:
Код: Выделить весь код
DefaultDirName={reg:HKLM32\Software\test,ID|{cf}\{{9EA325EA-2012-4EFD-83AA-1EF32414E39F}}
Данный код создаёт папку: {9EA325EA-2012-4EFD-83AA-1EF32414E39F}} в {cf}\

Вообщем выход нашёл такой:
Код: Выделить весь код
DefaultDirName={reg:HKLM32\Software\VST,PID|{cf}\{code:CLSID}}

[код]
function CLSID(Param: String): String;
begin
  Result := ExpandConstant('{{9EA325EA-2012-4EFD-83AA-1EF32414E39F}');
end;
Так я решил проблему с квотированием.

-------
Полезное сообщение


Последний раз редактировалось semiono, 04-02-2010 в 21:07.


Отправлено: 20:54, 04-02-2010 | #1212


Аватара для semiono

Ветеран


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

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


Опять загвоздка новая! Нужно в реестре перевернуть слеш...

"InstallDir" = D:\la-la-la
заменить на
"InstallDir" = D:/la-la-la/

Как это можно зделать? Слеш в конце обязателен!
Длина пути и вложенность директорий разумеется неопределены и могут быть разными.

----
Ну ежели в InnoSetup нету api ? Тогда я написал пару строк Aut2Exe zzz.au3 для [Run]

Код: Выделить весь код
RegWrite("HKCU\Software\Nexus", "ContentPath", "REG_SZ", StringRegExpReplace( RegRead("HKCU\Software\Nexus", "ContentPath"), "\\", "/") & "/")
Но InnoSetup хотелось бы всё же тоже узнать. ??

-------
Полезное сообщение


Последний раз редактировалось semiono, 04-02-2010 в 23:17.


Отправлено: 22:44, 04-02-2010 | #1213


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


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

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


Цитата semiono:
Но InnoSetup хотелось бы всё же тоже узнать. ?? »
Можно так
Код: Выделить весь код
procedure CurStepChanged(CurStep: TSetupStep);
var
  S: String;
begin
  if CurStep = ssPostInstall then
  begin
    S := AddBackSlash(ExpandConstant('{app}'));
    StringChangeEx(S, '\', '/', True);
    RegWriteStringValue(HKLM, 'Software\My Company\My Program', 'InstallDir', S);
  end;
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:06, 05-02-2010 | #1214


Аватара для svensoft

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


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

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


YURSHAT, скажи пожалуйста какой параметр нужно указать при загрузке скина, чтобы рамка скина была снаружи ?.. У меня при загрузке скина рамка вставляется внутрь WizardForm , тем самым сдвигая фон вместе со всем находящимся на нем и мне приходится размеры WizardForm подгонять вручную, т.е. фоновый рисунок предположим 790*533 , при этом размеры WizardForm приходится вручную корректировать - ровно на рамку больше 793*563 ..

Последний раз редактировалось svensoft, 05-02-2010 в 02:09.


Отправлено: 01:58, 05-02-2010 | #1215


Ветеран


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

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


Sotonisto, спасибо.
Цитата МИШАНЧИК:
Подскажите пожалуйста, я сделал на финишной странице чекбокс, а как сделать чтоб он открывал ReadMe.txt находящийся в {app}? »
Цитата Sotonisto:
Код:
[Run]
Filename: {app}\ReadMe.txt; Flags: shellexec postinstall skipifsilent »
Цитата Sotonisto:
Ты примерно так хотел? »
Только я хотел не из [Run], а из секции [_Code]
Помогите пожалуйста, кто знает как это сделать.

Отправлено: 04:17, 05-02-2010 | #1216


Ветеран


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

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


Цитата serega355:
Может, кто- нибудь знает какой код надо ввести, чтобы на любой диск при её установке каталог был Rockstar Games\GTA »
Пример
Код: Выделить весь код
[Setup]
AppName=Rockstar Games
AppVerName=Rockstar Games v 1.5
DefaultDirName={pf}\Rockstar Games\GTA
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl

[Code]
function LastPos(symbol, str: string): Integer;
var
  i: Integer;
begin
  for i:= Length(str) downto 1 do
    if str[i] = symbol then Break;
  Result:= i;
end;

procedure DirEditChange(Sender: TObject);
var
  n: Integer;
  s: string;
begin
  n:= LastPos('\', WizardForm.DirEdit.Text);
  s:= Copy(WizardForm.DirEdit.Text, 1, n);
  if Pos('Rockstar Games\GTA', WizardForm.DirEdit.Text) = 0 then
    WizardForm.DirEdit.Text:= s + 'Rockstar Games\GTA';
end;

procedure InitializeWizard();
begin
  WizardForm.DirEdit.OnChange:= @DirEditChange;
end;


Цитата serega355:
Создаю инсталлятор, и когда устанавливаю игру в реестр заносится только один путь из двух. »
почитайте внимательно Справку
Цитата из Справки:
deletekey
Когда установлен этот флаг, инсталлятор сначала попытается удалить ключ, если он существует, со всеми его параметрами и разделами. Если ValueType=none, после этого он создаст новый ключ и параметр.
Для предотвращения негативных последствий, этот флаг игнорируется при установке, если Subkey пустой или состоит только из бэкслешей.
т.е. у вас при внесении второго ключа, сначала удаляется первый.

Цитата semiono:
Нужно в реестре перевернуть слеш... »
Почитайте справку, вам поможет function StringChange(var S: String; const FromStr, ToStr: String): Integer;

Цитата МИШАНЧИК:
я сделал на финишной странице чекбокс, а как сделать чтоб он открывал ReadMe.txt находящийся в {app}? »
Каким образом сделали?
Если через [Соdе], то задаёте ему событие OnClick с ссылкой на процедуру, в которой проверяете, если чебокс отмечен, то запускаете свой файл через function ShellExec(const Verb, Filename, Params, WorkingDir: String; const ShowCmd: Integer; const Wait: TExecWait; var ErrorCode: Integer): Boolean;

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.

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

Отправлено: 10:19, 05-02-2010 | #1217


Ветеран


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

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


Serega, спасибо!
Цитата Serega:
Каким образом сделали?
Если через [Соdе], то задаёте ему событие OnClick с ссылкой на процедуру »
А можно примером, короткий скрипт, для наглядности?
Заранее большое спасибо!
P.S. А если создать чекбокс на вкладке WizardForm Designer, на этой же вкладке можно к ниму как-то прицепить действие?

Последний раз редактировалось МИШАНЧИК, 05-02-2010 в 12:46.


Отправлено: 11:44, 05-02-2010 | #1218


Ветеран


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

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


Цитата МИШАНЧИК:
А если создать чекбокс на вкладке WizardForm Designer, на этой же вкладке можно к ниму как-то прицепить действие? »
Нет, нужно писать в ручную.
Сделал обычную проверку на отмеченный чебокс при завершении инсталляции. Чебокс сделал в WizardForm Designer.
Пример
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl

[Files]
Source: compiler:Examples\Readme.txt; DestDir: {app}; Flags: ignoreversion

[Code]
{ RedesignWizardFormBegin } // Don't remove this line!
// Don't modify this section. It is generated automatically.
var
  NewCheckBox1: TNewCheckBox;

procedure RedesignWizardForm;
begin
  { NewCheckBox1 }
  NewCheckBox1 := TNewCheckBox.Create(WizardForm);
  with NewCheckBox1 do
  begin
    Parent := WizardForm.FinishedPage;
    Left := ScaleX(216);
    Top := ScaleY(192);
    Width := ScaleX(137);
    Height := ScaleY(17);
    Caption := 'Прочитать Readme.txt';
    Checked := True;
    State := cbChecked;
  end;

  NewCheckBox1.TabOrder := 5;

{ ReservationBegin }
  // This part is for you. Add your specialized code here.

{ ReservationEnd }
end;
// Don't modify this section. It is generated automatically.
{ RedesignWizardFormEnd } // Don't remove this line!

procedure InitializeWizard();
begin
  RedesignWizardForm;
end;

procedure DeinitializeSetup();
var
  ResultCode: Integer;
begin
  if NewCheckBox1.Checked then
    ShellExec('open', 'Readme.txt', '', ExpandConstant('{app}'), SW_SHOWNORMAL, ewNoWait, ResultCode);
end;

[ISFormDesigner]
WizardForm=FF0A005457495A415244464F524D003010CB01000054504630F10B5457697A617264466F726D0A57697A617264466F726D0C436C69656E744865696768740366010B436C69656E74576964746803EF010C4578706C696369744C65667402000B4578706C69636974546F7002000D4578706C69636974576964746803F7010E4578706C696369744865696768740383010D506978656C73506572496E636802600A54657874486569676874020D00F10C544E65774E6F7465626F6F6B0D4F757465724E6F7465626F6F6B00F110544E65774E6F7465626F6F6B506167650B57656C636F6D65506167650D4578706C69636974576964746803F1010E4578706C696369744865696768740339010000F110544E65774E6F7465626F6F6B506167650C46696E6973686564506167650D4578706C69636974576964746803F1010E4578706C69636974486569676874033901000C544E6577436865636B426F780C4E6577436865636B426F7831044C65667403D80003546F7003C0000557696474680389000648656967687402110743617074696F6E141D000000D09FD180D0BED187D0B8D182D0B0D182D18C20526561646D652E74787407436865636B65640905537461746507096362436865636B6564085461624F7264657202050000000000

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.

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

Отправлено: 13:58, 05-02-2010 | #1219


Ветеран


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

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


Serega, спасибо!
И ещё вопрос. В инсталшилде при установке дополнительного п.о. на фоне инсталятора появляется маленькая картинка на которой написано "Устанавливается DirectX". У меня DirectX устанавливается так:
Код: Выделить весь код
procedure CurStepChanged(CurStep: TSetupStep);
Var
  ResultCode: integer;
  begin
    if CurStep = ssPostInstall then
      begin
    if DirectX.Checked then
      begin
      StatusLabel.Caption:=ExpandConstant('{cm:DirectXInstall}')
      Exec(ExpandConstant('{src}\Redist\DirectX\DXSETUP.exe'), '/silent', ExpandConstant('{src}\Redist\DirectX'), SW_SHOW, ewWaitUntilTerminated, ResultCode);
      end;
    end;
  end;
А можно ли как-то сделать чтоб на этом фоне тоже появлялась маленькая картинка?

Отправлено: 15:48, 05-02-2010 | #1220



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58
[архив] Inno Setup .:[все вопросы]:. Mchik Автоматическая установка приложений 1329 23-08-2009 20:13
[архив - Часть 2] AutoIt скрипты Vadikan AutoIt 985 21-01-2008 09:58
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59
[Архив - Часть 1.1] AutoIt скрипты EgOrus AutoIt 335 04-02-2006 16:58




 
Переход