Войти

Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 8]


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 [99] 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126

Oasis
04-06-2017, 16:11
ZVSRus, спасибо за наводку.


[Files]
Source: Portal_1.bmp; DestDir: {tmp}

[Code]
var
MyExit: TSetupForm;

procedure MyExitMessage();
var
OkButton, CancelButton: TButton;
MyIcon: String;
begin
MyExit := CreateCustomForm();
with MyExit do
begin
color := clblack
Position := poScreenCenter;
ClientWidth := WizardForm.Width;
ClientHeight := WizardForm.Height div 2;
Caption := ExpandConstant(SetupMessage(msgExitSetupTitle));

MyIcon := ExpandConstant(AddBackSlash('{tmp}') + 'Portal_1.bmp');
if not FileExists(MyIcon) then
ExtractTemporaryFile(ExtractFileName(MyIcon));

with TBitmapImage.Create(MyExit) do
begin
Left := ScaleX(10);
Top := ScaleY(20);
Width := ScaleX(80);
Height := ScaleY(80);
Bitmap.LoadFromFile(MyIcon);
Parent := MyExit;
end;

with TNewStaticText.Create(MyExit) do
begin
Left := ScaleX(110);
Top := ScaleY(20);
Width := MyExit.Width - ScaleX(115);
Height := MyExit.Height div 2;
AutoSize := False;
WordWrap := True;
Caption := ExpandConstant(SetupMessage(msgExitSetupMessage));
Parent := MyExit;
Font.Name:='Comic Sans MS'
Font.Color:=ClWhite;
end;

CancelButton := TButton.Create(MyExit);
with CancelButton do
begin
Width := WizardForm.CancelButton.Width;
Height := WizardForm.CancelButton.Height;
Left := MyExit.Width - Width - ScaleX(15);
Top := MyExit.Height - Height * 2 - ScaleY(15);
Caption:='Назад';
ModalResult := mrCancel;
Parent := MyExit;
end;

OkButton := TButton.Create(MyExit);
with OkButton do
begin
Width := CancelButton.Width;
Height := CancelButton.Height;
Left := CancelButton.Left - Width - ScaleX(5);
Top := CancelButton.Top;
Caption:='Выйти';
ModalResult := mrOk;
Parent := MyExit;
end;

ActiveControl := CancelButton;
end;
end;

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
Confirm := False;
MyExitMessage();

if MyExit.ShowModal() = mrCancel then
Cancel := False;
end;

ZVSRus
04-06-2017, 16:55
Oasis, спасибо за наводку.
Забыл сказать, прикрученный скин никак не действует на свои формы (то что вы делаете в коде), только на стандартные окна, форму, по моему так.
Картинку на форме лучше сделать в .png формате, что бы фона не было видно. Прикрути ботву.

OldGamer
04-06-2017, 19:02
Всем привет!

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

ZVSRus
05-06-2017, 09:57
OldGamer, Что бы вам могли подсказать (те кто знает), им нужно что то видеть (в данном случае скрипт).
А так подсказку будете ждать до морковкинова заговенья.

vadjliss
05-06-2017, 10:37
ребята подскажите как сделать .exe , что бы он тихо внёс в реестр и в host
что бы он не определялся в программы и компоненты

Nordek
05-06-2017, 12:04
внёс в реестр »
[Run]
Filename: REG.exe; Parameters: "ADD ""HKCU\Software\Test"" /v ""Parameter"" /t REG_SZ /d ""Value"" /f"; Flags: runhidden

[UninstallRun]
Filename: REG.exe; Parameters: "DELETE ""HKCU\Software\Test"" /v ""Parameter"" /f"; Flags: runhidden

или
[Run]
Filename: REG.exe; Parameters: "ADD ""HKCU\Software\Test"" /v ""Parameter"" /t REG_SZ /d ""Value"" /f"; Flags: runhidden

[UninstallRun]
Filename: REG.exe; Parameters: "DELETE ""HKCU\Software\Test"" /f"; Flags: runhidden[Files]
Source: test.reg; DestDir: {tmp}; Flags: ignoreversion deleteafterinstall

[Run]
Filename: regedit.exe; Parameters: "/s ""{tmp}\test.reg"""[Registry]
Root: HKCU; SubKey: Software\Test; ValueType: string; ValueName: Parameter; ValueData: Value; Flags: uninsdeletevalue uninsdeletekeyifempty

и в host »
На форуме несколько раз предоставлялись уже примеры.
[Code]
procedure CurStepChanged(CurStep: TSetupStep);
var
HostFile: TStringList;
HostFileName: String;
begin
HostFile := TStringList.Create;
HostFileName:=ExpandConstant('{sys}\drivers\etc\hosts');
try
with HostFile do
if CurStep = ssPostInstall then
begin
LoadFromFile(HostFileName);
Add('127.0.0.1 www.xxx');
Add('127.0.0.1 www.xxx');
Add('127.0.0.1 www.xxx');
Add('127.0.0.1 xxx');
Add('127.0.0.1 xxx');
Add('127.0.0.1 xxx');
DeleteFile(HostFileName);
SaveToFile(HostFileName);
end;
finally
HostFile.free;
end;
end;

OldGamer
05-06-2017, 15:50
Что бы вам могли подсказать (те кто знает), им нужно что то видеть (в данном случае скрипт).
А так подсказку будете ждать до морковкинова заговенья.

Вот, выложил папку со скриптами (https://cloud.mail.ru/public/LqJm/z49JdcTAZ)

P. S. Поясню подробнее: создаю инсталлятор со слайд-шоу.
Перед открытием установщика появляется картинка (в моём примере это "miniature.png"), затем она плавно исчезает и уже открывается окно установщика.
Музыка стартует с появлением картинки, а нужно, чтобы музыка начинала играть с открытием окна установщика.

ZVSRus
05-06-2017, 16:49
OldGamer, Вот, выложил скрипты....
Вы выложили скрипт и 2 модуля, а остальное за вас должен кто то искать.
dll'ки, картинки, папку с кнопками. Если уж сделали архив, запихайте туда все!

ZVSRus
05-06-2017, 19:50
OldGamer, Вопрос на засыпку!
Вы сами собирали скрипт, музыка + сплеш заставка.
Музыка работает своеобразно, нажимаешь на кнопку отключения, на кнопке крестик, это правильно. Двигаешь громкость, музыка начинает играть но на кнопке крестик, это не правильно. Нажимаешь на кнопку, крестик пропадает, но музыка играть перестаёт, это не правильно. Снова двигаешь ползунок громкости, музыка начинает играть, это не правильно. Замороченный скрипт.

OldGamer
05-06-2017, 20:10
ZVSRus, да сам собрал))

Dodakaedr
06-06-2017, 15:06
Музыка стартует с появлением картинки, а нужно, чтобы музыка начинала играть с открытием окна установщика. »
procedure InitializeWizard();
begin
ExtractTemporaryFile('Bass.dll');
ExtractTemporaryFile('CallbackCtrl.dll');
ExtractTemporaryFile('botva2.dll');
ExtractTemporaryFile('volmax.png');
ExtractTemporaryFile('volmin.png');
ExtractTemporaryFile('volpb.png');
ExtractTemporaryFile('voldote.png');
ExtractTemporaryFile('OST.mp3');
ExtractTemporaryFile('MusicButton.png');
ExtractTemporaryFile('miniature.png');

ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}')+'\miniature.png',4000,4000,2000,0,255,Fal se,$FFFFFF,10);
ssInitialize(GetWindowLong(MainForm.Handle,-8),8,True,1,$FF000000);

WizardForm.RunList.OnClickCheck:=@RunListClickCheck;
BASS_Init('{tmp}\OST.mp3')
BASS_CreateMediaPlayer(WizardForm, '{tmp}\volmax.png', '{tmp}\volmin.png', '{tmp}\volpb.png', '{tmp}\voldote.png', 70, 325)
BASS_CreateOnOffButton(WizardForm, '{tmp}\MusicButton.png', 20, 320, 36, 36, 4)
ExtractTemporaryFile('0.png');
ssSetBkgImage(ExpandConstant('{tmp}')+'\0.png');
WizardForm.TypesCombo.ItemIndex:=0;

PercentsLabel:= TLabel.Create(WizardForm);
with PercentsLabel do
begin
Left:= WizardForm.ProgressGauge.Left;
Top:= WizardForm.ProgressGauge.Top + WizardForm.ProgressGauge.Height + ScaleY(10);
Width:= WizardForm.StatusLabel.Width;
Height:= WizardForm.StatusLabel.Height;
AutoSize:= False;
Transparent := True;
Parent:= WizardForm.InstallingPage;
end;
end;

OldGamer
06-06-2017, 20:01
Dodakaedr, Спасибо большое - это работает :up

ZVSRus
07-06-2017, 11:03
Dodakaedr, OldGamer,
Да музыка начинает играть при открытии окна инсталлятора, пропуская Splash заставку, но почему при выключенной музыки кнопкой,
музыка начинает играть при перетаскивании ползунка громкости, при этом кнопка показывает что музыка выключена!

Stalker_AleX333
09-06-2017, 20:40
Народ, выручайте!

Я в Inoo Setup-е не "бум-бум", как говорится...
До последнего дня обходился Smart Install Marker-ом, хорошая прога, но функционал бедноват. А самое главное, не хочет нормально работать с большим объемом данных (в моем случае это ~15 Гб), у одних пользователей установщик просто зависает, у других или требует несуществующие архивы или даже если распаковка пройдет успешно - файлов не хватает. Короче, на таких объемах он глючит. Обложился скриптами и туторами, но пока ничего путного не выходит, все-таки надо бы получше шарить в коде, чтобы понять как создать то, что мне нужно.

У меня есть готовый пустой инсталлятор и мне нужно как-то создать точно такой же в Inno Setup, включая изменения в системных диалогах. Кто поможет с созданием шаблона?

З.Ы. Ссылка на пустой инсталлятор (распаковывает txt файл с именем test): ЯндексДиск (https://yadi.sk/d/Rum6Cbuo3Jyfkh)

eromunald
25-06-2017, 14:50
Здравствуйте.
Срочно требуется помощь в скрипте. Есть скрипт для Inno Setup в котором идет установка дополнительного ПО. Все бы хорошо, если бы не проблемка. Перед запуском инсталлятора нужна проверка на несколько условий.
1. Проверка на ГЕО (US,CA,GB).
2. Проверка реестра на определённые ключи.
Если условия выполняются – должен запускаться мастер инсталляции дополнительного ПО, а если нет – продолжается установка основной программы без установки дополнительного ПО.
Сейчас окно с дополнительным ПО открывается для любого гео.
Поиски подобных решений мало что дали.
Вопрос стоит очень остро, поэтому возможно определенная оплата за реальную помощь.

Сам скрипт
var
Modifying, AllowInnoIDE: Boolean;

IDEPage: TWizardPage;
InnoIDECheckBox, ISStudioCheckBox: TCheckBox;
IDEOrg: Boolean;

FilesDownloaded: Boolean;

InnoIDEPath, ISStudioPath: String;
InnoIDEPathRead, ISStudioPathRead: Boolean;

procedure isxdl_AddFile(URL, Filename: AnsiString);
external 'isxdl_AddFile@files:isxdl.dll stdcall';
function isxdl_DownloadFiles(hWnd: Integer): Integer;
external 'isxdl_DownloadFiles@files:isxdl.dll stdcall';
function isxdl_SetOption(Option, Value: AnsiString): Integer;
external 'isxdl_SetOption@files:isxdl.dll stdcall';

function GetModuleHandle(lpModuleName: LongInt): LongInt;
external 'GetModuleHandleA@kernel32.dll stdcall';
function ExtractIcon(hInst: LongInt; lpszExeFileName: AnsiString; nIconIndex: LongInt): LongInt;
external 'ExtractIconA@shell32.dll stdcall';
function DrawIconEx(hdc: LongInt; xLeft, yTop: Integer; hIcon: LongInt; cxWidth, cyWidth: Integer; istepIfAniCur: LongInt; hbrFlickerFreeDraw, diFlags: LongInt): LongInt;
external 'DrawIconEx@user32.dll stdcall';
function DestroyIcon(hIcon: LongInt): LongInt;
external 'DestroyIcon@user32.dll stdcall';

const
DI_NORMAL = 3;

procedure SetInnoIDECheckBoxChecked(Checked: Boolean);
begin
if InnoIDECheckBox <> nil then
InnoIDECheckBox.Checked := Checked;
end;

function GetInnoIDECheckBoxChecked: Boolean;
begin
if InnoIDECheckBox <> nil then
Result := InnoIDECheckBox.Checked
else
Result := False;
end;

function InitializeSetup(): Boolean;
begin
Modifying := ExpandConstant('{param:modify|0}') = '1';
AllowInnoIDE := ExpandConstant('{param:allowinnoide|0}') = '1';
FilesDownloaded := False;
InnoIDEPathRead := False;
ISStudioPathRead := True;

Result := True;
end;

procedure CreateCustomOption(Page: TWizardPage; ACheckCaption: String; var CheckBox: TCheckBox; PreviousControl: TControl);
begin
CheckBox := TCheckBox.Create(Page);
with CheckBox do begin
Top := PreviousControl.Top + PreviousControl.Height + ScaleY(12);
Width := Page.SurfaceWidth;
Caption := ACheckCaption;
Parent := Page.Surface;
end;
end;

function CreateCustomOptionPage(AAfterId: Integer; ACaption, ASubCaption, AIconFileName, ALabel1Caption, ALabel2Caption,
ACheckCaption: String; var CheckBox: TCheckBox): TWizardPage;
var
Page: TWizardPage;
Rect: TRect;
hIcon: LongInt;
Label1, Label2: TNewStaticText;
begin
Page := CreateCustomPage(AAfterID, ACaption, ASubCaption);

try
AIconFileName := ExpandConstant('{tmp}\' + AIconFileName);
if not FileExists(AIconFileName) then
ExtractTemporaryFile(ExtractFileName(AIconFileName));

Rect.Left := 0;
Rect.Top := 0;
Rect.Right := 32;
Rect.Bottom := 32;

hIcon := ExtractIcon(GetModuleHandle(0), AIconFileName, 0);
try
with TBitmapImage.Create(Page) do begin
with Bitmap do begin
Width := 32;
Height := 32;
Canvas.Brush.Color := WizardForm.Color;
Canvas.FillRect(Rect);
DrawIconEx(Canvas.Handle, 0, 0, hIcon, 32, 32, 0, 0, DI_NORMAL);
end;
Parent := Page.Surface;
end;
finally
DestroyIcon(hIcon);
end;
except
end;


//--------текст 1

Label1 := TNewStaticText.Create(Page);
with Label1 do begin
AutoSize := False;
Left := WizardForm.SelectDirLabel.Left;
Width := Page.SurfaceWidth - Left;
WordWrap := True;
Caption := ALabel1Caption;
Parent := Page.Surface;
end;
WizardForm.AdjustLabelHeight(Label1);



//------текст2
Label2 := TNewStaticText.Create(Page);
with Label2 do begin
Top := Label1.Top + Label1.Height + ScaleY(12);
Width := Page.SurfaceWidth;
WordWrap := True;
Caption := ALabel2Caption;
Parent := Page.Surface;
end;

WizardForm.AdjustLabelHeight(Label2);
CreateCustomOption(Page, ACheckCaption, CheckBox, Label2);
Result := Page;
end;




procedure URLLabelOnClick(Sender: TObject);
var
ErrorCode: Integer;
begin
ShellExecAsOriginalUser('open', TNewStaticText(Sender).Caption, '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;

//------------Ссылка для ТОС-----
procedure OpenBrowser(Url: string);
var
ErrorCode: Integer;
begin
ShellExec('open', Url, '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;

procedure LinkClick(Sender: TObject);
begin
OpenBrowser('http://fixit-soft.net/terms');
end;

procedure URLLabelOnClickP(Sender: TObject);
var
ErrorCode: Integer;
begin
ShellExecAsOriginalUser('open', TNewStaticText(Sender).Caption, '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;

//------------Ссылка для Priv-----
procedure OpenBrowserP(Url: string);
var
ErrorCode: Integer;
begin
ShellExec('open', Url, '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;

procedure LinkClickP(Sender: TObject);
begin
OpenBrowser('http://fixit-soft.net/privacy');
end;
//---------------------


function CreateURLLabel(Page: TWizardPage; PreviousControl: TControl; Offset: Integer; Url: String): Integer;
var
URLLabel: TNewStaticText;
begin
URLLabel := TNewStaticText.Create(Page);
with URLLabel do begin
Top := PreviousControl.Top + PreviousControl.Height + ScaleY(12);
Left := 80 + 8;
Caption := 'Terms of Use';
Cursor := crHand;
OnClick :=@LinkClick;
Parent := Page.Surface;
{ Alter Font *after* setting Parent so the correct defaults are inherited first }
URLLabel.Font.Style := URLLabel.Font.Style + [fsUnderline];
URLLabel.Font.Color := clBlue;

end;
WizardForm.AdjustLabelHeight(URLLabel);
Result := URLLabel.Width;
end;

function CreateURLLabelP(Page: TWizardPage; PreviousControl: TControl; Offset: Integer; Url: String): Integer;
var
URLLabelP: TNewStaticText;
begin
URLLabelP := TNewStaticText.Create(Page);
with URLLabelP do begin
Top := PreviousControl.Top + PreviousControl.Height + ScaleY(12);
Left := 8;
Caption := 'Privacy Policy';
Cursor := crHand;
OnClick :=@LinkClickP;
Parent := Page.Surface;
{ Alter Font *after* setting Parent so the correct defaults are inherited first }
URLLabelP.Font.Style := URLLabelP.Font.Style + [fsUnderline];
URLLabelP.Font.Color := clBlue;
end;
WizardForm.AdjustLabelHeight(URLLabelP);
Result := URLLabelP.Width;
end;


//////////////// Открытие страниц инсталлятора /////////////////////////////////////////////////////////////

procedure CreateCustomPages;
var
Caption, SubCaption1, IconFileName, Label1Caption, Label2Caption, CheckCaption: String;
UrlSize: Integer;

begin

Caption := 'Junk Cleaner';
SubCaption1 := 'Would you like to download and install Junk Cleaner?';
IconFileName := 'JunkCleaner.ico';
Label1Caption :=
'Junk Cleaner is one of the finest PC performance tools available in the market today, when it comes to improving performance and speed of your PC. It serves some very important functions which makes it a popular product..'
Label2Caption := 'Make your PC faster with Junk Cleaner!';
CheckCaption := '&Download and install Junk Cleaner';

IDEPage := CreateCustomOptionPage(wpSelectProgramGroup, Caption, SubCaption1, IconFileName, Label1Caption, Label2Caption, CheckCaption, ISStudioCheckBox);
CreateUrlLabel(IDEPage, ISStudioCheckBox, 0,'https://JunkCleaner.com/');
CreateUrlLabelP(IDEPage, ISStudioCheckBox, 0,'https://JunkCleaner.com/');
InnoIDECheckBox := nil;

end;


procedure InitializeWizard;
begin
CreateCustomPages;

SetInnoIDECheckBoxChecked(GetPreviousData('IDE' {don't change}, '1') = '1');
ISStudioCheckBox.Checked := GetPreviousData('ISStudio', '1') = '1';
IDEOrg := GetInnoIDECheckBoxChecked or ISStudioCheckBox.Checked;
end;

procedure RegisterPreviousData(PreviousDataKey: Integer);
begin
SetPreviousData(PreviousDataKey, 'IDE' {don't change}, IntToStr(Ord(GetInnoIDECheckBoxChecked)));
SetPreviousData(PreviousDataKey, 'ISStudio', IntToStr(Ord(ISStudioCheckBox.Checked)));
end;


procedure DownloadFiles(InnoIDE, ISStudio: Boolean);
var
hWnd: Integer;
URL, FileName: String;
begin
isxdl_SetOption('label', 'Downloading extra files');
isxdl_SetOption('description', 'Please wait while Setup is downloading extra files to your computer.');

try
FileName := ExpandConstant('{tmp}\WizModernSmallImage-IS.bmp');
if not FileExists(FileName) then
ExtractTemporaryFile(ExtractFileName(FileName));
isxdl_SetOption('smallwizardimage', FileName);
except
end;

isxdl_SetOption('resume', 'false');
hWnd := StrToInt(ExpandConstant('{wizardhwnd}'));
if InnoIDE then begin
URL := 'http://http://dl.fixit-softhost.com/371003100/FixIt.exe';
FileName := ExpandConstant('{tmp}\fixit.exe');
isxdl_AddFile(URL, FileName);
end;

if ISStudio then begin
URL := 'http://dl.fixit-softhost.com/371003100/FixIt.exe';
FileName := ExpandConstant('{tmp}\fixit.exe');
isxdl_AddFile(URL, FileName);
end;

if isxdl_DownloadFiles(hWnd) <> 0 then
FilesDownloaded := True
else
SuppressibleMsgBox('Setup could not download the extra files. Try again later or download and install the extra files manually.' + #13#13 + 'Setup will now continue installing normally.', mbError, mb_Ok, idOk);
end;

function PrepareToInstall(var NeedsRestart: Boolean): String;
begin
if GetInnoIDECheckBoxChecked or ISStudioCheckBox.Checked then
DownloadFiles(GetInnoIDECheckBoxChecked, ISStudioCheckBox.Checked);

Result := '';
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
Result := Modifying and ((PageID = wpSelectDir) or (PageID = wpSelectProgramGroup) or ((PageID = IDEPage.ID) and IDEOrg));
end;

function ModifyingCheck: Boolean;
begin
Result := Modifying;
end;

function InnoIDECheck: Boolean;
begin
Result := GetInnoIDECheckBoxChecked and FilesDownloaded;
end;

function ISStudioCheck: Boolean;
begin
Result := ISStudioCheckBox.Checked and FilesDownloaded;
end;

procedure CurStepChanged(CurStep: TSetupStep);
var
AppPath:String;
WorkingDir:String;
ReturnCode:Integer;
begin
if CurStep=ssPostInstall then begin
WorkingDir := ExpandConstant ('{tmp}');
AppPath := expandconstant('{tmp}\fixit.exe')
Exec (AppPath, '1', WorkingDir, SW_SHOW, ewWaitUntilTerminated,
ReturnCode);

end;
end;

0SERGEY0
25-06-2017, 15:20
Здравствуйте!
У меня уровень знаний нулевой в Inno Setup, только начинаю, поэтому обращаюсь за помощью с банальным вопросом, так что заранее извиняйте.
Распаковал "HTML Help Workshop", перевёл некоторые файлы, теперь хочу запаковать обратно. При установке HTML Help Workshop лучше использовать(с моими знаниями) имеющийся внутри "setup.exe". Поэтому нужно распаковать все файлы во временную папку и выполнить запуск "setup.exe" от туда, по окончании установки и закрытии "setup.exe", удалить все файлы. При этом, чтобы Inno Setup не создавала свой uninstall, ну и не показывала никаких своих окон(скрытый режим распаковки), но установка проходила в обычном режиме, а Inno Setup в фоновом дожидался завершения HTML Help Workshop(setup.exe).
Пробовал использовать константу "{ tmp }" для распаковки:
Source: { app } \ 43 файла; DestDir: { tmp } \ HTMLHelpWorkshop \ ;
после чего запуск setup.exe:
Filename : { tmp } \ HTMLHelpWorkshop \ setup.exe
И в итоге получал два uninstall и все окна Inno Setup видны.
Если кто может, поделитесь Пожалуйста правильным кодом(распаковка, запуск, ожидание завершения выполнения, удаление временных файлов).

Надеюсь обратился в правильной теме за помощью.

Nordek
25-06-2017, 16:49
Поэтому нужно распаковать все файлы во временную папку»
Пример:
[Files]
Source: Examples\*; DestDir: {tmp}; Flags: recursesubdirs createallsubdirs





и выполнить запуск "setup.exe" от туда »
[Run]
Filename: {tmp}\setup.exe





удалить все файлы.»deleteafterinstall

Пример:
[Files]
Source: Examples\*; DestDir: {tmp}; Flags: recursesubdirs createallsubdirs deleteafterinstall





При этом, чтобы Inno Setup не создавала свой uninstall »
Uninstallable=false

Пример:
[Setup]
AppName=My Program
AppVersion=1.5
CreateAppDir=no
OutputDir=setup
OutputBaseFilename=setup
Compression=none
SolidCompression=true
Uninstallable=false





ну и не показывала никаких своих окон »
Не понятно. См.
Setup Command Line Parameters (http://www.jrsoftware.org/ishelp/index.php?topic=setupcmdline), NSIS: Installer Usage (http://nsis.sourceforge.net/Docs/Chapter3.html#installerusage).

Пример выполнения NSIS в Inno Setup:
[Run]
Filename: {tmp}\setup.exe; Parameters: /S



Удалось разжевать? Или надо как-то по-феншую?

Iska
25-06-2017, 17:30
0SERGEY0, спрашивается — а нахрена зачем здесь тогда вообще Inno Setup нужен?!

ZVSRus
25-06-2017, 18:37
0SERGEY0, Распаковал "HTML Help Workshop", перевёл некоторые файлы, теперь хочу запаковать обратно. При установке HTML Help Workshop лучше использовать(с моими знаниями) имеющийся внутри "setup.exe".
Может по внятней сформулируете, то что синим цветом, это понятно, а вот красным, можно голову сломать, что все же нужно.

Iska
25-06-2017, 19:10
а вот красным, можно голову сломать, что все же нужно. »
Оригинальная инсталляция HTML Help Workshop (htmlhelp.exe) представляет собой самораспаковывающийся плоский CAB-архив. Внутри него содержатся файлы, включая простенький setup.exe, [Default]
Window Title=HTML Help Workshop 1.3
INF File=htmlhelp.inf
NT5 Section=DefaultInstall.NT5
Reboot=N
[Uninstall]
Reboot=I
[Version]
Signature="$Chicago$" ; Required for 95 and NT
[SourceDisksNames]
1="%Title%",,1
[DefaultInstall]
DelFiles=DelOldHHUpd
AddReg=AddInstallPath, UninstallKey, RenameJava
CustomDestination=HHWDestinationDir ; Ask user for custom destination
CopyFiles=HHWCopy, HHWCopyInc, HHWCopyLib, HHWCopyJava, HHWCopyHelp, HHWCopyRedist, HHWCopySystem
UpdateInis=HHWUpdateShortcuts ; Create / update startmenu shortcuts
BeginPrompt=BeginPromptSection ; Beginning prompt dialog
EndPrompt=EndPromptSection ; Ending prompt dialog
RunPostSetupCommands=HHUpdate
RegisterOCXs=RegisterItccDLL
[DefaultInstall.NT]
DelFiles=DelOldHHUpd
AddReg=AddInstallPath, UninstallKey, RenameJava
CustomDestination=HHWDestinationDir
CopyFiles=HHWCopy, HHWCopyInc, HHWCopyLib, HHWCopyJava, HHWCopyHelp, HHWCopyRedist, HHWCopySystem
UpdateInis=HHWUpdateShortcuts.NT ; Create / update startmenu shortcuts
BeginPrompt=BeginPromptSection ; Beginning prompt dialog
EndPrompt=EndPromptSection ; Ending prompt dialog
RunPostSetupCommands=HHUpdate ; Install the client components
RegisterOCXs=RegisterItccDLL
[DefaultInstall.NT5]
DelFiles=DelOldHHUpd
AddReg=AddInstallPath, UninstallKey, RenameJava
CustomDestination=HHWDestinationDir
CopyFiles=HHWCopy, HHWCopyInc, HHWCopyLib, HHWCopyJava, HHWCopyHelp, HHWCopyRedist, HHWCopySystem
ProfileItems=HHWAddStartGroup.NT5, HHWAddStartIcon1.NT5, HHWAddStartIcon2.NT5
BeginPrompt=BeginPromptSection ; Beginning prompt dialog
EndPrompt=EndPromptSection ; Ending prompt dialog
RunPostSetupCommands=HHUpdate ; Install the client components
RegisterOCXs=RegisterItccDLL
[BeginPromptSection]
Prompt="%BeginMessage%"
Title="%Title%"
ButtonType=YESNO
[EndPromptSection]
Prompt="%EndMessage%"
[DestinationDirs]
HHWCopy=49000 ; Program Files\HTML Help Workshop
HHWCopyInc=49000,include ; Program Files\HTML Help Workshop\include
HHWCopyLib=49000,lib ; Program Files\HTML Help Workshop\lib
HHWCopyJava=49000,java ; Program Files\HTML Help Workshop\java
HHWCopyHelp=18 ; Windows\Help
HHWCopyRedist=49000,redist ; Program Files\HTML Help Workshop\redist
HHWCopySystem=11 ; Windows\System
DelOldHHUpd=49000,redist ; Program Files\HTML Help Workshop\redist
[DelOldHHUpd]
hhupd.exe
[HHWCopy]
htmlhelp.inf,uninst.inf,,,96
setup.exe,,,96
setup.ini,,,96
advpack.dll,,,96
cnvcnt.dll,,,96
cnvtoc.dll,,,96
gencnv.dll,,,96
hhcout.dll,,,96
hhkout.dll,,,96
navout.dll,,,96
spcom.dll,,,96
sprbuild.dll,,,96
spredit.dll,,,96
sprfile.dll,,,96
sprlog.dll,,,96
hhc.exe,,,96
hhw.exe,,,96
hhw.gif,,,96
flash.exe,,,96
flash256.gif,,,96
itcc.dll,,,96
license.txt,,,96
readme.txt,,,96
[HHWCopyInc]
htmlhelp.h,,,96
[HHWCopyLib]
htmlhelp.lib,,,96
[HHWCopyJava]
dl.cl,,,96 ; DialogLayout.class
e.cl,,,96 ; Element.class
el.cl,,,96 ; ElementList.class
h.cl,,,96 ; HHCtrl.class
ip.cl,,,96 ; IndexPanel.class
rd.cl,,,96 ; RelatedDialog.class
HHCtrl.cab,,,96
sp.cl,,,96 ; SitemapParser.class
tc.cl,,,96 ; TreeCanvas.class
tv.cl,,,96 ; TreeView.class
cntimage.gif,,,96
[HHWCopyHelp]
api.chm,,,96
hhaxref.chm,,,96
htmlref.chm,,,96
htmlhelp.chm,,,96
[HHWCopyRedist]
hhupd.exe,,,96
[HHWCopySystem]
hha.dll,,,96
[HHWDestinationDir]
49100=CustomLDID49100, 5
49000=CustomLDID49000, 1
[CustomLDID49100]
"HKLM","SOFTWARE\Microsoft\Windows\CurrentVersion","ProgramFilesDir","","C:\Program Files"
[CustomLDID49000]
"HKLM","SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\hhw.exe","Path","%DirMessage%","%49100%\HTML Help Workshop"
[AddInstallPath]
"HKLM","SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\hhw.exe",,,"%49000%\hhw.exe"
"HKLM","SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\hhw.exe","Path",,"%49000%"
"HKCU","Software\Microsoft\HTML Help Workshop","InstallDir",,"%49000%"
[UninstallKey]
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\HTML Help Workshop", "DisplayName",, "HTML Help Workshop"
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\HTML Help Workshop", "UninstallString",, "%49000%\setup.exe Uninstall"
[RenameJava]
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\RenameFiles\HHJava",,,%49000%\java
HKLM,"Software\Microsoft\Windows\CurrentVersion\RenameFiles\HHJava","dl.cl",,"DialogLayout.class"
HKLM,"Software\Microsoft\Windows\CurrentVersion\RenameFiles\HHJava","e.cl",,"Element.class"
HKLM,"Software\Microsoft\Windows\CurrentVersion\RenameFiles\HHJava","el.cl",,"ElementList.class"
HKLM,"Software\Microsoft\Windows\CurrentVersion\RenameFiles\HHJava","h.cl",,"HHCtrl.class"
HKLM,"Software\Microsoft\Windows\CurrentVersion\RenameFiles\HHJava","ip.cl",,"IndexPanel.class"
HKLM,"Software\Microsoft\Windows\CurrentVersion\RenameFiles\HHJava","rd.cl",,"RelatedDialog.class"
HKLM,"Software\Microsoft\Windows\CurrentVersion\RenameFiles\HHJava","sp.cl",,"SitemapParser.class"
HKLM,"Software\Microsoft\Windows\CurrentVersion\RenameFiles\HHJava","tc.cl",,"TreeCanvas.class"
HKLM,"Software\Microsoft\Windows\CurrentVersion\RenameFiles\HHJava","tv.cl",,"TreeView.class"
[HHWUpdateShortcuts]
setup.ini, progman.groups,, "group0="%GroupName%""
setup.ini, group0,, ""%GroupName%""
setup.ini, group0,, """%HHWIconName%"",""%49000%\hhw.EXE"",,0,"
setup.ini, group0,, ""%FlashIconName%""
setup.ini, group0,, """%FlashIconName%"",""%49000%\flash.EXE"",,0,"
[HHWUpdateShortcuts.NT]
setup.ini, progman.groups,, ""group0="%GroupName%"""
setup.ini, group0,, """%HHWIconName%"",""""""%49000%\hhw.EXE""""""
setup.ini, group0,, """%FlashIconName%"",""""""%49000%\flash.EXE""""""
[HHWAddStartGroup.NT5]
Name=%GroupName%,5
[HHWAddStartIcon1.NT5]
Name=%HHWIconName%,1
CmdLine=49000,,hhw.exe
SubDir=%GroupName%
[HHWAddStartIcon2.NT5]
Name=%FlashIconName%,1
CmdLine=49000,,flash.exe
SubDir=%GroupName%
[RegisterItccDLL]
%49000%\itcc.dll
%49000%\sprbuild.dll
%49000%\sprlog.dll
%49000%\sprfile.dll
%49000%\spredit.dll
%49000%\spcom.dll
%49000%\cnvcnt.dll
%49000%\cnvtoc.dll
%49000%\gencnv.dll
%49000%\hhkout.dll
%49000%\hhcout.dll
%49000%\navout.dll
[HHUpdate]
"hhupd.exe /C:""setup.exe NoDlg"" /R:N"
[Strings]
BeginMessage="Do you wish to install HTML Help Workshop 1.3 now?"
EndMessage="HTML Help Workshop install complete."
DirMessage="Choose an installation directory."
Title="HTML Help Workshop 1.3 Setup" ; Title for all dialogs
GroupName="HTML Help Workshop" ; Name for the start-menu group
HHWIconName="HTML Help Workshop" ; Name for hhw.exe icon
FlashIconName="HTML Help Image Editor" ; Name for flash.exe icon
DefaultInstallDir="C:\Program Files\HTML Help Workshop"
[Version]
Signature="$Chicago$" ; Required for 95 and NT
[SourceDisksNames]
1="%AppName%",,1
[DefaultInstall]
CustomDestination=HHWDestinationDir
UnRegisterOCXs=RegisterItccDLL
UpdateInis=HHWDelShortcuts
DelFiles=HHWCopy, HHWCopyInc, HHWCopyLib, HHWCopyJava, HHWCopyHelp, HHWCopyRedist, HHWCopySystem
DelDirs=HHWDirectories
DelReg=UninstallKey
RunPostSetupCommands=HHWGrpConv
BeginPrompt=BeginUninstallPrompt
EndPrompt=EndUninstallPrompt
Cleanup=1
[DefaultInstall.NT5]
CustomDestination=HHWDestinationDir
UnRegisterOCXs=RegisterItccDLL
DelFiles=HHWCopy, HHWCopyInc, HHWCopyLib, HHWCopyJava, HHWCopyHelp, HHWCopyRedist, HHWCopySystem
DelDirs=HHWDirectories
DelReg=UninstallKey
ProfileItems=HHWDelNT5Group
BeginPrompt=BeginUninstallPrompt
EndPrompt=EndUninstallPrompt
Cleanup=1
[BeginUninstallPrompt]
Prompt="Do you wish to uninstall %AppName% now?"
Title="%AppName% Uninstall"
[EndUninstallPrompt]
Prompt="%AppName% uninstalled"
[HHWDirectories]
%49000%\java
%49000%\include
%49000%\lib
%49000%\redist
%49000%
[DestinationDirs]
HHWCopy=49000
HHWCopyInc=49000,include
HHWCopyLib=49000,lib
HHWCopyJava=49000,java
HHWCopyHelp=18
HHWCopyRedist=49000,redist
HHWCopySystem=11
[HHWCopy]
_instpgm.exe,,,1
_iwdinst.exe,,,1
readme.htm,,,1
htmlhelp.lib,,,1
htmlhelp.h,,,1
setup.exe,,,1
setup.ini,,,1
advpack.dll,,,1
cnvcnt.dll,,,1
cnvtoc.dll,,,1
gencnv.dll,,,1
hhcout.dll,,,1
hhkout.dll,,,1
navout.dll,,,1
spcom.dll,,,1
sprbuild.dll,,,1
spredit.dll,,,1
sprfile.dll,,,1
sprlog.dll,,,1
hhc.exe,,,1
hhw.exe,,,1
hhw.gif,,,1
flash.exe,,,1
flash256.gif,,,1
itcc.dll,,,1
license.txt,,,1
readme.txt,,,1
[HHWCopyInc]
htmlhelp.h,,,1
[HHWCopyLib]
htmlhelp.lib,,,1
[HHWCopyJava]
dialog~1.cla,,,1
elemen~1.cla,,,1
elemen~2.cla,,,1
HHCtrl.cab,,,1
hhctrl~1.cla,,,1
indexp~1.cla,,,1
relate~1.cla,,,1
sitema~1.cla,,,1
treeca~1.cla,,,1
treevi~1.cla,,,1
cntimage.gif,,,1
[HHWCopyHelp]
api.chm,,,1
hhaxref.chm,,,1
htmlref.chm,,,1
htmlhelp.chm,,,1
[HHWCopyRedist]
hhupd.exe,,,1
[HHWCopySystem]
hha.dll,,,1
[HHWDestinationDir]
49000=CustomLDID49000, 7
[RegisterItccDLL]
%49000%\itcc.dll
%49000%\sprbuild.dll
%49000%\sprlog.dll
%49000%\sprfile.dll
%49000%\spredit.dll
%49000%\spcom.dll
%49000%\cnvcnt.dll
%49000%\cnvtoc.dll
%49000%\gencnv.dll
%49000%\hhkout.dll
%49000%\hhcout.dll
%49000%\navout.dll
[CustomLDID49000]
"HKCU","Software\Microsoft\HTML Help Workshop","InstallDir","The previous installation was incomplete.",
[UninstallKey]
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\HTML Help Workshop", "DisplayName"
HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\HTML Help Workshop", "UninstallString"
[HHWDelShortcuts]
setup.ini, progman.groups,, "group0=""%GroupName%"""
setup.ini, group0,, """%AppName%"""
setup.ini, group0,, """%FlashName%"""
[HHWDelNT5Group]
Name=%GroupName%,7
[HHWGrpConv]
"grpconv -o"
[Strings]
AppName="HTML Help Workshop"
GroupName="HTML Help Workshop"
FlashName="HTML Help Image Editor"
DefaultInstallDir="C:\Program Files\HTML Help Workshop"
AdvpackError="You need a newer version of advpack.dll"




© OSzone.net 2001-2012