Ru-Board.club
← Вернуться в раздел «Программы»

» Inno Setup (создание инсталяционных пакетов)

Автор: Genri
Дата сообщения: 05.08.2007 00:22
Chuvakstepan -- если :
Page := CreateCustomPage(wpWelcome, '', '');

...то идентификатор - Page.ID

Автор: Victor_Dobrov
Дата сообщения: 05.08.2007 01:49

Цитата:
Инсталлер Сталкера определяет всё правильно на Vista x64

Я хочу избавиться от использования get_hw_caps.dll (из Сталкера), поэтому уже сделал определение инфы о системе через API, только видео и звук пока считываю из реестра.
Автор: OrenAlexI
Дата сообщения: 05.08.2007 09:54
Ребят помогите плиз. есть программа для бесперебойника. По идеии это просто dll и запускающий файл. Соответсвенно для 32 и 64 версий виндовс разные файлы (запускающий и dll ). Названия этих файлов одинаковый, для 64 и 32. Тобишь -
x32 файлы 1-запускающий 2-dll
x63 файлы 1-запускающий 2-dll
как видите названия 1 и 1 в 32 и 64 одинаковы.
По отдельности я инсталлятор сделал, тоесть для разных вести свой инсталл. Помогите мне, как сделать в одном иснталляторе две версии. Например при запуске инсталла, надо чтобы инсталлято рспаришвал, для какой версии установить.
Вот тут мой скрипт - http://rapidshare.com/files/47056030/UPS.iss
или можно так сделать - Запускаешь инсталл, он спрашивает для какой версии установить (или сам определяет битность), после чего он копирует файлы в соответствующую папку и т.д., но если битность 64 то в папку копируются одни файлы, а если 32 то всё ставиться как в моём скрипте. Помогите плиз.. любым вариантиком поделитесь я вам спасбчкик скажу)))
Автор: Genri
Дата сообщения: 05.08.2007 10:29
OrenAlexI -- посмотри в хелпе function IsWin64: Boolean;
там пример есть.

Автор: koc
Дата сообщения: 05.08.2007 12:50
а никто не пробовал превратить IS в Авторан? Создать страницу вместо приветствия, сделать там кнопки: установить, удалить играть и тд.
Автор: Gerrr
Дата сообщения: 05.08.2007 14:22
Здравствуйте.

Необходимо установить bde(делаю как в хелпе на сайте инны), а затем добавить SQL Link для mssql-я. Два файла + несколько записей в реестре. Проблема в том, что bde ставится в конце из раздела run, а линки требуют как раз информации о местоположении bde - соответственно копироваться и прописываться должны после установки bde.

Подскажите пожалуйста можно ли решить такую задачу средствами инно(не прибегая к постинсталяционыым файлам...). Ведь разделы files и registry отрабатывают как я понимаю до run-а.

Заранее спасибо за помощь.
Автор: Pacifist
Дата сообщения: 05.08.2007 16:19
Господа как отправить файло по следующему пути "\Documents and Settings\All Users\Documents\"?
В винде, а также инно такой переменной нет вроде.
Можно тупо ситемный диск\и так далее, но под разные языковые оси разные пути, а можно запрос соответствующей папки сделать через значение в реестре
([HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders]
"Common Documents"="C:\\Documents and Settings\\All Users\\Documents"), но как это сделать так и не разобраться.
Помогите пз.
Автор: serg_aka_lain
Дата сообщения: 05.08.2007 16:40
Pacifist

{commondocs} -Общие документы, в Help'e есть описание констант.
Автор: Genri
Дата сообщения: 05.08.2007 16:43
Pacifist -- а {commondocs} не подходит ?

Gerrr
Цитата:
разделы files и registry отрабатывают как я понимаю до run-а.
-- верно. поэтому какой-то из этапов надо перенести в код (либо инсталляцию BDE, либо добавление SQL Link. Я бы предложил первое :
Код:
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program

[Files]
Source: "MiniReg.exe"; DestDir: "{tmp}"
Source: "BdeInst.dll"; DestDir: "{tmp}"; AfterInstall: InstallBDE()

[Code]
procedure InstallBDE();
var
ResultCode: Integer;
begin
Exec(ExpandConstant('{tmp}\MiniReg.exe'),
'"' + ExpandConstant('{tmp}\BdeInst.dll') + '"' , '', SW_HIDE,
ewWaitUntilTerminated, ResultCode);
end;
Автор: Pacifist
Дата сообщения: 05.08.2007 17:30
serg_aka_lain
Genri
Спасибо, за последние 7 лет предыдущий мой пост - мой первый и он был написан не зря
Я получил ответ и какже я был не внимателен {commondocs} - \Documents and Settings\All Users\Documents\
Инно - именно то что надо!
Автор: Gerrr
Дата сообщения: 05.08.2007 17:51
Genri
Круто!!! О таком я даже мечтать не мог. Спасибо
Автор: DroN_S
Дата сообщения: 06.08.2007 14:28
привет всем!
в общем, у меня такой вопрос:
при установке программы в тот же католог, если в каталоге установки есть уже файл unins000 то автоматом создаётся файл unins001
как мне избавиться от этого?
Автор: Genri
Дата сообщения: 06.08.2007 14:36
Shaman2 -- поставленная задача к инно отношения не имеет. И следовательно, в данной теме является оффтопом. Но тем не менее, пару пояснений могу дать :
1. уайтлист - это белый список. Он не лучше. Но он обеспечивает лучшую защиту. Например, при настройке правил файрвола можно пойти по пути "разрешить что можно, остальное запретить" (т.е. белый список) или "запретить что нельзя, остальное разрешить" (т.е. черный список). Вот и подумай, в каких случаях лучше второй вариант.

2. По поводу подписи экзешника: это лучше узнавать у програмеров. Могу только предложить тупой вариант: в проекте объявляешь константу (напр. "10485212"), а в коде делаешь с ней пару операций (чтоб оптимизатор ее не выкинул). Все. Эта константа и есть основа твей подписи.

Ну и чтоб в этом посте кроме оффтопа было и что-то по инно - [more=здесь]
Код:
[Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program

[Files]
Source: MyProg.exe; DestDir: {app}; AfterInstall: WriteToFile()

[Run]
Filename: "{app}\MyProg.exe"

[Code]
procedure WriteToFile();
var
FS: TFileStream;
str: string;
i: integer;
begin
str:= '';

for i:= 0 to 10 do str:= str + IntToStr(Random(10));

FS := TFileStream.Create(ExpandConstant('{app}\MyProg.exe'), fmOpenReadWrite);
try
FS.Seek(1572,soFromBeginning);
FS.WriteBuffer(str, Length(str));
finally
FS.Free;
end;
end;
Автор: maxdddca123
Дата сообщения: 06.08.2007 15:48
У меня такой вопрос: необходимо сделать инсталл для обновление одного ехе файла через интерент, причём таким образом, что бы он не скачивал заново весь файл (т.к. он очень большой), а сравнивал версию, если она изменилась, то вычислял в ехешнике куски кода, которые обновились, и скачивать только их. Говорят в install shield это можно сделать, а в инно ??? Кто нибудь знает ???
Автор: DroN_S
Дата сообщения: 06.08.2007 16:53

Цитата:
попробуй из секции [Setup] убрать UninstallLogMode

по идеи должно быть
UninstallLogMode=overwrite
но не помогает... всё равно после установки появляются unins001.dat и unins001.exe
Автор: Genri
Дата сообщения: 06.08.2007 17:08
DroN_S -- это смотря по чьей идее По мнению разработчиков инно, должно быть append, а вот overwrite разработчики не рекомендуют.

А вообще, чтобы давать рекомендации, хорошо бы видеть сам скрипт.
Автор: DroN_S
Дата сообщения: 06.08.2007 17:22
Genri
всё равно одно и тоже
и при UninstallLogMode=append и если вообще убрать UninstallLogMode
ещё один вопрос: раньше, в версии 5.1.8 можно было указать в секции
Setup
WizardImageFile=C:\Image.bmp
и картинка вставала на всё окно инсталлятора...
а теперь картинка только на левую часть инсталляора встаёт
как исправить этот косяк?

фикс из шапки не работает

Код:
procedure InitializeWizard();
begin
MainForm.Visible := false;
MainForm.Left := 0;
MainForm.Top := 0;

WizardForm.BackButton.BringToFront;
WizardForm.NextButton.BringToFront;
WizardForm.CancelButton.BringToFront;
WizardForm.BeveledLabel.Enabled:=True;
WizardForm.BeveledLabel.Font.Color:=$00AA4509;
WizardForm.BeveledLabel.Font.Style := WizardForm.BeveledLabel.Font.Style + [fsBold];
WizardForm.BeveledLabel.Color:=$dbcdcc;
WizardForm.BeveledLabel.Left:=10;
WizardForm.BeveledLabel.Top:=382;
end;
Автор: Genri
Дата сообщения: 06.08.2007 17:45
DroN_S -- как я сказал - надо видеть скрипт. То, что у тебя прописан UninstallLogMode пришлось догадываться. Но предположить, как у тебя выставлены/не выставлены директивы AppId, UpdateUninstallLogAppName и т.п. я не могу.

Возьми из примеров Example1.iss и поставь его несколько раз в одно место. unins001 есть ? Нет. Значит в своем скрипте ты что-то выставил не так.
Автор: DroN_S
Дата сообщения: 06.08.2007 17:54

Цитата:
Но предположить, как у тебя выставлены/не выставлены директивы AppId, UpdateUninstallLogAppName и т.п. я не могу.

как они должны быть высставлены?
потому как у меня их вообще нет...
и их же я не нашёл в Example1.iss
Автор: Genri
Дата сообщения: 06.08.2007 18:06
DroN_S
Цитата:
как они должны быть высставлены?
-- либо по дефолту либо отсутствовать.


Цитата:
у меня их вообще нет...
-- кого "их" ? AppId и UpdateUninstallLogAppName ? А остальные ?


Цитата:
их же я не нашёл в Example1.iss
-- правильно. А этот Example1.iss у тебя unins001 тоже создает ? Если нет, то сравнивай со своим и смотри в чем разница.
Автор: DroN_S
Дата сообщения: 06.08.2007 18:17
Genri
дело было не во флагах...
в общем, если в реестре есть запись идентичная той что записывается инсталлятором при установке, то unins001 не создаётся, если же различаются названия ветки, а именно SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\название ветки то файл будет создан!!!
а название ветки равняется AppName

Цитата:
кого "их" ? AppId и UpdateUninstallLogAppName ? А остальные ?


Код:
UninstallLogMode=append
UpdateUninstallLogAppName=True
Автор: Genri
Дата сообщения: 06.08.2007 18:57
DroN_S
Цитата:
дело было не во флагах...
-- здрасте ... Новый Год! А в чем тогда? Оказывается ты меняешь название программы (т.е. фактически ставишь другую программу в ту же папку) и удивляешься, почему еще один деинсталлятор


Цитата:
а название ветки равняется AppName
-- неверное заключение. Название ветки равняется AppId о котором я спрашивал. А по дефолту, значение AppId = AppName (см.хелп). Можешь жестко прописать AppId=My Program и тогда изменение AppName не приведет к созданию новой записи.


Цитата:
а что с картинкой bmp?
-- опять недостаток информации. Ты пишешь, что "раньше, в версии 5.1.8 можно было указать в секции
Setup
WizardImageFile=C:\Image.bmp
и картинка вставала на всё окно инсталлятора... ". Задание только этой директивы, насколько я помню, не приводило к растягиванию картинки (и сейчас не приводит). Приведи пример скрипта, который при сборке под вер.5.1.8 растянет картинку, а под текущей версией - нет. Или сам посмотри - что отвечает за растягивание. Но во всяком случае, это не WizardImageFile.

Автор: Dimbay
Дата сообщения: 06.08.2007 18:59
В инно возможна такая вещь?
Мне нужно найти в системе пользователя папку с игрой,в ней папку саунд и скопировать её в папку мода,который я инсталирую.Зарание премного благодарен.
Автор: NightW0lf
Дата сообщения: 06.08.2007 19:09
DroN_S

Цитата:
Setup
WizardImageFile=C:\Image.bmp
и картинка вставала на всё окно инсталлятора...
а теперь картинка только на левую часть инсталляора встаёт
как исправить этот косяк?

Я так понял ты хочешь просто растянуть картинку на странице приветсвия на всю форму?
[more=Если да то вот скрипт:]
Код: [Setup]
WizardImageFile=myimage.bmp

[Files]
Source: BitmapImage2.bmp; DestDir: {tmp}; Flags: dontcopy

[Code]
procedure InitializeWizard();
var
b: string;
begin
ExtractTemporaryFile('BitmapImage2.bmp')
b := ExpandConstant('{tmp}\BitmapImage2.bmp')
with WizardForm do
begin
WizardBitmapImage.Width := WizardForm.ClientWidth;
WelcomeLabel1.Visible := False;
WelcomeLabel2.Visible := False;
WizardBitmapImage2.Bitmap.LoadFromFile(b);
WizardBitmapImage2.Width := WizardForm.ClientWidth;
FinishedLabel.Visible := False;
FinishedHeadingLabel.Visible := False;
end;
end;
Автор: Chanka
Дата сообщения: 06.08.2007 19:12
Нашёл какое-то слайд-шоу для инно. Если кому нужно http://data.cod.ru/2101050826
Автор: Genri
Дата сообщения: 06.08.2007 19:19
Dimbay -- возможно. Но нужны критерии поиска. Если указанная игра прописывает в реестр путь установки - можно использовать эти данные. Если нет - можно запросить пользователя ввести путь к папке с игрой. Можно конечно искать по всем дискам, но это долго и не оптимально.
Автор: Sero
Дата сообщения: 06.08.2007 19:21
Chanka
А код есть? а так не интересно!
Автор: Chanka
Дата сообщения: 06.08.2007 19:25
Sero,
У меня нету. Я нашёл это слайд-шоу на каком-то форуме.
Автор: DroN_S
Дата сообщения: 06.08.2007 19:29

Цитата:
Приведи пример скрипта, который при сборке под вер.5.1.8 растянет картинку, а под текущей версией - нет

раньше я делал так

Код:
[setup]
WizardImageFile="C:\WinXP.bmp"
WizardSmallImageFile="C:\WinXP.bmp"

procedure InitializeWizard();
begin
WizardForm.BackButton.BringToFront;
WizardForm.NextButton.BringToFront;
WizardForm.CancelButton.BringToFront;
WizardForm.BeveledLabel.Enabled:=True;
WizardForm.BeveledLabel.Font.Color:=$00AA4509;
WizardForm.BeveledLabel.Font.Style := WizardForm.BeveledLabel.Font.Style + [fsBold];
WizardForm.BeveledLabel.Color:=$dbcdcc;
WizardForm.BeveledLabel.Left:=10;
WizardForm.BeveledLabel.Top:=382;
end;
Автор: Genri
Дата сообщения: 06.08.2007 19:41
DroN_S
Цитата:
раньше я делал так
-- вероятно, какой-то кусок кода ты забыл. Во всяком случае, даже приведя твой пример в нормальный вид и скомпилив его под 5.1.8, никакого растяжения я не получил И WizardImageStretch это немного не то. Более правильный вариант привел NightW0lf. Хотя, я бы оттуда лишнее убрал :

[Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program
WizardImageFile=WizardImage.bmp

[Code]
procedure InitializeWizard();
begin
with WizardForm do
begin
WizardBitmapImage.Width := ClientWidth;
WelcomeLabel1.Visible := False;
WelcomeLabel2.Visible := False;
end;
end;

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Mail.ru агент - вход не выполнен


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.