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

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

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

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

Ветеран


Contributor


Сообщения: 1273
Благодарности: 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

 

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

Ветеран


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

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


Цитата Johny777:
поднятие привилегий собственному процессу не поможет? »
может и поможет, но это применимо к самому установщику который уже запущен?
Цитата Johny777:
Получить иня пользователя запустившего экзешник можно »
как в таком случае достучаться до HCKU и appdata?

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


Отправлено: 23:07, 17-07-2013 | #791



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

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


Аватара для Johny777

Ветеран


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

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


Цитата R.i.m.s.k.y.:
может и поможет, но это применимо к самому установщику который уже запущен? »
да, то бишь когда есть процесс (твой конечно)
поднимай например перед тем как тебе нужно выполнить действия админа. Опускай после завершения действий
Цитата R.i.m.s.k.y.:
как в таком случае достучаться до HCKU и appdata? »
может после поднятия привилегий достучишься, но ведь HCKU - это ветка текущего пользователя. Разве проблема туда писать или читать оттуда из под текущего пользователя?

PS: Если честно я хз получится ли

=================================================================================================

Fakt_37, Так сойдёт?

читать дальше »
Код: Выделить весь код
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application


[Files]
Source: Precomp041.exe; Flags: dontcopy nocompression;


[Run]
Description: Extracting precompiled File; Filename: {tmp}\Precomp041.exe; WorkingDir: {tmp}; Parameters: твои параметры распаковки; Check: ExtractProgramm('Precomp041.exe');


[code  ]

function ExtractProgramm(const TempFileName: String): Boolean;
begin
    ExtractTemporaryFile(TempFileName);
    Result := FileExists(AddBackslash(ExpandConstant('{tmp}')) + TempFileName);
end;

Последний раз редактировалось Johny777, 18-07-2013 в 13:04.


Отправлено: 23:22, 17-07-2013 | #792


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

Ветеран


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

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


Цитата Johny777:
PS: Если честно я хз получится ли »
не, не получается
Установщик запрашивает логин/пасс админа и все делает для него
Зачем тогда в Инно флаг runAsoriginaluser? и как этот параметр работает?
Даже если запустить свой установщик из другого с runAsoriginaluser - борода, все вносится в админский акк

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


Отправлено: 13:32, 18-07-2013 | #793


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


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

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


Приветствую еще раз! Можно ли в Inno Setup поменять порядок выполнения секций? Нужно сначала [Run] прогнать, а потом уже [Dirs] и [Files].

Отправлено: 17:15, 18-07-2013 | #794


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


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

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


Цитата Johny777:
Fakt_37, Так сойдёт?
читать дальше » »
да спасибо должно помочь, и еще один вопрос, как сделать чтоб можно было выбрать русскую (озвучку. текст и тд)или английскую, причём если выбираешь русскую чтоб только она и устанавливалась, и на файл с английской инсталятор не обращал внимания?

Отправлено: 17:20, 18-07-2013 | #795


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

Ветеран


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

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


mifkys, нет
используй CurStepChanged/CurPageChanged

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


Отправлено: 18:03, 18-07-2013 | #796


Аватара для nik1967

Старожил


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

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


Всем доброго времени суток! Возникла необходимость средствами Inno узнать название видеоадаптера. Кто подскажет, как с помощью API в Inno это провернуть?

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


Отправлено: 18:42, 18-07-2013 | #797


Ветеран


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

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


Fakt_37, читайте в справке про секцию [Components]
Код: Выделить весь код
[Components]
Name: rus; Description: Русская озвучка; Types: full; Falgs: exclusive
Name: eng; Description: Английская озвучка; Types: custom; Falgs: exclusive

[Files]
Source: rus\*; DestDir: {app}; Components: rus; Flags: recursesubdirs overwritereadonly createallsubdirs ignoreversion;
Source: eng\*; DestDir: {app}; Components: eng; Flags: recursesubdirs overwritereadonly createallsubdirs ignoreversion;
Цитата R.i.m.s.k.y.:
флаг exclusive »
Точно, запамятовал)

Последний раз редактировалось saurn, 18-07-2013 в 19:47.

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

Отправлено: 19:10, 18-07-2013 | #798


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

Ветеран


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

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


nik1967, в шапке скрипт Ultimate Test Black Skin, в нем выдергивается не только имя адаптера, но и память, разрешение экрана...

Fakt_37 saurn, флаг exclusive

Код: Выделить весь код
[Components]
Name: rus; Description: Русская озвучка; Types: full; Falgs: exclusive
Name: eng; Description: Английская озвучка; Types: custom; Falgs: exclusive

[Files]
Source: rus\*; DestDir: {app}; Components: rus; Flags: recursesubdirs overwritereadonly createallsubdirs ignoreversion;
Source: eng\*; DestDir: {app}; Components: eng; Flags: recursesubdirs overwritereadonly createallsubdirs ignoreversion;

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

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

Отправлено: 19:15, 18-07-2013 | #799


Аватара для Johny777

Ветеран


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

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


nik1967, список имён видеокарт через winapi-функцию EnumDisplayDevices() :

читать дальше »
Код: Выделить весь код
#define A = (Defined UNICODE) ? "W" : "A"


const
    DISPLAY_DEVICE_MODESPRUNED = $8000000;


type
    _DISPLAY_DEVICE = record
        cb: DWORD;
        #ifdef UNICODE
            DeviceName: array[0..31] of AnsiChar;
            DeviceString: array[0..127] of AnsiChar;
        #else
            DeviceName: array[0..31] of Char;
            DeviceString: array[0..127] of Char;
        #endif
        StateFlags: DWORD;
    end;
    
    Pointer = Integer;
  
  
function EnumDisplayDevices(Unused: Pointer; iDevNum: DWORD; var lpDisplayDevice: _DISPLAY_DEVICE; dwFlags: DWORD): BOOL; external 'EnumDisplayDevices{#A}@user32.dll stdcall';


procedure Inc(var Int: Integer);
begin
    Int := Int + 1;
end;


function CharArrayToString(aChar: array of Char): String;
begin
    Result := '';
    while aChar[Length(Result)] <> #0 do Insert(aChar[Length(Result)], Result, Length(Result)+1);
end;


function InArray(const uArray: array of String; const SearchStr: String): Boolean;
var
    i, Len: Integer;
begin
    Len := GetArrayLength(uArray);
    if Len = 0 then Exit;
    for i := 0 to Len-1 do
    begin
        Result := uArray[i] = SearchStr;
        if Result then Break;
    end;
end;


function GetVideoDevices(): array of String;  
var
    dd: _DISPLAY_DEVICE;
    iDevNum: Integer;
    Len: Integer;
    Buff: String;
begin
    dd.cb := SizeOf(dd);
    while EnumDisplayDevices(0, iDevNum, dd, 0) do
    begin
        if dd.StateFlags = DISPLAY_DEVICE_MODESPRUNED then
        begin
            Buff := CharArrayToString(dd.DeviceString);
            if not InArray(Result, Buff) then
            begin
                Len := GetArrayLength(Result);
                SetArrayLength(Result, Len+1);
                Result[Len] := Buff;
            end;
        end;
        Inc(iDevNum);
    end;
end;


procedure InitializeWizard();
var
    sArray: array of String;
    i: Integer;
begin
    sArray := GetVideoDevices();
    for i := 0 to GetArrayLength(sArray)-1 do MsgBox(sArray[i], mbInformation, MB_OK);
end;


PS: с флагами запутался. http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
Почему то имя одной и той же видеокарты возвращает 2 раза. Решаю этот вопрос проверкой на отсутствие имени в выходном массиве строк
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:43, 18-07-2013 | #800



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




 
Переход