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

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

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

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

Ветеран


Contributor


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


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

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


Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:
Inno Setup [все вопросы] часть 1
Inno Setup [все вопросы] часть 2
Скрипты Inno Setup. Помощь и советы [часть 3]
Скрипты Inno Setup. Помощь и советы [часть 4]

Отправлено: 03:49, 21-05-2012

 

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

Ветеран


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

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


Johny777
ненене
я не зря привел скриншот, PrivilegesRequired проверка на входимость пользователя в системную локальную/доменную группу Администраторы
А на моем скрине выше - запуск от root-администратора (в лине это root, в винде не знаю как называется, причем пользователь Администратор и вот этот root-администратор - разные вещи, у последнего ВСЕ права на ВСЁ, в тч на реестр)
Вот такой запуск мне и нужен, от root'a

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


Отправлено: 14:43, 26-11-2012 | #1331



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

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


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

Ветеран


Contributor


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

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


Цитата Johny777:
если указатель на переменную структуры (var MyVariable :SECURITY_ATTRIBUTES), то нужно описать SECURITY_ATTRIBUTES в разделе type и присвоить этот тип соответствующим переменным (в заголовке ф-ции и в разделе var)
короче суть в том что указатель можно заменить на переменную »
Johny777, указатель и есть переменная, хранящая адрес переменной, на которую указывает указатель. Адрес - число из диапазона целых чисел от 0 до 2^31-1 (диапазон адресов памяти, доступных 32-разрядному процессу). За неимением указателей в Inno последние можно заменить переменными целочисленного типа, доступными хранить числа из вышеуказанного диапазона.
Теперь опять про CreateFile с параметром lpSecurityAttributes. Можно объявить как lpSecurityAttributes: SECURITY_ATTRIBUTES, заполнить самому структуру и в функцию передать объявленную переменную типа SECURITY_ATTRIBUTES, а можно объявить как lpSecurityAttributes: Longint, вычислить адрес объявленной переменной самому (сам понимаешь, что в Inno адрес такой переменной не получить. Исключение: для переменной строкового типа можно получить ее адрес при помощи ф-ии CastStringToInteger) и передать в функцию. Но 0 передать можно (This parameter can be NULL).
В общем, для просветления кармы почитай http://www.transl-gunsmoker.ru/2009/09/blog-post.html

Цитата R.i.m.s.k.y.:
причем пользователь Администратор и вот этот root-администратор - разные вещи, у последнего ВСЕ права на ВСЁ, в тч на реестр »
R.i.m.s.k.y., это один и тот же пользователь. Установщику с дефолтным (admin) значением директивы PrivilegesRequired до лампочки ПКМ Запуск от имени администратора.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:53, 26-11-2012 | #1332


Аватара для Mailchik

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


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

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


Цитата Johny777:
Скажите пожалуйста как добавлять цветные строки в TListBox.Items.Add для события OnDrawItem TDrawItemEvent = procedure(Control: TWinControl; Index: Integer; Rect: TRect; State: Byte); не хочет работать
это событие заложено, но видимо еще не реализовано. надо ждать, когда restools реализуют.
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:29, 26-11-2012 | #1333


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

Ветеран


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

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


Цитата El Sanchez:
R.i.m.s.k.y., это один и тот же пользователь. »
нет, не один и тот же
При запуске от рут-админа (как на скрине выше) доступны локальные ресурсы пользователя, но с админскими правами, а если запустить от имени другого пользователя и ввести "Администратор" - пасс, ресурсы совсем другие
Энивей по вашей логике должен работать скрипт
Код: Выделить весь код
[Setup]
AppId={{DACC4133-A178-4B85-842A-58B74AEDE27E}
AppName=My Program
AppVersion=1.5
AppPublisher=My Company, Inc.
AppPublisherURL=http://www.example.com/
AppSupportURL=http://www.example.com/
AppUpdatesURL=http://www.example.com/
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
DisableProgramGroupPage=yes
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
PrivilegesRequired=admin

[Registry]
Root: HKCU; SubKey: Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.TS\UserChoice; ValueType: string; ValueName: ProgId; ValueData: Applications\mpc-hc.exe
однако ошибка доступа
Код: Выделить весь код
---------------------------
Ошибка
---------------------------
Ошибка создания ключа реестра:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.TS\UserChoice



RegCreateKeyEx: сбой; код 5.

Access is denied.



Нажмите «Повтор», чтобы повторить попытку, «Пропустить», чтобы пропустить файл, или «Отказ» для отмены установки.
---------------------------
Abort   Retry   Ignore   
---------------------------

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


Отправлено: 11:18, 27-11-2012 | #1334


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


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

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


del.

Последний раз редактировалось TecktonEast, 27-11-2012 в 17:06. Причина: решено


Отправлено: 14:45, 27-11-2012 | #1335


Аватара для habib2302

Ветеран


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

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


люди.помогите мне объединить эти два скрипта

Код: Выделить весь код
procedure InitializeUninstallProgressForm();
begin
  with TBitmapImage.Create(nil) do
begin
                Parent := UninstallProgressForm;
                Bitmap.LoadFromResourceName(HInstance, '_IS_logo');
                Stretch:= true;
                SetBounds(ScaleX(20), ScaleY(315), ScaleX(154), ScaleY(42)); {первые 2 параметра - координаты левогого верхнего угла по горизонтали и вертикали, дальше ширина и высота, до которой растянуть}
  end;
end;
Код: Выделить весь код
procedure InitializeUninstallProgressForm();
begin
FileCopy(ExpandConstant('{app}\WizardSmallImage.bmp'), ExpandConstant('{app}\WizardSmallImage.bmp'), False);
with UninstallProgressForm.WizardSmallBitmapImage do
begin
Bitmap.LoadFromFile(ExpandConstant('{app}\WizardSmallImage.bmp'));
end;
end;

-------
Помог? От "Полезное сообщение" не откажусь!!!


Отправлено: 21:28, 27-11-2012 | #1336


Аватара для pritoreanic

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


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

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


Цитата habib2302:
habib2302 »
читать дальше »
Код: Выделить весь код
procedure InitializeUninstallProgressForm();
begin
  with TBitmapImage.Create(nil) do
begin
   Parent := UninstallProgressForm;
   Bitmap.LoadFromResourceName(HInstance, '_IS_logo');
   Stretch:= true;
   SetBounds(ScaleX(20), ScaleY(315), ScaleX(154), ScaleY(42));
  end;
end;

begin
 FileCopy(ExpandConstant('{app}\WizardSmallImage.bmp'), ExpandConstant('{app}\WizardSmallImage.bmp'), False);
with UninstallProgressForm.WizardSmallBitmapImage do
  begin
   Bitmap.LoadFromFile(ExpandConstant('{app}\WizardSmallImage.bmp'));
  end;
end.
Это сообщение посчитали полезным следующие участники:

Отправлено: 01:32, 28-11-2012 | #1337


Забанен


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

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


Цитата R.i.m.s.k.y.:
как в начале установщика получать права "от администратора"? »
Никак! Inno не умеет этого делать.

На всё про всё пара примеров.
Пример первый

Код: Выделить весь код
[Setup]
PrivilegesRequired=admin
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputDir=.

[Dirs]
Name: {app}; Permissions: everyone-modify
Код: Выделить весь код
Permissions: admins-full
Permissions: authusers-full
Permissions: everyone-full
Permissions: powerusers-full
Permissions: system-full
Permissions: users-full

Пример второй

Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program 1.5
; программа установки обнаружит работает ли он, как повышенный пользователь администратора и по умолчанию путь установки в Program Files
DefaultDirName={code:DefDirRoot}\AppName
DefaultGroupName=My Program
OutputDir=.

;Это приведет к тому, чтобы запустить программу установки без подъема для не-администратора пользователей из под Windows.
PrivilegesRequired=none

[*Code]
function IsRegularUser(): Boolean;
begin
Result := not (IsAdminLoggedOn or IsPowerUserLoggedOn);
end;

function DefDirRoot(Param: String): String;
begin
if IsRegularUser then
Result := ExpandConstant('{localappdata}')
else
Result := ExpandConstant('{pf}')
end;


Как вы правильно заметили
Цитата R.i.m.s.k.y.:
root-администратора »
как в линукс.

Цитата El Sanchez:
это один и тот же пользователь. Установщику с дефолтным (admin) значением директивы PrivilegesRequired до лампочки ПКМ Запуск от имени администратора. »
Не путать с Администратором Windows.

Как не пытайтесь. вот это:
Код: Выделить весь код
[Registry]
Root: HKLM; Subkey: SYSTEM\CurrentControlSet\Enum\Root\LEGACY_MY_HARDWARE_SERVICE; ValueType: dword; ValueName: NextInstance; ValueData: $00000001; Flags: uninsdeletekeyifempty uninsdeletevalue
Даже из под админа загнать не получится.

Про добавление привилегий папке или файлу, вообще молчу.

Добавлю: Ни разу не пробовал, но уверен что например NSIS способен дать повышенные привилегии, Inno нет.

Последний раз редактировалось SoulSide, 28-11-2012 в 14:09.

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

Отправлено: 13:52, 28-11-2012 | #1338


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

Ветеран


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

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


Цитата SoftLine:
Никак! Inno не умеет этого делать. »
я в курсе что инно этого не сделает, но ведь из под инно можно вызвать что-нибудь чтобы внести изменения? к примеру хитрый запуск reg import
Если можно расширить вопрос не только записью в реестр но запуском приложений от рут-админа

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


Последний раз редактировалось R.i.m.s.k.y., 28-11-2012 в 14:11.


Отправлено: 14:03, 28-11-2012 | #1339


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

Ветеран


Contributor


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

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


Цитата R.i.m.s.k.y.:
При запуске от рут-админа (как на скрине выше) доступны локальные ресурсы пользователя, но с админскими правами, а если запустить от имени другого пользователя и ввести "Администратор" - пасс, ресурсы совсем другие »
R.i.m.s.k.y., все верно, за исключением рут-админа, ну нет его и все тут. Члены группы Администраторы и сам встроенный Администратор работают с правами обычного пользователя. При входе в систему администраторы получают 2 маркера доступа, регулирующих их права в системе - пользовательский и администраторский. Рабочий стол и Explorer.exe работают с правами обычного пользователя, запущенные процессы будут являться дочерними от своего Explorer-родителя и будут наследовать его права, т.е. запускаться с правами обычного пользователя. Но как только запуск приложения потребует от системы каких-либо привилегий (доступ в системные папки, определенные кусты реестра) наличие администраторского маркера позволяет повысить права в системе. При этом отображается запрос UAC для повышения прав и при согласии приложение начинает работу с администраторскими привилегиями пользователя. Отличие же встроенного Администратора от остальных админских учеток только в том, что для Администратора запрос UAC не появляется, для него в случае необходимости права повышаются автоматически. Также система сама определяет какие из приложений требуют повышения привилегий, делает это она, если не ошибаюсь, через службу Сведения о приложении. Наличие манифеста у исполняемого файла приложения с указанным уровнем привилегий, цифровая подпись помогут корректно определить службе уровень необходимых привилегий для запуска. В Inno Setup манифест подключается через секцию Setup, директива PrivilegesRequired, значение по умолчанию admin. No comments.
Однако есть приложения, уровень доступа которого определить система или не может, или нет необходимости. Это либо какое-нибудь старое, не подготовленное к работе в системе с UAC, приложение (без манифеста, без подписи, от неизвестного издателя), либо, например, та же консоль - cmd.exe. Запуск ее не требует админских прав, запустится она с правами обычного пользователя, но с помощью нее можно пытаться выполнять команды, доступные администраторам, например, копирование в системную директорию system32 или в корень системного диска. Естественно ничего не выйдет, ведь консоль работает с правами обычного пользователя. Вот для таких программ, для которых уровень доступа определить нельзя или нет необходимости, но запустить их с повышенными правами очень хочется и сделана опция в контекстном меню "Запуск от имени администратора". Это не запуск с правами от какого-то мифического супер-пупер администратора, а повышение своих же прав согласно наличию выданного системой администраторского маркера доступа. Microsoft-у следовало бы назвать эту опцию, например, "Запуск с повышенными правами", однако решили, что оттягивающее на себя слово "...администратора" убедит пользователя спать спокойно и не волноваться, что его урезали в правах (IMHO, конечно ). Вот как-то так.

Цитата R.i.m.s.k.y.:
Энивей по вашей логике должен работать скрипт »
Цитата R.i.m.s.k.y.:
Ошибка создания ключа реестра:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.TS\UserChoice »
R.i.m.s.k.y., тут у меня один вариант. Этот лог при запуске сетапа от имени учетной записи Администратор с вводом учетных данных (логин - пасс). Администратор активирован, пароль присвоен, но входа в учетку никогда не было, следовательно профиля нет, пользовательского куста реестра нет, писать некуда.

Цитата SoftLine:
Как не пытайтесь. вот это:
Код:
[Registry]
Root: HKLM; Subkey: SYSTEM\CurrentControlSet\Enum\Root\LEGACY_MY_HARDWARE_SERVICE; ValueType: dword; ValueName: NextInstance; ValueData: $00000001; Flags: uninsdeletekeyifempty uninsdeletevalue
Даже из под админа загнать не получится. »
SoftLine, верно, не получится. В указанный куст имеет право писать только пользователь SYSTEM, остальные только читают. Хотите туда писать - раздавайте права самостоятельно.
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:07, 29-11-2012 | #1340



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты 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
Inno Setup tradeukraine Вебмастеру 3 13-06-2006 20:39




 
Переход