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

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

Автор: hackerandrey
Дата сообщения: 01.03.2009 10:18
Это реально Узнать путь из реестра, определить MD5 если такойто МД5 то такоето действее и т. д. Я только этого не умею, не знаю тот язык, а так бы помог
Автор: Igrock2007
Дата сообщения: 01.03.2009 12:43
При использовании NSIS_SkinCrafter и скинов не отображается список компонентов и дополнительных задач, но они становятся видны при клике мышью по кнопкам назад или далее, а также по самии компонентам. Можно ли это как-то исправить. Заранее благодарю. Код брал из коллекции скриптов. Вот он:

[more]
[Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program
OutputDir=.

[Files]
Source: callnsis.dll; Flags: dontcopy

[Code]
var
Button: TButton;
Skins: TStringList;
i: integer;

procedure callplug(parentwnd: Integer; pluginname,funcname,param1,param2,param3,param4,param5,param6,param7,param8,param9,param10: PChar);
external 'callplug@files:callnsis.dll stdcall';

procedure GetSkins();
var
FindRec: TFindRec;
begin
if FindFirst(ExpandConstant('{src}\skin\*.skf'), FindRec) then begin
try
repeat
if FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then
begin
Skins.Add(FindRec.Name);
end;
until not FindNext(FindRec);
finally
FindClose(FindRec);
end;
end;
end;

procedure ButtonOnClick(Sender: TObject);
begin
if i = Skins.Count - 1 then i:= 0
else i:= i+1;
callplug(0, ExpandConstant('{src}\skin\NSIS_SkinCrafter_Plugin.dll'),'skin',ExpandConstant('{src}\skin\' + Skins[i]),'','','','','','','','','');
Button.Caption := Skins[i];
end;

procedure InitializeWizard();
begin
Skins:= TStringList.Create;
GetSkins();

Button := TButton.Create(WizardForm);
Button.Left := 10;
Button.Top := WizardForm.CancelButton.Top;
Button.Width := WizardForm.CancelButton.Width + 30;
Button.Height := WizardForm.CancelButton.Height;
Button.Caption := Skins[0];
Button.OnClick := @ButtonOnClick;
Button.Parent := WizardForm;

WizardForm.Position:=poDesktopCenter
// WizardForm.Height:=WizardForm.Height-40

callplug(0, ExpandConstant('{src}\skin\NSIS_SkinCrafter_Plugin.dll'),'skin',ExpandConstant('{src}\skin\' + Skins[0]),'','','','','','','','','');
end;
[/more]
Автор: Sergey_Demchuk
Дата сообщения: 01.03.2009 14:52
Какой флаг поставить чтобы компилятор не выводил сообщение "No files matching ..." если задано
Source: F:\INSTALL\FILES\WORK\*; DestDir: {app}; Flags: ignoreversion overwritereadonly recursesubdirs createallsubdirs
и папка WORK\ пустая, мне надо чтобы и пустые папки создавались при установке.

Добавлено:
.
Автор: hackerandrey
Дата сообщения: 01.03.2009 15:57
Попробуй это:

Source: F:\INSTALL\FILES\WORK\*; DestDir: {app}; Flags: overwritereadonly recursesubdirs createallsubdirs
Автор: Sergey_Demchuk
Дата сообщения: 01.03.2009 16:24
Да это же то самое что и у меня почти...не работает
Автор: Qarma
Дата сообщения: 01.03.2009 16:34
Sergey_Demchuk

Цитата:
Какой флаг поставить чтобы компилятор не выводил сообщение "No files matching ..." если задано
Source: F:\INSTALL\FILES\WORK\*; DestDir: {app}; Flags: ignoreversion overwritereadonly recursesubdirs createallsubdirs
и папка WORK\ пустая, мне надо чтобы и пустые папки создавались при установке.

Вроде бы так:

Source: F:\INSTALL\FILES\WORK\*; DestDir: {app}; Flags: ignoreversion createallsubdirs recursesubdirs sortfilesbyextension
Автор: Unc1e
Дата сообщения: 01.03.2009 16:50
Sergey_Demchuk,
Код: [Dirs]
Name: "{app}\WORK"
Автор: kombat 77
Дата сообщения: 01.03.2009 19:01
Artem_Butenko

Цитата:
Если коротко, то при одном значении md5 и размера исходного файла (в каталоге назначения) должна быть скопирована одна группа файлов, а при другом значении md5 и размера того же файла (с тем же именем), другая группа файлов.

[more=Ну типа того]

[Setup]
AppName=GetMD5OfFile
AppVerName=GetMD5OfFile v 1.0
DefaultDirName={code:GetRegDir}
OutputDir=.

[Files]
Source: "compiler:Examples\MyProg.exe"; Flags: dontcopy;
Source: "compiler:Examples\MyProg-x64.exe"; Flags: dontcopy;

[Code]

function GetRegDir(Dir: string): string;
begin
Dir := '';
RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Prog_is1','InstallLocation', Dir);
Result := Dir;
end;

procedure CurStepChanged(CurStep: TSetupStep);
var
s: string;
begin
if CurStep = ssInstall then
begin
if FileExists(ExpandConstant('{code:GetRegDir}\MyProg.exe')) then
begin
s := GetMD5OfFile(ExpandConstant('{code:GetRegDir}\MyProg.exe'));
begin
if s = '04ef9893ce03925182188a88b7923bc0' then
begin
ExtractTemporaryFile('MyProg.exe');
FileCopy(ExpandConstant('{tmp}\MyProg.exe'), ExpandConstant('{app}\MyProg_copy.exe'), True);
end;
end;
end;

if FileExists(ExpandConstant('{code:GetRegDir}\MyProg-x64.exe')) then
begin
s := GetMD5OfFile(ExpandConstant('{code:GetRegDir}\MyProg-x64.exe'));
begin
if s = '909ebdbc1a9e0bdd99c20a1428402150' then
begin
ExtractTemporaryFile('MyProg-x64.exe');
FileCopy(ExpandConstant('{tmp}\MyProg-x64.exe'), ExpandConstant('{app}\MyProg-x64_copy.exe'), True);
end;
end;
end;
end;
end;

[/more]
Ну или может проще как-то можно ...

Автор: Sergey_Demchuk
Дата сообщения: 02.03.2009 00:27
Qarma
Не проходит, то же самое

Добавлено:
Unc1e
Это код писать дополнительно что ли?
Автор: Unc1e
Дата сообщения: 02.03.2009 00:38
Sergey_Demchuk, да, просто допиши, например, после секции [Files]. [Dirs] - это одна из секций скрипта, занимающаяся созданием папок. В справке подробнее.
Автор: nOobCrafter
Дата сообщения: 02.03.2009 08:21
А кто нить может ответить на мой вопрос с предыдущей страницы?
Еще вопрос, кто нибудь может кинуть пример или ссылку на пример где происходит только замена определенных файлов, необходимо для создания обновления софта. Сейчас ищу с самого начала (с первой страницы) и на ум приходит сделать так:
создаем доп. вид инсталяции - "Обновление". А дальше подсовываем необходимые компоненты, но этот вариант неподходит так как нельзя указать конкретные файлы, а один компонент может быть большой((( Создание отдельного компонента только для обновления ситаю нерациональным... Есть еще варианты, а то поиск может затянуть?(((
Автор: chelobey
Дата сообщения: 02.03.2009 10:55
Други, помогите с ЭТИМ.
Автор: Artem_Butenko
Дата сообщения: 02.03.2009 16:15
Ребята, у кого-нибуду получалось сделать абсолютно "тихий" инсталл, особенно защитить его от комбинации Alt + F4?
Автор: skeptik_vdm
Дата сообщения: 02.03.2009 16:49
Товорищи подскажите пожалуйста как сделать установку Фрэймворка без участия пользователя т.е. фоновой

Цитата:
Filename: "{src}\Framework\dotnetfx.exe.exe";Parameters:/q;

Если делать так то просто идет извлечение из CAB архива а сама установка идет уже при участии пользователя
P.S. извеняюсь если не понятно описал суть проблемы!



Добавлено:
И еще столкнулся с одной проблемой в ходе работы можно ли тут же в этой секции повесить две проверки(Check) т.е.

Цитата:
Filename: "{src}\Framework\dotnetfx.exe.exe";Parameters:/q;Check:InstallDop not IsWin64

где InstallDop это установка Фреймворка
not IsWin64 это проверка на битность Винды
Автор: Sergey_Demchuk
Дата сообщения: 02.03.2009 20:35

Цитата:
да, просто допиши, например, после секции [Files]. [Dirs] - это одна из секций скрипта, занимающаяся созданием папок. В справке подробнее.

А если папок много...писать то долго тогда придется
Автор: 7sh3
Дата сообщения: 02.03.2009 21:35
интересует код при котором установка возможна только на Vista x86 и выше (win7 x86) x64 не надо, с соответствующий MsgBox где x64 и всякие XP идут лесом... подскажите как проще сделать
Автор: Sig666
Дата сообщения: 02.03.2009 22:20
skeptik_vdm

по второму вопросу Check: InstallDop and not IsWin64
Автор: nOobCrafter
Дата сообщения: 03.03.2009 09:37
Фуф..так может кто нибудь написать или дать ссылку на то как можно установить только определенные файлы, а остальное не трогать? То есть мы добавили папку с файлами и если выбран режим обновления то установить только 2 файла из этих всех.

Передлай под себя..

Цитата:
Здравствуйте, как сделать, чтоб в зависимости от версии windows 32 или 64 битной, устанавливалась та или другая .dll?



В 32битном режиме установки правильней будет так:

Код: [Files]
Source: "My.dll"; DestDir: "{app}"; Check: IsWin64;
Source: "My.dll"; DestDir: "{app}"; Check: not IsWin64;
(ИМХО)
Если софт 64битный, то
[Setup]
ArchitecturesInstallIn64BitMode=x64 x86
(тоже ИМХО)
Автор: Snake193
Дата сообщения: 05.03.2009 01:25
Возможно ли реализовать вручную через [Code] корректную (без всяких KillProcess и т.д.) функцию отката, или хотя-бы прерывание установки. Функция Abort в процедуре CurStepChanged не работает.

procedure CurStepChanged(CurStep: TSetupStep);
begin
if (CurStep=ssPostInstall) then
begin
if (FileExists(AddBackslash(ExpandConstant('{tmp}')) + 'Precomp.exe')) and (FileExists(AddBackslash(ExpandConstant('{app}')) + 'zips\textures.pcf')) then
begin
Exec(AddBackslash(ExpandConstant('{tmp}')) + 'Precomp.exe', '-o' + AddQuotes(AddBackslash(ExpandConstant('{app}')) + 'zips\textures.zip') + #32 + '-r' + #32 + AddQuotes(AddBackslash(ExpandConstant('{app}')) + 'zips\textures.pcf'), ExtractFilePath(AddBackslash(ExpandConstant('{tmp}')) + 'Precomp.exe'), SW_SHOW, ewWaitUntilTerminated, ResultCode);
end else begin
MsgBox('Исполняемый файл:' + #13#10#13#10 + (AddBackslash(ExpandConstant('{tmp}')) + 'Precomp.exe') + #13#10#13#10 + 'не найден. Установка отменена', mbCriticalError, MB_OK);
//-----------------------------------------------
// Здесь нужно сделать откат установки или Abort;
//-----------------------------------------------
end
end
end;
Автор: skeptik_vdm
Дата сообщения: 05.03.2009 06:02
Snake193

Я так понимаю то умеешь использовать precomp????
Автор: Unc1e
Дата сообщения: 05.03.2009 07:17
Snake193, Ссылка
Автор: DeKaNszn
Дата сообщения: 05.03.2009 08:37

Цитата:
интересует код при котором установка возможна только на Vista x86 и выше (win7 x86) x64 не надо, с соответствующий MsgBox где x64 и всякие XP идут лесом... подскажите как проще сделать


самый простой способ:

Код:
[Setup]
MinVersion=0,6.0.6000
Автор: Serega0675
Дата сообщения: 05.03.2009 08:43
Snake193, после установки откат невозможен... как-то спрашивали, такой же вопрос, единственное, что придумал - это деинсталляция автоматом сразу после установки, если условие не выполнено... [more=пример]
Код: [Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program

[Code]
function NextButtonClick(CurPage: Integer): Boolean;
var
ResultCode: Integer;
begin
Result:=True;
if CurPage=14 then
If (FileSearch('Program.exe', ExpandConstant('{pf}'))='') then
Exec(ExpandConstant('{uninstallexe}'), '/verysilent', ExpandConstant('{app}'), SW_HIDE, ewNoWait, ResultCode);
end;
Автор: skeptik_vdm
Дата сообщения: 05.03.2009 08:46
Может кто нибудь поможет как пользоваться precomp-ом????
Автор: nOobCrafter
Дата сообщения: 05.03.2009 09:03
Неужели я спрашиваю что то заоблачное? Или никто не знает?
Автор: WinstAn70
Дата сообщения: 05.03.2009 11:33
skeptik_vdm
Создай текстовый документ в нем напиши precomp.exe -slow "имя файла".расширение файла сохрани с названием precomp в расширение bat (это для компилирования)
И для обратно действия поставь параметр precomp.exe -r "имя файла".pcf
Автор: inn0id
Дата сообщения: 05.03.2009 11:56
Всем доброго времени суток, этот форум очень помог мне, но щас пишу на Inno апдейтер для одной софтины, и у меня в задачу входит из инно подключиться к sql серверу и выцепить некоторые записи из таблиц, для их дальнейшего использования в коде.

Возможно ли это сделать в инновском паскале, если да, то можно глянуть пример или что-нибудь подобное, заранее благодарен.

По причине огромного количества страниц, не смог найти задавался ли уже такой вопрос, извините если продублировал.

UPD

На гуглил Лекспу, но она платная, поюзал примеры из справки, базу создать на сервере получилось, значит процесс пошёл, далее наверное разберусь.

Но если у кого то есть примеры использования данных со скуля в инсталяторе, буду рад
Автор: skeptik_vdm
Дата сообщения: 05.03.2009 12:32
WinstAn70

Он вообще жмет или нет вот картинку jpg он сжимает а можно им еще че нить посжимать допустим архивы???
Автор: Snake193
Дата сообщения: 05.03.2009 13:22
skeptik_vdm

Прекомп я запускал со следующими параметрами:
precomp -o"textures.pcf" -brute "textures.zip"

обратно:
precomp.exe -o"textures.zip" -r "textures.pcf"

в папке с precomp должны быть zlib1.dll и packjpg_dll.dll. Версия Precomp 0.3.8/
Автор: WinstAn70
Дата сообщения: 05.03.2009 13:28
Snake193
Можно и так каждый делает по разному! Может поможешь сделать Прогресс Бар бля архивов FreArc.
skeptik_vdm
Он наверное не жмет а как бы облегчает файл для последующего сжатия!

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

Предыдущая тема: в очередной раз босудим антивиры?


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