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

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

Автор: Bannan
Дата сообщения: 02.08.2015 14:17

Цитата:
Использую Расширенная версия от китайских собратьев, которая в шапке.

Эта версия базируется на Inno Setup v5.5.2, в которой нет поддержки Windows 10. К тому же расширенная версия уже устарела и давно не обновлялась (с 2012 года). Если хотите полноценную поддержку последних версий Windows, то используйте последнюю версию Inno Setup. Сейчас это - 5.5.6.
Автор: Artem_Butenko
Дата сообщения: 02.08.2015 14:28
sjwrec

Большое спасибо, только скрипт почему-то не видит [more=внешние файлы][Setup]
AppName=NSIS PB
AppVersion=1.5
AppPublisher=My Company, Inc.
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputBaseFilename=setup
Compression=none
SolidCompression=no

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

[Files]
Source: "{src}\Files\*"; DestDir: "{app}"; BeforeInstall: AddToMemo; Flags: ignoreversion recursesubdirs createallsubdirs external

[Code]
var
FilesMemo: TMemo;

procedure AddToMemo();
var AFile: String;
begin
AFile:= ExpandConstant(CurrentFilename);
if ExtractFileExt(AFile)='' then
FilesMemo.Lines.Add('Создание Папки: '+RemoveBackslash(AFile)) else
FilesMemo.Lines.Add('Извлекается: '+AFile);
end;

procedure InitializeWizard();
begin
FilesMemo:= TMemo.Create(WizardForm);
FilesMemo.SetBounds(0, 65, 417, 172);
FilesMemo.WordWrap:= False;
FilesMemo.Parent:= WizardForm.InstallingPage;
FilesMemo.ScrollBars:= ssVertical;
FilesMemo.ReadOnly:= True;
FilesMemo.Clear;
end;[/more].

В Memo отображается только одна строка: "Создание Папки: C:\Program Files (x86)\My Program"

Еще небольшой вопрос, можно ли добавить процент извлечения файлов? Каждого в отдельности (в поле Memo) и общий процент извлечения (в центре прогресс-бара).
Автор: Artem_Butenko
Дата сообщения: 02.08.2015 17:15
Давно хотелось реализовать в "Inno Setup" всплывающую заставку на манер "Thin App". Вот что получилось. Все настройки сплеш-заставки хранятся в конфигурационном файле "ISCSS.ini". Скрипт "Inno Setup" может быть представлен [more=так][Setup]
AppId={{05EC0B6D-BA7F-458C-89ED-9319904C2641}
AppName=Inno Setup Custom Splash Screen
AppVersion=1.0
AppVerName=Inno Setup Custom Splash Screen v.1.0
DefaultDirName={pf}\Inno Setup Custom Splash Screen
DefaultGroupName=Inno Setup Custom Splash Screen
OutputBaseFilename=Setup
Compression=none
SolidCompression=no

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

[Files]
Source: ".\ISCSS.exe"; DestDir: "{tmp}"; Flags: dontcopy solidbreak nocompression
Source: ".\ISCSS.ico"; DestDir: "{tmp}"; Flags: dontcopy solidbreak nocompression
Source: ".\ISCSS.ini"; DestDir: "{tmp}"; Flags: dontcopy solidbreak nocompression



[Code]
function InitializeSetup(): Boolean;
var
res:Integer;
s, ResultStr:string;
begin
ExtractTemporaryFile('ISCSS.exe'); // Выполняем копирование файлов во временный каталог.
ExtractTemporaryFile('ISCSS.ico');
ExtractTemporaryFile('ISCSS.ini');
s:=ExpandConstant('{tmp}')+'\ISCSS.exe';
Exec(s, '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, res); // Выполняем запуск приложения из временного каталога.
Result:=True;
end;[/more].

Добавлено:
KIS 2015 ругается на мой модуль, ох уж эта эвристика...
Автор: s0s0k
Дата сообщения: 02.08.2015 18:31

Цитата:
KIS 2015 ругается

Почему-то KIS 2o16 проглотило без звука
Автор: dixen18
Дата сообщения: 03.08.2015 17:10
Друзья подскажите как сделать автоматическую упаковку определенных папок в архив с указанным расширением?
Имеется ввиду игра The Talos Pinciple на движке от Serious Sam BFE где ресурсы игры - обычные ZIP архивы с расширением *.gro. Я их распаковал чтоб сжать игру хоть как то а как вернуть архивы при установке - не знаю..Заранее спасибо
Автор: sjwrec
Дата сообщения: 03.08.2015 20:43
dixen18

Цитата:
Имеется ввиду игра The Talos Pinciple на движке от Serious Sam BFE где ресурсы  игры - обычные ZIP архивы с расширением *.gro. Я их распаковал чтоб сжать игру хоть как то а как вернуть архивы при установке - не знаю..Заранее спасибо


А вы в курсе что архивы GRO подписаны сертификатом (имеют цифровую подпись) ?
Это означает что любое вмешательство в эти архивы приведёт к повреждению подписи. А игра эту подпись проверяет и не запускается если подпись повреждена.

По крайней мере в Serious Sam 3 BFE сделано именно так.
Автор: dixen18
Дата сообщения: 03.08.2015 22:05
sjwrec
В курсе но лично я распаковывал и запаковывал архивы в Сэме (да и не только я) - и все работало..
А вопрос все еще актуален
Автор: nik1967
Дата сообщения: 04.08.2015 09:55

Цитата:
как сделать автоматическую упаковку определенных папок в архив с указанным расширением?

Ну, например, воспользоваться ISDone. В нём есть функция function ISPackZIP
- поддержка упаковки файлов в архивы zip. Как пользоваться - есть readme.CHM в дистрибутиве утилиты.
Автор: OtherSide2
Дата сообщения: 04.08.2015 14:36
Добрый всем день. Скажите - можно ли как-то инсталлятором Inno Setup установить права на файл (не аттрибуты, а именно права). Нужно поменять права на инишку - не пишется в неё.
Автор: Artem_Butenko
Дата сообщения: 04.08.2015 16:22
Ребята, в примерах нашел интересный скрипт проигрывания фоновой музыки в формате "*.mp3" (на основе библиотеки "BASS.dll") с кнопками управления в формате "*.png" (на основе модуля "Botva2"). Пожалуйста, подскажите, каким образом проигрывать модульную музыку (mod, xm и др.) на основе данного скрипта, как я понимаю, необходимо использовать "BASSMOD.dll", только вот, каким образом будет выглядеть финальный скрипт?
Автор: kbcfxtyrj
Дата сообщения: 05.08.2015 10:36
и ещё один вопрос по поводу папок если в папке находится 2 или 3 папки как их прописатьhttp://piccash.net/27967/462671/
Автор: nik1967
Дата сообщения: 05.08.2015 13:51
OtherSide2, на счёт прав не знаю, знаю только как убрать атрибут "только чтение" - из-за этого атрибута частенько и не даёт записывать инфу в ини файлы.
Автор: kbcfxtyrj
Дата сообщения: 05.08.2015 19:55
при распаковки создаётся 2 исполняемых файла один надо убрать как это можно сделать
вот скрин
http://piccash.net/allimage/2015/8-5/img_thumb/463111-thumb.png
Автор: OtherSide2
Дата сообщения: 05.08.2015 21:06

Цитата:
OtherSide2, на счёт прав не знаю, знаю только как убрать атрибут "только чтение" - из-за этого атрибута частенько и не даёт записывать инфу в ини файлы.


не, с r/o точно всё нормально. нужно поменять именно права. долго возились с этой проблемой. пока что приходится копировать инсталлером данные из инишки во временную, временную исправлять (если есть необходимости правок инсталлером, бывает), старую удалять, временную копировать на её место. только вот такими танцами права удаётся поменять.
Автор: AlexM2222
Дата сообщения: 08.08.2015 16:31
Здравствуйте! Перепаковал для себя программу InnoExtractor , используя наработки с форума, но никак не пойму как добавить в скрипт ключи для тихой установки: стандартная и портативная. Например, ключ (/VERYSILENT /Standart) - обычная установка, а ключ (/VERYSILENT /Portable) - портативная установка

[more=Скрипт..][Setup]
#define AppExe         "{app}\InnoExtractor.exe"

#define AppVer        GetFileVersion(AddBackslash(SourcePath) + AppExe)
#define AppName        "InnoExtractor"
#define AppPub        "(сборка 'Электрик')"
#define AppURL        "http://www.havysoft.cl/"

AppName            = {#AppName}
AppPublisher        = {#AppPub}
AppPublisherURL        = {#AppURL}
UninstallDisplayIcon    = {#AppExe}

DefaultDirName        = {pf}\{#AppName}
DefaultGroupName    = {#AppName}

AppVersion        = {#AppVer}
VersionInfoVersion    = {#AppVer}

OutputBaseFilename    = Setup_{#AppName}
WizardImageFile=embedded\WizardImage.bmp
WizardSmallImageFile=embedded\WizardSmallImage.bmp
Uninstallable=IsChecked
CreateUninstallRegKey=IsChecked

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

[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Check: IsChecked
Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked; Check: IsChecked

Name: context; Description: "Добавить {#AppName} в контекстное меню Проводника"; GroupDescription: {cm:AdditionalSetting}; Check: IsChecked

[Registry]
Root: HKCR; SubKey: exefile\shell\{#AppName}; ValueType: string; ValueData: "Открыть в {#AppName}"; Tasks: context; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKCR; SubKey: exefile\shell\{#AppName}; ValueType: string; ValueName: Icon; ValueData: {#AppExe},0; Tasks: context; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKCR; SubKey: exefile\shell\{#AppName}\command; ValueType: string; ValueData: """{#AppExe}"" ""%1"""; Tasks: context; Flags: uninsdeletevalue uninsdeletekeyifempty

[Icons]
Name: "{group}\{#AppName}"; Filename: "{#AppExe}"; Check: "IsChecked"; MinVersion: 0.0,5.0;
Name: "{group}\{cm:UninstallProgram,{#AppName}}"; Filename: "{uninstallexe}"; Check: "IsChecked"; MinVersion: 0.0,5.0;
Name: "{commondesktop}\{#AppName}"; Filename: "{#AppExe}"; Check: "IsChecked"; MinVersion: 0.0,5.0;
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#AppName}"; Filename: "{#AppExe}"; Check: "IsChecked"; MinVersion: 0.0,5.0; OnlyBelowVersion: 0.0,6.01;

[Files]
Source: "{app}\7z.dll"; DestDir: "{app}"; MinVersion: 0.0,5.0; Flags: ignoreversion
Source: "{app}\7z.e32"; DestDir: "{app}"; MinVersion: 0.0,5.0; Flags: ignoreversion
Source: "{app}\7zSD.e32"; DestDir: "{app}"; MinVersion: 0.0,5.0; Flags: ignoreversion
Source: "{app}\Init.dat"; DestDir: "{app}"; MinVersion: 0.0,5.0; Flags: restartreplace overwritereadonly ignoreversion uninsremovereadonly
Source: "{app}\InnoExtractor.exe"; DestDir: "{app}"; MinVersion: 0.0,5.0; Flags: ignoreversion
Source: "{app}\Innounp.e32"; DestDir: "{app}"; MinVersion: 0.0,5.0; Flags: ignoreversion
Source: "{app}\Rops.e32"; DestDir: "{app}"; MinVersion: 0.0,5.0; Flags: ignoreversion
Source: "{app}\Idiomas\English.lng"; DestDir: "{app}\Idiomas"; MinVersion: 0.0,5.0; Flags: ignoreversion
Source: "{app}\Idiomas\Russian.lng"; DestDir: "{app}\Idiomas"; MinVersion: 0.0,5.0; Flags: ignoreversion
Source: "{app}\Idiomas\Spanish.lng"; DestDir: "{app}\Idiomas"; MinVersion: 0.0,5.0; Flags: ignoreversion
Source: "{userappdata}\InnoExtractor\Config.ini"; DestDir: "{userappdata}\InnoExtractor"; Check: "IsChecked"; MinVersion: 0.0,5.0; Flags: ignoreversion
Source: "{app}\Config.ini"; DestDir: "{app}"; Check: "not IsChecked"; MinVersion: 0.0,5.0; Flags: ignoreversion

[CustomMessages]
AdditionalSetting=Дополнительные настройки:
HeaderLabelPage=Выбор типа установки
LabelPage=Выберите нужный тип установки
MyRadioCaption_1=Распаковка
MyRadioCaption_2=Обычная установка
PageTextHeader=На этой странице Вы можете выбрать тип установки, который для Вас наиболее удобен.
MyText_1=Будет произведена распаковка в папку, указанную на следующей странице
MyText_2=Будет произведена стандартная установка
Extracted=Распаковка — %1
ExtractedFolder=Выбор папки распаковки
ExtractedFolder2=В какую папку вы хотите распаковать %1?
ExtractedFolder3=Программа распакует %1 в следующую папку.
ExtractedFolder4=Программа установит %1 в следующую папку.
Installing=Распаковка...
InstallingLabel=Пожалуйста, подождите, пока %1 распакуется на ваш компьютер.
FinishedHeadingLabel=Завершение распаковки%n%1
FinishedLabelNoIcons=Программа %1 распакована на Ваш компьютер.%n%nНажмите «Завершить», чтобы выйти из программы распаковки.

[UninstallDelete]
Type: filesandordirs; Name: "{app}"
Type: filesandordirs; Name: "{userappdata}\{#AppName}"

[Code]
///
var
MyNewPage: TWizardPage;
BitmapImage1,BitmapImage2: TBitmapImage;
MyRadioBtn_1, MyRadioBtn_2: TNewRadioButton;

function IsChecked: Boolean;
begin
Result:= MyRadioBtn_2.checked;
end;

procedure RadBtnOnClick(Sender: TObject);
begin
case Sender of
MyRadioBtn_1: begin
WizardForm.Caption:= FmtMessage(ExpandConstant('{cm:Extracted}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder3}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
end;
MyRadioBtn_2: begin
WizardForm.Caption:= FmtMessage(SetupMessage(msgSetupWindowTitle), [ExpandConstant('{#SetupSetting("AppName")}')]);
WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder4}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
end;
end;
end;

procedure GetInstTypePage();
begin
MyNewPage:= CreateCustomPage(wpWelcome, ExpandConstant('{cm:HeaderLabelPage}'), ExpandConstant('{cm:LabelPage}'));

with TNewStaticText.Create(WizardForm) do begin
Width:= WizardForm.InnerNotebook.Width;
Height:= ScaleY(26);
WordWrap:= True;
Caption:= ExpandConstant('{cm:PageTextHeader}');
Parent:= MyNewPage.Surface;
end;

MyRadioBtn_1:= TNewRadioButton.Create(WizardForm);
with MyRadioBtn_1 do begin
Top:= ScaleY(50);
Width:= ScaleX(150);
Caption:= ExpandConstant('{cm:MyRadioCaption_1}');
OnClick:= @RadBtnOnClick;
Parent:= MyNewPage.Surface;
end;

with TNewStaticText.Create(WizardForm) do begin
Top:= ScaleY(68);
Width:= WizardForm.InnerNotebook;
Height:= ScaleY(26);
WordWrap:= True;
Caption:= ExpandConstant('{cm:MyText_1}');
Parent:= MyNewPage.Surface;
end;

MyRadioBtn_2:= TNewRadioButton.Create(WizardForm);
with MyRadioBtn_2 do begin
Top:= ScaleY(100);
Width:= ScaleX(150);
Caption:= ExpandConstant('{cm:MyRadioCaption_2}');
Checked:= True;
OnClick:= @RadBtnOnClick;
Parent:= MyNewPage.Surface;
end;

with TNewStaticText.Create(WizardForm) do begin
Top:= ScaleY(118);
Width:= WizardForm.InnerNotebook;
Height:= ScaleY(26);
WordWrap:= True;
Caption:= ExpandConstant('{cm:MyText_2}');
Parent:= MyNewPage.Surface;
end;
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
if (PageID > wpSelectDir) and (PageID < wpInstalling) and (MyRadioBtn_1.Checked) then
Result:= True;
end;

procedure InitializeWizard();
begin
GetInstTypePage();
WizardForm.DiskSpaceLabel.Hide;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if not IsChecked then begin
case CurPageID of
wpSelectDir: begin
WizardForm.Caption:= FmtMessage(ExpandConstant('{cm:Extracted}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
WizardForm.PageNameLabel.Caption:= ExpandConstant('{cm:ExtractedFolder}');
WizardForm.PageDescriptionLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder2}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder3}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
if IsChecked then
WizardForm.DirEdit.Text := ExpandConstant( '{pf}\{#SetupSetting("AppName")}' ) else
WizardForm.DirEdit.Text := ExpandConstant( '{sd}\Portable_Soft\{#SetupSetting("AppName")}' );
end;
wpInstalling: begin
WizardForm.PageNameLabel.Caption:= ExpandConstant('{cm:Installing}');
WizardForm.PageDescriptionLabel.Caption:= FmtMessage(ExpandConstant('{cm:InstallingLabel}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
end;
wpFinished: begin
WizardForm.FinishedHeadingLabel.Caption:= FmtMessage(ExpandConstant('{cm:FinishedHeadingLabel}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
WizardForm.FinishedLabel.Caption:= FmtMessage(ExpandConstant('{cm:FinishedLabelNoIcons}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
end;
end;
end;
end;


[/more]
Автор: BEEn
Дата сообщения: 11.08.2015 22:25
через Run запускаю sqlcmd с параметрами... как увидеть то что возвращает sql ???
через командную строку базу разворачивает на ура!!!
Автор: Sutar
Дата сообщения: 12.08.2015 14:05
Ребят, помогите сделать такую задачу.
После установки, нужно проверить, скопирован-ли хоть 1н файл.
Если не скопирован, то убрать флаг onlyifdestfileexists и сделать установку по второму кругу. Как это сделать?


Код: onlyifdestfileexists
Файл устанавливается только тогда, когда файл с тем же именем уже установлен в системе пользователя. Этот флаг может быть полезен, если инсталлятор является патчем для установленного приложения, и вы не хотите, чтобы установились те файлы, которые у пользователя уже есть.
Автор: BEEn
Дата сообщения: 17.08.2015 07:46
решил с помощью параметров к sqlcmd сохранить лог в файл...
Автор: usermode
Дата сообщения: 21.08.2015 23:57
Может кому надо
CPUID 1.0 Example
http://rghost.ru/7MYtjDzfF

данный идентификатор получает информацию с аппаратной части процессора через ассемблерную команду cpuid.
Автор: dodakaedr
Дата сообщения: 22.08.2015 15:59
Как создать таймер в обычной версии inno setup 5.5.6?

Код: var
customtimer: TTimer;
Автор: usermode
Дата сообщения: 22.08.2015 18:20
dodakaedr
не надо привыкать к китайским поделкам, ищи компонент innocallback, там и пример по таймеру найдешь.
Автор: nortem
Дата сообщения: 23.08.2015 22:14
Здравствуйте, решил сделать свой первый репак. Надеюсь найти тут помощь. У меня есть графическая оболочка для инсталлера в формате psd. Каким макаром мне использовать его в скрипте
Автор: AngelNet
Дата сообщения: 23.08.2015 22:46
nortem
конвертировать в PNG (если не хотите терять в качестве) и не бить себе мозг.
также рекомендую погуглить на тему скинов для инно-сетап и их использования.
Автор: Artem_Butenko
Дата сообщения: 28.08.2015 13:16
sjwrec


Цитата:
Artem_Butenko

Так


Кажется понял, не работает с флагом "external", следовательно не отображается процесс копирования внешних файлов. Как можно это исправить?
Автор: kbcfxtyrj
Дата сообщения: 29.08.2015 14:52
может кто знает как его сделать
что бы пользователь мог сам выбирать какое приложение ему установить или все сразу
http://piccash.net/allimage/2015/8-29/img_thumb/507123-thumb.png
Автор: sjwrec
Дата сообщения: 03.09.2015 18:03
Artem_Butenko

Цитата:
Кажется понял, не работает с флагом "external", следовательно не отображается процесс копирования внешних файлов. Как можно это исправить?


Можно поменять BeforeInstall на AfterInstall
Однако это будет нормально работать только с множеством мелких файлов.
На больших файлах более 100 мб это уже будет очень даже заметно, запись будет появляться только после завершения копирования файла.
Автор: AndrewSE91
Дата сообщения: 05.09.2015 02:00
[more]
Цитата:
может кто знает как его сделать
что бы пользователь мог сам выбирать какое приложение ему установить или все сразу
http://piccash.net/allimage/2015/8-29/img_thumb/507123-thumb.png


Примерно так

[more]

Код:
[Components]
Name: "prog1"; Description: "Browser1"; Types: full;
Name: "prog2"; Description: "Browser2"; Types: full;
Name: "prog3"; Description: "Browser3"; Types: full;
Name: "prog4"; Description: "Browser4"; Types: full;

[Files]
Source: "{app}\папка1\программа1.exe"; DestDir: "{app}\папка1"; Components: prog1; Flags: ignoreversion
Source: "{app}\папка2\программа2.exe"; DestDir: "{app}\папка2"; Components: prog2; Flags: ignoreversion
Source: "{app}\папка3\программа3.exe"; DestDir: "{app}\папка3"; Components: prog3; Flags: ignoreversion
Source: "{app}\папка4\программа4.exe"; DestDir: "{app}\папка4"; Components: prog4; Flags: ignoreversion
Автор: AndrewSE91
Дата сообщения: 10.09.2015 16:02
[more]
[more]1[/more]
Вообщем попытаюсь перефразировать свой вопрос.
Суть установки такова: имеется проект, но для его работы нужны файлы из другого проекта, чтобы не нарушать авторские права и не копировать файлы чужого проекта в свой инсталлятор (да и условия мне были поставлены такие, чтобы реализовать копирование файлов из другого проекта, а не тупо пихать их в свой инсталлятор).

Вообщем это выглядит примерно так:

На странице SelectDirPage
Основной путь, тобишь:
dir1: {pf}\мой проект
Директория, из которой будут скопированы файлы, тобишь.
dir2: {pf}\другой проект, из которого будут копироваться файлы в dir1 и некоторые из них (т.е. не все) переименовываться другим именем

Есть у кого какие идеи? Может кому нибудь встречались подобные инсталляторы?

Уже пятые сутки бьюсь в истерике, как реализовать это, но всё как-то не получается, ибо мои познания в delphi как у школьника первоклассника, который взял в руки учебник по мат. анализу
А тем временем сроки горят

зы: в IS сделал примерную визуальную заготовку, как эта проклятая хрень должна выглядеть:
[more]http://cs629501.vk.me/v629501234/eb0a/g6uw1mseQuU.jpg[/more] [/more]
Автор: jonikDk
Дата сообщения: 10.09.2015 16:27

Цитата:
Есть у кого какие идеи? Может кому нибудь встречались подобные инсталляторы?

ну так только ручками писать код, который будет проверять наличие нужных тебе файлов, копировать и переименовывать их
Автор: AlekseyPopovv
Дата сообщения: 13.09.2015 13:54
Как правильно задать параметр?
Exec(ExpandConstant('{win}\regedit.exe'), '/EA (ExpandConstant({commondesktop}\settings.reg HKEY_CURRENT_USER\Software\DWGTool\CADConverter)', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758

Предыдущая тема: Только инсталлятор


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