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

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

 

SHVtYW4=


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

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


Цитата ChVL:
На кой ляд такую хренотень замутили в Windows - не понятно. »
Ну-ну.
Код: Выделить весь код
[Registry]
Root: HKCR; SubKey: .323; ValueType: string; ValueData: """C:\Program Files\MyTeam\MyProg\MyProg.exe"",0"; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKCR; SubKey: .323; ValueType: string; ValueData: """C:\Program Files\MyTeam\MyProg\MyProg.exe"" --started-from-file ""%1"""; Flags: uninsdeletevalue uninsdeletekeyifempty
но даже и в этом случае будет не правильно.

Правильней будет так:
Код: Выделить весь код
[Registry]
Root: HKCR; SubKey: .323; ValueType: string; ValueData: """{app}\MyTeam\MyProg\MyProg.exe"",0"; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKCR; SubKey: .323; ValueType: string; ValueData: """{app}\MyTeam\MyProg\MyProg.exe"" --started-from-file ""%1"""; Flags: uninsdeletevalue uninsdeletekeyifempty

А если учитывать то, что если в секции [Setup] будет прописан путь в DefaultDirName т.е
Код: Выделить весь код
[Setup]
DefaultDirName={pf}\MyTeam\MyProg
то в секции [Registry] можно удалить лишние значения:
Код: Выделить весь код
[Registry]
Root: HKCR; SubKey: .323; ValueType: string; ValueData: """{app}\MyProg.exe"",0"; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKCR; SubKey: .323; ValueType: string; ValueData: """{app}\MyProg.exe"" --started-from-file ""%1"""; Flags: uninsdeletevalue uninsdeletekeyifempty
И ChVL, чего первое сообщение не читаем, особое приглашение нужно?
Цитата El Sanchez:
Показать/скрыть: Дополнительные программы для Inno Setup:
  • Converter - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
    Последняя версия: 0.1.4 [13.03.2010] - Скачать;

»
Увидел?

Отправлено: 18:27, 15-02-2014 | #2281



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

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


Аватара для ChVL

Старожил


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

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


Nordek,
Какой должна быть правильная запись, я знаю. Всё, что Вы здесь расписали - так и сделано. Ещё раз внимательно прочтите мой пост.
Вопрос в другом: как автоматически пройти тот путь, который указан в моём посте, т.е. исключить необходимость ручной правки скрипта.

P.S. И с какой целью Вы мне сделали особое приглашение, я так и не понял.

Последний раз редактировалось ChVL, 15-02-2014 в 19:22.


Отправлено: 19:15, 15-02-2014 | #2282


SHVtYW4=


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

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


Цитата ChVL:
Всё, что Вы здесь расписали - так и сделано. »
Что именно сделано?
Экспортированно через
Цитата ChVL:
ISTool »
а затем правка? Про Converter ни слова не написал.
ISTool и InnoIDE не умеют правильно обрабатывать ключи.

Для этого используй Converter или Inno Script Studio - вставляют правильно, без слеша..

Цитата ChVL:
Вопрос в другом: как автоматически пройти тот путь, который указан в моём посте, т.е. исключить необходимость ручной правки скрипта. »
Совсем не получится.
Например если в файле reg присутствует путь "C:\\Program Files\\MyTeam\\MyProg\\MyProg.exe" то в ValueData так и запишется "C:\Program Files\MyTeam\MyProg\MyProg.exe" и речи, ни о каких "{app}\MyProg.exe" не может быть идти т.к в программах за ранее не заложена вставка-(автоматическая замена) переменных Inno для реестра.

И ещё один момент: На кой в секции [Registry] прописаны эти:
Код: Выделить весь код
Root: "HKCR"; Subkey: ".323"; ValueType: string; ValueData: """C:\Program Files\MyTeam\MyProg\MyProg.exe"",0"
Код: Выделить весь код
Root: "HKCR"; Subkey: ".323"; ValueType: string; ValueData: """C:\Program Files\MyTeam\MyProg\MyProg.exe"" --started-from-file ""%1"""
две строки?
Одна для значка а другая исполняемая?
При инсталляции запишется только одна, т.е при инсталляции запишется первая - а затем первую, заменит вторая - либо наоборот. По этому всё равно запишется только одно значение.

Правильнее будет так (покажу на примере ассоциации расширения *.text к AkelPad-у):
Код: Выделить весь код
[Registry]
Root: HKLM; Subkey: Software\Classes\.text; ValueType: string; ValueName: ; ValueData: AkelPad.Note; Flags: uninsdeletevalue
Root: HKLM; Subkey: Software\Classes\AkelPad.Note\DefaultIcon; ValueType: string; ValueName: ; ValueData: {app}\AkelPad.exe,1; Flags: uninsdeletevalue
Root: HKLM; Subkey: Software\Classes\AkelPad.Note\shell\open\command; ValueType: string; ValueName: ; ValueData: "{app}\AkelPad.exe ""%1"""; Flags: uninsdeletevalue
Полагаясь на возможности одних только программ для обработки - этого мало, в первую очередь нужно самому реестр понимать.

Последний раз редактировалось Nordek, 15-02-2014 в 21:39.

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

Отправлено: 20:57, 15-02-2014 | #2283


Аватара для ChVL

Старожил


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

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


Цитата Nordek:
ISTool и InnoIDE не умеют правильно обрабатывать ключи.
Для этого используй Converter или Inno Script Studio - вставляют правильно, без слеша.. »

Вот так и надо было ответить сразу.
Спасибо.

Добавлено.
Строки были приведены для примера и взяты они были из разных ключей, просто реальные имена заменены на MyProg.
Что Вы никак не успокоитесь. В каждом посте: то высокомерно делаете особое приглашение, то прямое указание, что я должен понимать в первую очередь.
Вы точно знаете уровень моих знаний? И что надо в первую, а что во вторую очередь, а? С каких щей Вы присвоили себе право поучать?

Последний раз редактировалось ChVL, 16-02-2014 в 07:05.


Отправлено: 21:35, 15-02-2014 | #2284


Аватара для Ivan_009

Ветеран


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

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


Правильно ли я убираю рамку с едитов... Зарание спасибо...

Вот:

Код: Выделить весь код
var
DirEditLabel, GroupEditLabel: TLabel;

procedure InitializeWizard;
begin

  DirEditLabel := TLabel.Create(WizardForm);
  with DirEditLabel do begin
    AutoSize:=False;
    SetBounds(ScaleX(5), ScaleY(85), ScaleX(446), ScaleY(15));
    WordWrap:= True;
    ShowAccelChar := False;
    Transparent:=True;
    Font.Name:= 'Arial'
    Font.Size:= 9;
    Font.Color:=$000000;
    Font.Style:=[fsBold];
    Caption := MinimizePathName(WizardForm.DirEdit.Text, DirEditLabel.Font, DirEditLabel.Width);
    Parent := WizardForm.SelectDirPage;
  end;

  GroupEditLabel := TLabel.Create(WizardForm);
    with GroupEditLabel do begin
    AutoSize:=False;
    SetBounds(ScaleX(5), ScaleY(85), ScaleX(446), ScaleY(15));
    WordWrap:= True;
    ShowAccelChar := False;
    Transparent:=True;
    Font.Name:= 'Arial'
    Font.Size:= 9;
    Font.Color:=$000000;
    Font.Style:=[fsBold];
    Caption := MinimizePathName(WizardForm.GroupEdit.Text, GroupEditLabel.Font, GroupEditLabel.Width);
    Parent := WizardForm.SelectProgramGroupPage;
  end;
    WizardForm.DirEdit.Text:= WizardForm.DirEdit.Text;
end;

procedure HideComponents;
begin
  WizardForm.DirEdit.Hide;
  WizardForm.GroupEdit.Hide;
  DirEditLabel.Hide;
  GroupEditLabel.Hide;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  HideComponents;
  case CurPageID of
  wpSelectDir:
  begin
  DirEditLabel.Show;
  end;
  wpSelectProgramGroup:
  GroupEditLabel.Show;
end;
end;

Отправлено: 21:50, 15-02-2014 | #2285


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


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

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


Проблема такая стоит автопределение установки по реестру, но если в реестре не находит то строка с путем пустая. Далее выбираем куда установить и оно приписывает конечным путем \Новая папка.
В оригинале хотелось бы, что если в реестре не находит игру, то самому выбрать папку куда ты хочешь установить, и чтобы не было конечным путем \Новая папка.

Заранее спасибо за ответ!

Отправлено: 23:33, 15-02-2014 | #2286


Ветеран


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

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


Цитата Farser21:
В оригинале хотелось бы, что если в реестре не находит игру, то самому выбрать папку куда ты хочешь установить, и чтобы не было конечным путем \Новая папка. »
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program v.1.2
AppId=MyApp
DefaultDirName={code:SetInstDir}

[Code]
function SetInstDir(const lpResult: String): String;
begin
    RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppID")}_is1', 'InstallLocation',  lpResult);
    if lpResult <> '' then Result := RemoveBackslash(lpResult) else Result := ExpandConstant('{pf}\My Program');
end;
Или:
Код: Выделить весь код
DefaultDirName={reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppID")}_is1, InstallLocation|{pf}\My Program}

Последний раз редактировалось saurn, 16-02-2014 в 01:53.

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

Отправлено: 00:22, 16-02-2014 | #2287


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


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

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


saurn, Смотри этим способом мы в альтернативном пути ставим нужный путь место \Новая папка. А мне нужно чтобы альтернативного пути как бы не было. Т.е. если в реестре игру не нашло, то можно было просто указать папку куда устанавливать самому вручную.

Отправлено: 13:35, 16-02-2014 | #2288


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


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

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


saurn, Задается не Новая папка а MyProgram, а мне нужно чтобы ничего вообще не задавалось. Чтобы абсолютно можно было самому в ручную выбрать нужную папку в установщике.

Отправлено: 15:18, 16-02-2014 | #2289


Ветеран


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

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


Farser21, только щас дошло о чем вы
Код: Выделить весь код
[Setup]
DefaultDirName={reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppID")}_is1, InstallLocation}
AppendDefaultDirName=no
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:36, 16-02-2014 | #2290



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




 
Переход