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

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

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

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

Ветеран


Contributor


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


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

Профиль | Отправить 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

 

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


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

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


Nordek, спасибо за ответ.
Я так понял, что всё что я "натягал" из реестра в сценарий скрипту и даром не нунжно?
Удалил всё, что шло ниже [Registry]. Сделал инсталлятор и установил с него игру. При попытке удаления выскакивает та же ошибка.

Последний раз редактировалось бювет, 24-04-2015 в 16:34.


Отправлено: 15:38, 24-04-2015 | #541



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

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


SHVtYW4=


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

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


Цитата бювет:
Я так понял, что всё что я "натягал" из реестра в сценарий скрипту и даром не нунжно? »
Да, т.е вам не нужно добавлять информацию в скрипт из раздела "Uninstall"
Например:
У вас имеются:
Код: Выделить весь код
Software\MPC-HC
Код: Выделить весь код
SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MPC-HC_is1
В
Код: Выделить весь код
Software\MPC-HC
содержится информация о настройках, которая в будущем может пригодиться (Зависит от возможностей): Может быть как добавлено содержимое в скрипт, так и нет (т.к в другом случае информация о параметрах может быть помещена в конфигурационный файл ".ini").

В
Код: Выделить весь код
Software\Microsoft\Windows\CurrentVersion\Uninstall\MPC-HC_is1
содержится информация о приложении, контакты и пр. В тоже время, благодаря информации которая содержится в "MPC-HC_is1", позволит без труда деинсталлировать приложение.

Т.е для деинсталляции, достаточно такой информации:
Код: Выделить весь код
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MPC-HC_is1]
"DisplayIcon"="C:\\Program Files\\MPC-HC\\mpc-hc.exe"
"DisplayName"="Media Player Classic Home Cinema"
"UninstallString"="C:\\Program Files\\MPC-HC\\uninsall.exe"
Даже при добавлении информации из "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MPC-HC_is1" в скрипт, то ранее внесённая информация в [Registry], в реестре не будет числиться. Будет внесена та информация, которая внесена в секцию [Setup]:
Код: Выделить весь код
[Setup]
AppId=ID Приложения
AppVersion=Версия
AppPublisher=Издатель
AppPublisherURL=Сайт создателя
AppSupportURL=Поддержка
AppUpdatesURL=Обновления
UninstallDisplayName=Имя
UninstallDisplayIcon=Значок,Индекс значка
AppModifyPath=Изменения
AppComments=Комментарии
AppContact=Контакты
AppReadmeFile=Файл Readme
AppSupportPhone=Телефон
По этому, вам в секцию [Registry], добавлять информацию вида:
Код: Выделить весь код
[Registry]
Root: HKLM; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MPC-HC_is1
не нужно.
В некотором случае, добавление может стать ошибочной или не желательной (например в случае как 32-х и 64-х битных системах, одна из информации может являться неверной информацией (мусором)).


Цитата бювет:
При попытке удаления выскакивает та же ошибка. »
Смотрите внимательно:
Код: Выделить весь код
[Files]
Source: C:\Program Files (x86)\GothicIII\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs

Вы компилируете напрямую с "C:\Program Files (x86)\GothicIII"
В инсталляторе прописано "C:\Program Files (x86)\GothicIII\*" + Обрабатовать подкаталоги + Создавать все подкаталоги: Это значит, что в инсталлятор входит всё содержимое.
Вы не учли одно "но", то что в инсталлятор не должны входить файлы "unins000.dat" и "unins000.exe".

Чтоб не путаться, скопируйте содержимое: "C:\Program Files (x86)\GothicIII" в другое удобное место.

Например:
Зайдите в "C:\Program Files (x86)" и скопируйте от туда папку "GothicIII" на локальный диск "D:\" т.е чтоб получилось "D:\GothicIII"
Затем зайдите в "D:\GothicIII" и в папке "GothicIII" удалите "unins000.dat" и "unins000.exe".
В скрипте, в секции [Files] замените:
Код: Выделить весь код
Source: C:\Program Files (x86)\GothicIII\Gothic3.exe; DestDir: {app}; Flags: ignoreversion
Source: C:\Program Files (x86)\GothicIII\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs
на
Код: Выделить весь код
Source: D:\GothicIII\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs


Строка вида C:\Program Files (x86)\GothicIII\Gothic3.exe вам не нужна, потому-что у вас и так входит всё содержимое каталога.

Последний раз редактировалось Nordek, 25-04-2015 в 02:41.

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

Отправлено: 23:44, 24-04-2015 | #542


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


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

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


Nordek, спасибо огромное! Изумительный Вы человек! Вместо того, что бы просто кинуть пару строк кода ламеру с подсказкой куда их вставить, Вы пошагово разжовываете в чём моя ошибка (как хороший преподаватель), объясняете где я был не прав... О, боженька ты мой! В Вас толерантности на десять человек! Я просто счастлив, что попал на этот форум даже из-за того, что есть возможность пообщаться с такими людьми! Ещё раз огромное спасибо.

Последний раз редактировалось бювет, 25-04-2015 в 07:18.


Отправлено: 06:59, 25-04-2015 | #543


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


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

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


Здравствуйте, подскажите пожалуйста можно-ли каким-то образом перенести часть названия (текста) задачи на вторую строку.

Допустим (произвольное название)
[Tasks]
Name: zadacha1; Description: Установить/Обновить Название программы Версия программы (от: число месяц год)

Хочу чтобы на странице инсталлятора название задачи выглядело следующим образом:

Установить/Обновить Название программы
Версия программы (от: число месяц год)

Отбивать строку пробелами как-то не серьёзно (каждый раз приходится подбирать заново при наличии/отсутствии прокрутки в задачах или при изменении названия)
Есть какой-нибудь способ типа +#13#10+ или что-то типа того?

Отправлено: 10:31, 25-04-2015 | #544


SHVtYW4=


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

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


Цитата palsn2000:
Хочу чтобы на странице инсталлятора название задачи выглядело следующим образом:
Установить/Обновить Название программы
Версия программы (от: число месяц год) »
Код: Выделить весь код
[CustomMessages]
zadacha1=Установить/Обновить Название программы %nВерсия программы (от: число месяц год)

[Tasks]
Name: zadacha1; Description: {cm:zadacha1}
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:10, 25-04-2015 | #545


Аватара для OldGamer

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


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

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


Всем привет!

Подскажите, пожалуйста, нубу, пример кода (скрипта) на установку доп. компонентов (DirectX, Visual C++) ?
Сойдёт либо тихая установка, либо в конце шла - без разницы.

Заранее Большое Спасибо!

Отправлено: 12:16, 26-04-2015 | #546


Аватара для Dodakaedr

Ветеран


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

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


OldGamer, Вот здесь посмотрите Ссылка
еще такое есть
Скрытый текст
Код: Выделить весь код
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: icons\Mp; Description: Создать ярлык на рабочем столе для одиночной игры (Mp)
Name: soft; Description: Дополнительные програмное обеспечение
Name: soft\directx; Description: Обновить DirectX
Name: soft\VCCheck; Description: Установить Microsoft Visual C++
Name: soft\oalinst; Description: Установить Open AL
Name: soft\PhysX; Description: Установить Nvidia PhysX
Name: soft\ubisoft_Game_Launcher; Description: Установить Ubisoft Game Launcher
Name: icons; Description: Дополнительные значки
Name: icons\sp; Description: Создать ярлык на рабочем столе для одиночной игры (Sp)
Name: icons\Mp; Description: Создать ярлык на рабочем столе для одиночной игры (Mp)

[Run]
Filename: {src}\DirectX\DXSETUP.exe; Parameters: /silent; StatusMsg: Обновление DirectX...; Tasks: soft\directx; Flags: waituntilterminated
Filename: {src}\vcredist\vcredist_x86.exe; Parameters: /q; StatusMsg: Установка Microsoft Visual C++ ...; Tasks: soft\VCCheck; Flags: runhidden waituntilterminated
Filename: {src}\Redist\oalinst.exe; Parameters: /silent; MinVersion: 4.0,5.0; StatusMsg: Идет установка дополнительных программ...; Tasks: soft\oalinst; Flags: waituntilterminated
Filename: {src}\PhysX_9.10.0224_SystemSoftware.exe; Parameters: /quiet; MinVersion: 4.0,5.0; StatusMsg: Идет установка Nvidia PhysX; Tasks: soft\PhysX; Flags: waituntilterminated
Filename: {src}\GameLauncher\UbisoftGameLauncherInstaller.exe; Parameters: /silent; MinVersion: 4.0,5.0; StatusMsg: Идет установка Ubisoft Game Launcher...; Tasks: soft\Ubisoft_Game_Launcher; Flags: waituntilterminated

-------
Inno Setup 5 Ultra Unicode


Последний раз редактировалось Dodakaedr, 26-04-2015 в 19:12.

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

Отправлено: 14:07, 26-04-2015 | #547


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


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

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


Добрый день, народ!
Подскажите пожалуйста, Inno Setup юзаю 3-ий день и потому не совсем втыкаю как и что, поэтому прошу помощи.
Задача такая - нужен установщик и апдейтер в одном. То есть если приложение не установлено - идет установка, если установлено, то соответственно обновление.
Причем при обновлении нужно копировать новый екзе, и после этого запускать второй екзешник, который будет делать обновление скриптов в базе. После всего этого закрывать установщик.
Записывать что-то в регистр не обязательно.

Как это сделать? Я нашел код сравнивающий версии файлов, впихнул его в раздел Code, но что делать дальше ума не приложу, да к тому же компилятор ругается на строку 47.
Код: Выделить весь код
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
AppId={{1419C2B5-9C27-42DE-9424-9EB8FEEF4C3B}
AppName=MyApp
AppVersion=1.0.0.3
AppPublisher=Студия "MyApp"
DefaultDirName={pf}\MyApp
DefaultGroupName=MyApp
LicenseFile=C:\CVSWork\MyApp\license.txt
OutputDir=C:\CVSWork\MyApp\Out
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes

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

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1

[Files]
Source: "C:\CVSWork\MyApp\ShopUchet.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\CVSWork\MyApp\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

{Code}
type
  VersionState = (vsNotInstalled, vsOlderInstalled, vsSameInstalled, vsNewerInstalled);

function GetVersionState(): VersionState;
var
  ExePath: String;
  VersionMS, VersionLS: Cardinal;
begin
  ExePath := ExpandConstant('{app}\MyApp.exe');
  if GetVersionNumbers(ExePath, VersionMS, VersionLS) then begin
    if (VersionMS < {#VersionMS}) or ((VersionMS = {#VersionMS}) and (VersionLS < {#VersionLS})) then begin
      Result := vsOlderInstalled;
    end else if (VersionMS > {#VersionMS}) or ((VersionMS = {#VersionMS}) and (VersionLS > {#VersionLS})) then begin
      Result := vsNewerInstalled;
    end else begin
      Result := vsSameInstalled;
    end;
  end else begin
    Result := vsNotInstalled;
  end;
end;

function OnNextButtonClick(CurPageId: Integer): Boolean;
begin
  Result := True;
  if CurPageId = wpSelectDir then begin
    if GetVersionState() = vsNewerInstalled then begin
      Result := SuppressibleMsgBox('A newer version of the application is already installed.  Are you sure you want to '
         + 'downgrade to {#MyAppVersion}?', mbConfirmation, MB_YESNO, IDYES) = IDYES;
    end;
  end;
end;

[Icons]
Name: "{group}\ShopUchet"; Filename: "{app}\MyApp.exe"
Name: "{commondesktop}\MyApp"; Filename: "{app}\MyApp.exe"; Tasks: desktopicon
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\MyApp"; Filename: "{app}\MyApp.exe"; Tasks: quicklaunchicon

[Run]
Filename: "{app}\MyApp.exe"; Description: "{cm:LaunchProgram,MyApp}"; Flags: nowait postinstall skipifsilent
строка, на которую ругается компилятор "if (VersionMS < {#VersionMS}) or ((VersionMS = {#VersionMS}) and (VersionLS < {#VersionLS})) then begin"

Отправлено: 11:58, 27-04-2015 | #548


Аватара для kotyarko@fb

Старожил


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

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


Цитата aidynchik:
строка, на которую ругается компилятор "if (VersionMS < {#VersionMS}) or ((VersionMS = {#VersionMS}) and (VersionLS < {#VersionLS})) then begin" »
Вы не указали эти директивы, вот и ругается.
Перед секцией [Setup] (ну или же в любом месте, где вам угодно), прописываете:
Код: Выделить весь код
#define VersionMS "необходимое_вам_значение"
#define VersionLS "необходимое_вам_значение"
З.ы. это директивы препроцессора, встроенного в компилятор. Не все компиляторы имеют его.

-------
http://forum.worldoftanks.ru/topic/1429925-/
Исходник моего установщика: https://bitbucket.org/Kotyarko_O/kmp

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

Отправлено: 13:12, 27-04-2015 | #549


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


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

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


Цитата:
Вы не указали эти директивы, вот и ругается.
Перед секцией [Setup] (ну или же в любом месте, где вам угодно), прописываете:
спасибо, вставил директивы. А что дальше делать, как заставить теперь сработать эту функцию?
Т.к. установка проходит вполне гладко, и пошагово компилятор туда не заходит

Отправлено: 06:27, 28-04-2015 | #550



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




 
Переход