А как можно сделать такую надпись?
» Inno Setup (создание инсталяционных пакетов)
Raf_SE
А справку почитать?
Или используй поиск - обсуждалось мульон раз! )))
А справку почитать?
Или используй поиск - обсуждалось мульон раз! )))
noiseless
Справку уже раз 100 вдоль и в поперек выштудировал - не нашел. Ну а насчет поиска... А по каким словам, можно решение данной задачи найти?
Справку уже раз 100 вдоль и в поперек выштудировал - не нашел. Ну а насчет поиска... А по каким словам, можно решение данной задачи найти?
Raf_SE
[Messages]
BeveledLabel=Copyrigth 2003-2007.......
[Messages]
BeveledLabel=Copyrigth 2003-2007.......
Подскажите пожалуйста, а как сделать скрытый файл?
Чтобы при распаковке в папке его не было видно, только если залезть в свойства папки и там выставить функцию "показывать скрытые файлы и папки".
Чтобы при распаковке в папке его не было видно, только если залезть в свойства папки и там выставить функцию "показывать скрытые файлы и папки".
Vselennaya
Чтото непонятно напиши точно что тебя интересует!
Чтото непонятно напиши точно что тебя интересует!
Цитата:
Чтобы при распаковке в папке его не было видно, только если залезть в свойства папки и там выставить функцию "показывать скрытые файлы и папки".
……чсто скрытые файлы = надо выставить атрибут файла – скрытый (свойства файла>скрытый)…..а вот как это в инно…
Чтобы не видно было при распаковки во время устновки. Я так понял это SFX архив вас интересует. Если так то через что вы его запускаете если черз код то вот
Код:
Exec(s, '-y -o"'+ s1 + '"', '', SW_HIDE, ewWaitUntilTerminated, res); вы небудетивидеть распаковку.
А если через [Run] то надо флаг Flags: shellexec runhidden waituntilterminated
Код:
Exec(s, '-y -o"'+ s1 + '"', '', SW_HIDE, ewWaitUntilTerminated, res); вы небудетивидеть распаковку.
А если через [Run] то надо флаг Flags: shellexec runhidden waituntilterminated
Vselennaya
Source: "compiler:Examples\MyProg.exe"; DestDir: "{app}"; Attribs: "hidden"; Flags: ignoreversion;
Source: "compiler:Examples\MyProg.exe"; DestDir: "{app}"; Attribs: "hidden"; Flags: ignoreversion;
Ктонить знает, как сделать так, чтобы файл из секции "InfoBeforeFile" показывался в зависимости от языка интерфейса инсталлятора? Ну т.е. у меня есть 3 файла, Русский, Украинский и Английский, как сделать чтобы если пользователь выберет англоязычный интерфейс инсталлятора, то показывался и англоязычный файл "InfoBeforeFile", ну и тоже самое относительно остальных локализаций.
P.S.
Так как пареметр "InfoBeforeFile" находиться в секции [Setup], то фишка с добавлением в конец "Languages", не срабатывает.
P.S.
Так как пареметр "InfoBeforeFile" находиться в секции [Setup], то фишка с добавлением в конец "Languages", не срабатывает.
Raf_SE
Цитата:
Сталкивался для двухязычной установки, для себя нашел такое простое решение [more=Код]
[Setup]
AppName=My Pregram
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
InfoBeforeFile=info_en.txt
ShowLanguageDialog=True
[Languages]
Name: "English"; MessagesFile: "compiler:Default.isl";
Name: "Russian"; MessagesFile: "compiler:Languages\Russian.isl";
[Files]
Source: "info_en.txt"; DestDir: "{tmp}"; Flags: nocompression;
Source: "info_ru.txt"; DestDir: "{tmp}"; Flags: nocompression;
[Code]
procedure CurPageChanged(CurPageID: Integer);
var
Text: String;
begin
if CurPageID = wpInfoBefore then
if ActiveLanguage = 'English' then
ExtractTemporaryFile('info_en.txt');
LoadStringFromFile(ExpandConstant('{tmp}\info_en.txt'), Text);
WizardForm.InfoBeforeMemo.Text := Text;
if ActiveLanguage = 'Russian' then
ExtractTemporaryFile('info_ru.txt');
LoadStringFromFile(ExpandConstant('{tmp}\info_ru.txt'), Text);
WizardForm.InfoBeforeMemo.Text := Text;
end;
[/more]
Цитата:
Ктонить знает, как сделать так, чтобы файл из секции "InfoBeforeFile" показывался в зависимости от языка интерфейса инсталлятора?
Сталкивался для двухязычной установки, для себя нашел такое простое решение [more=Код]
[Setup]
AppName=My Pregram
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
InfoBeforeFile=info_en.txt
ShowLanguageDialog=True
[Languages]
Name: "English"; MessagesFile: "compiler:Default.isl";
Name: "Russian"; MessagesFile: "compiler:Languages\Russian.isl";
[Files]
Source: "info_en.txt"; DestDir: "{tmp}"; Flags: nocompression;
Source: "info_ru.txt"; DestDir: "{tmp}"; Flags: nocompression;
[Code]
procedure CurPageChanged(CurPageID: Integer);
var
Text: String;
begin
if CurPageID = wpInfoBefore then
if ActiveLanguage = 'English' then
ExtractTemporaryFile('info_en.txt');
LoadStringFromFile(ExpandConstant('{tmp}\info_en.txt'), Text);
WizardForm.InfoBeforeMemo.Text := Text;
if ActiveLanguage = 'Russian' then
ExtractTemporaryFile('info_ru.txt');
LoadStringFromFile(ExpandConstant('{tmp}\info_ru.txt'), Text);
WizardForm.InfoBeforeMemo.Text := Text;
end;
[/more]
Все гораздо проще:
[Languages]
Name: ru; MessagesFile: compiler:Languages\Russian.isl; InfoBeforeFile: C:\ru_infobefore.txt
Name: en; MessagesFile: compiler:Languages\English.isl; InfoBeforeFile: C:\en_infobefore.txt
[Languages]
Name: ru; MessagesFile: compiler:Languages\Russian.isl; InfoBeforeFile: C:\ru_infobefore.txt
Name: en; MessagesFile: compiler:Languages\English.isl; InfoBeforeFile: C:\en_infobefore.txt
kombat 77
Хм... Чет не работает Ну в смысле показывает пустой екран, вместо RTF файла.
Можешь склеить 2 кода, [more=этот]procedure CurPageChanged(CurPageID: Integer);
begin
if (Pos('/SP-', UpperCase(GetCmdTail)) > 0) and
(CurPageID = wpSelectComponents) then
WizardForm.BackButton.Visible := False;
PageNameLabel.Caption := WizardForm.PageNameLabel.Caption;
PageDescriptionLabel.Caption := WizardForm.PageDescriptionLabel.Caption;
end;[/more] и [more=твой]procedure CurPageChanged(CurPageID: Integer);
var
Text: String;
begin
if CurPageID = wpInfoBefore then
if ActiveLanguage = 'English' then
ExtractTemporaryFile('info_en.txt');
LoadStringFromFile(ExpandConstant('{tmp}\info_en.txt'), Text);
WizardForm.InfoBeforeMemo.Text := Text;
if ActiveLanguage = 'Russian' then
ExtractTemporaryFile('info_ru.txt');
LoadStringFromFile(ExpandConstant('{tmp}\info_ru.txt'), Text);
WizardForm.InfoBeforeMemo.Text := Text;
end;[/more]? Возможно иза того что я их неправильно объеденил, и не пашет. (я нюб в этом)
Хм... Чет не работает Ну в смысле показывает пустой екран, вместо RTF файла.
Можешь склеить 2 кода, [more=этот]procedure CurPageChanged(CurPageID: Integer);
begin
if (Pos('/SP-', UpperCase(GetCmdTail)) > 0) and
(CurPageID = wpSelectComponents) then
WizardForm.BackButton.Visible := False;
PageNameLabel.Caption := WizardForm.PageNameLabel.Caption;
PageDescriptionLabel.Caption := WizardForm.PageDescriptionLabel.Caption;
end;[/more] и [more=твой]procedure CurPageChanged(CurPageID: Integer);
var
Text: String;
begin
if CurPageID = wpInfoBefore then
if ActiveLanguage = 'English' then
ExtractTemporaryFile('info_en.txt');
LoadStringFromFile(ExpandConstant('{tmp}\info_en.txt'), Text);
WizardForm.InfoBeforeMemo.Text := Text;
if ActiveLanguage = 'Russian' then
ExtractTemporaryFile('info_ru.txt');
LoadStringFromFile(ExpandConstant('{tmp}\info_ru.txt'), Text);
WizardForm.InfoBeforeMemo.Text := Text;
end;[/more]? Возможно иза того что я их неправильно объеденил, и не пашет. (я нюб в этом)
Raf_SE
Вариант предложеный Sig666 действительно проще.
Цитата:
Вариант предложеный Sig666 действительно проще.
Цитата:
[Languages]
Name: ru; MessagesFile: compiler:Languages\Russian.isl; InfoBeforeFile: C:\ru_infobefore.txt
Name: en; MessagesFile: compiler:Languages\English.isl; InfoBeforeFile: C:\en_infobefore.txt
Sig666, kombat 77
Спасибо, в самом деле так. Я просто не заметил поста Sig666
Спасибо, в самом деле так. Я просто не заметил поста Sig666
Цитата:
Source: "compiler:Examples\MyProg.exe"; DestDir: "{app}"; Attribs: "hidden"; Flags: ignoreversion;
kombat 77
О, спасибочки То, что надо
Хочется чтобы ветка реестра в CurrentVersion/Uninstall создавалась без постфикса _is1.
Это возможно ?
Это возможно ?
А можно сделать так, чтобы до запуска инсталлятора, устанавливалось 3 шрифта в систему? Просто у меня InfoBeforeFile в RTF формате, с использованием пары специфических щрифтов. Нужно чтобы они были в системе пользователя, для корректного отображения в InfoBeforeFile.
P.S.
LordVeider
Любопытно - зачем?
P.S.
LordVeider
Любопытно - зачем?
Очень странно, почему то я не могу использовать библеотеку innocallback.dll
Например тут
[more=КОД_1]#define TIME_FOR_VIEW 1
[Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program
OutputBaseFileName=Timer_with_InnoCallback.dll
OutputDir={#SourcePath}
[Files]
Source: InnoCallback.dll; Flags: dontcopy;
[Code]
type
TProc = procedure(HandleW, msg, idEvent, TimeSys: LongWord);
var
TimerID: LongWord;
currTime: Integer;
SplashImage: TBitmapImage;
function WrapTimerProc(callback:TProc; paramcount:integer):longword;
external 'wrapcallback@files:InnoCallback.dll stdcall';
function SetTimer(hWnd: LongWord; nIDEvent, uElapse: LongWord; lpTimerFunc: LongWord): LongWord;
external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd: LongWord; nIDEvent: LongWord): LongWord;
external 'KillTimer@user32.dll stdcall';
procedure OnTimer(HandleW, msg, idEvent, TimeSys: LongWord);
begin
currTime := currTime + 1;
case currTime of
{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{src}\Image_2.bmp')) end;
2*{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{src}\Image_3.bmp')); KillTimer(0, TimerID); end;
end;
end;
procedure InitializeWizard();
begin
currTime := 0;
WizardForm.ProgressGauge.Parent := WizardForm;
WizardForm.ProgressGauge.Top := WizardForm.CancelButton.Top;
WizardForm.ProgressGauge.Left := ScaleX(10);
WizardForm.ProgressGauge.Width := WizardForm.ProgressGauge.Width / 2;
WizardForm.ProgressGauge.Hide;
WizardForm.StatusLabel.Hide;
WizardForm.FilenameLabel.Hide;
SplashImage := TBitmapImage.Create(WizardForm);
SplashImage.Top := 0;
SplashImage.Left := 0;
SplashImage.Width := WizardForm.MainPanel.Width;
SplashImage.Height := WizardForm.Bevel.Top;
SplashImage.Parent := WizardForm.InnerPage;
SplashImage.Stretch := True;
SplashImage.Bitmap.LoadFromFile(ExpandConstant('{src}\Image_1.bmp'));
SplashImage.Hide;
end;
procedure CurPageChanged(CurPageID: Integer);
var
pfunc: LongWord;
begin
if (CurPageID = wpInstalling) then
begin
pfunc := WrapTimerProc(@OnTimer, 4);
TimerID := SetTimer(0, 0, 1000, pfunc);
WizardForm.InnerNotebook.Hide;
WizardForm.Bevel1.Hide;
WizardForm.MainPanel.Hide;
WizardForm.PageNameLabel.Hide;
WizardForm.PageDescriptionLabel.Hide;
WizardForm.ProgressGauge.Show;
SplashImage.Show;
end
else
begin
WizardForm.ProgressGauge.Hide;
SplashImage.Hide;
if (CurPageID > wpInstalling) and (CurPageID < wpFinished) then
begin
WizardForm.InnerNotebook.Show;
WizardForm.Bevel1.Show;
WizardForm.MainPanel.Show;
WizardForm.PageNameLabel.Show;
WizardForm.PageDescriptionLabel.Show;
end;
end;
end;
procedure DeinitializeSetup();
begin
KillTimer(0, TimerID);
end;[/more]
Или тут [more=КОД][Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
Compression=zip
[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl
[Files]
Source: c:\games\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs
Source: is7z.dll; DestDir: {tmp}; Flags: dontcopy
Source: InnoCallback.dll; DestDir: {tmp}; Flags: dontcopy
[Icons]
Name: {group}\Удалить; IconFilename: {app}\unins000.exe; Filename: {app}\unins000.exe
[Code]
type
TProc=procedure(HandleW, msg, idEvent, TimeSys: LongWord);
var
ProgressBar : TNewProgressBar;
TimerID: LongWord;
pfunc: LongWord;
Label1:tlabel;
function WrapTimerProc(callback:TProc; paramcount:integer):longword; external 'wrapcallback@files:innocallback.dll stdcall';
function SetTimer(hWnd: LongWord; nIDEvent, uElapse: LongWord; lpTimerFunc: LongWord): LongWord; external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd: LongWord; nIDEvent: LongWord): LongWord; external 'KillTimer@user32.dll stdcall';
procedure Extract7z (hWnd: THandle; fpath,extractPath:pchar); external 'Extract7z@files:is7z.dll stdcall';
function progress:integer; external 'progress@files:is7z.dll stdcall';
function progressmax:integer; external 'progressmax@files:is7z.dll stdcall';
procedure OnTimer(HandleW, msg, idEvent, TimeSys: LongWord);
begin
progressbar.Max:=progressmax;
progressbar.Position:=progress;
end;
procedure InitializeWizard();
begin
ProgressBar := TNewProgressBar.Create(WizardForm);
label1:=Tlabel.Create(WizardForm);
WizardForm.ProgressGauge.left:=135;
WizardForm.FilenameLabel.left:=135;
WizardForm.ProgressGauge.width:=280;
ProgressBar.Left := 10;
ProgressBar.Top := WizardForm.ProgressGauge.Top;
ProgressBar.Width := 120;
ProgressBar.Height := WizardForm.ProgressGauge.Height;
ProgressBar.Parent := WizardForm.InstallingPage;
ProgressBar.Position := 0;
label1.parent:=WizardForm.InstallingPage;
label1.top:=WizardForm.FilenameLabel.Top;
label1.caption:='Распаковка архива 7zip';
label1.left:=10;
label1.width:=130;
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
If CurStep=ssPostInstall then
begin
pfunc:=WrapTimerProc(@OnTimer, 4)
TimerID:=SetTimer(0, 0, 200, pfunc)
Extract7z (wizardform.handle, ExpandConstant('{src}') + '\anyfiles.7z', ExpandConstant('{app}'));
end
end;
procedure CurPageChanged(CurPageID: Integer);
begin
If CurPageID=wpFinished then KillTimer(0, TimerID);
end;[/more]
Выдает ошибку
Не знаю, что делать, ибо скрипт Corona, где тоже используется модуль работает...
Проблема решина самостоятельно)
Например тут
[more=КОД_1]#define TIME_FOR_VIEW 1
[Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program
OutputBaseFileName=Timer_with_InnoCallback.dll
OutputDir={#SourcePath}
[Files]
Source: InnoCallback.dll; Flags: dontcopy;
[Code]
type
TProc = procedure(HandleW, msg, idEvent, TimeSys: LongWord);
var
TimerID: LongWord;
currTime: Integer;
SplashImage: TBitmapImage;
function WrapTimerProc(callback:TProc; paramcount:integer):longword;
external 'wrapcallback@files:InnoCallback.dll stdcall';
function SetTimer(hWnd: LongWord; nIDEvent, uElapse: LongWord; lpTimerFunc: LongWord): LongWord;
external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd: LongWord; nIDEvent: LongWord): LongWord;
external 'KillTimer@user32.dll stdcall';
procedure OnTimer(HandleW, msg, idEvent, TimeSys: LongWord);
begin
currTime := currTime + 1;
case currTime of
{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{src}\Image_2.bmp')) end;
2*{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{src}\Image_3.bmp')); KillTimer(0, TimerID); end;
end;
end;
procedure InitializeWizard();
begin
currTime := 0;
WizardForm.ProgressGauge.Parent := WizardForm;
WizardForm.ProgressGauge.Top := WizardForm.CancelButton.Top;
WizardForm.ProgressGauge.Left := ScaleX(10);
WizardForm.ProgressGauge.Width := WizardForm.ProgressGauge.Width / 2;
WizardForm.ProgressGauge.Hide;
WizardForm.StatusLabel.Hide;
WizardForm.FilenameLabel.Hide;
SplashImage := TBitmapImage.Create(WizardForm);
SplashImage.Top := 0;
SplashImage.Left := 0;
SplashImage.Width := WizardForm.MainPanel.Width;
SplashImage.Height := WizardForm.Bevel.Top;
SplashImage.Parent := WizardForm.InnerPage;
SplashImage.Stretch := True;
SplashImage.Bitmap.LoadFromFile(ExpandConstant('{src}\Image_1.bmp'));
SplashImage.Hide;
end;
procedure CurPageChanged(CurPageID: Integer);
var
pfunc: LongWord;
begin
if (CurPageID = wpInstalling) then
begin
pfunc := WrapTimerProc(@OnTimer, 4);
TimerID := SetTimer(0, 0, 1000, pfunc);
WizardForm.InnerNotebook.Hide;
WizardForm.Bevel1.Hide;
WizardForm.MainPanel.Hide;
WizardForm.PageNameLabel.Hide;
WizardForm.PageDescriptionLabel.Hide;
WizardForm.ProgressGauge.Show;
SplashImage.Show;
end
else
begin
WizardForm.ProgressGauge.Hide;
SplashImage.Hide;
if (CurPageID > wpInstalling) and (CurPageID < wpFinished) then
begin
WizardForm.InnerNotebook.Show;
WizardForm.Bevel1.Show;
WizardForm.MainPanel.Show;
WizardForm.PageNameLabel.Show;
WizardForm.PageDescriptionLabel.Show;
end;
end;
end;
procedure DeinitializeSetup();
begin
KillTimer(0, TimerID);
end;[/more]
Или тут [more=КОД][Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
Compression=zip
[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl
[Files]
Source: c:\games\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs
Source: is7z.dll; DestDir: {tmp}; Flags: dontcopy
Source: InnoCallback.dll; DestDir: {tmp}; Flags: dontcopy
[Icons]
Name: {group}\Удалить; IconFilename: {app}\unins000.exe; Filename: {app}\unins000.exe
[Code]
type
TProc=procedure(HandleW, msg, idEvent, TimeSys: LongWord);
var
ProgressBar : TNewProgressBar;
TimerID: LongWord;
pfunc: LongWord;
Label1:tlabel;
function WrapTimerProc(callback:TProc; paramcount:integer):longword; external 'wrapcallback@files:innocallback.dll stdcall';
function SetTimer(hWnd: LongWord; nIDEvent, uElapse: LongWord; lpTimerFunc: LongWord): LongWord; external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd: LongWord; nIDEvent: LongWord): LongWord; external 'KillTimer@user32.dll stdcall';
procedure Extract7z (hWnd: THandle; fpath,extractPath:pchar); external 'Extract7z@files:is7z.dll stdcall';
function progress:integer; external 'progress@files:is7z.dll stdcall';
function progressmax:integer; external 'progressmax@files:is7z.dll stdcall';
procedure OnTimer(HandleW, msg, idEvent, TimeSys: LongWord);
begin
progressbar.Max:=progressmax;
progressbar.Position:=progress;
end;
procedure InitializeWizard();
begin
ProgressBar := TNewProgressBar.Create(WizardForm);
label1:=Tlabel.Create(WizardForm);
WizardForm.ProgressGauge.left:=135;
WizardForm.FilenameLabel.left:=135;
WizardForm.ProgressGauge.width:=280;
ProgressBar.Left := 10;
ProgressBar.Top := WizardForm.ProgressGauge.Top;
ProgressBar.Width := 120;
ProgressBar.Height := WizardForm.ProgressGauge.Height;
ProgressBar.Parent := WizardForm.InstallingPage;
ProgressBar.Position := 0;
label1.parent:=WizardForm.InstallingPage;
label1.top:=WizardForm.FilenameLabel.Top;
label1.caption:='Распаковка архива 7zip';
label1.left:=10;
label1.width:=130;
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
If CurStep=ssPostInstall then
begin
pfunc:=WrapTimerProc(@OnTimer, 4)
TimerID:=SetTimer(0, 0, 200, pfunc)
Extract7z (wizardform.handle, ExpandConstant('{src}') + '\anyfiles.7z', ExpandConstant('{app}'));
end
end;
procedure CurPageChanged(CurPageID: Integer);
begin
If CurPageID=wpFinished then KillTimer(0, TimerID);
end;[/more]
Выдает ошибку
Не знаю, что делать, ибо скрипт Corona, где тоже используется модуль работает...
Проблема решина самостоятельно)
Скажите - возможно ли решение проблемы, а именно - на инсталляторы сделанные в Inno Касперский говорит - запускается потенциально опасная программа. Программа не имеет цифровой подписи. Это как нить лечится??? Не приятно каждый раз лицезреть сообщения подобного рода...
Цитата:
Хочется чтобы ветка реестра в CurrentVersion/Uninstall создавалась без постфикса _is1.Задача решена варварским способом - редактированием Setup.e32.
Это возможно ?
GRom V
. а какое по?
. а какое по?
Ребята, пожалуйста поясните, каким образом можно реализовать распаковку определенных файлов указанных в секции [Files] по пути, извлеченному из ключа системного реестра? Тогда как остальные файлы будут распакованы в директорию выбранную пользователем.
Studio13 OutlaW
Цитата:
Именно на сам инсталлятор сделаный в инно. ПО любое
Цитата:
GRom V
. а какое по?
Именно на сам инсталлятор сделаный в инно. ПО любое
Как какое вредоносное ПО распознается? GRom_V
Artem_Butenko
Цитата:
Цитата:
каким образом можно реализовать распаковку определенных файлов указанных в секции [Files] по пути, извлеченному из ключа системного реестра?DestDir задавать через {reg:}
Всем привет.
У меня следующая проблема:
Есть софтина, запакованая в инсталятор. Устанавливается все нормально, все норм работает, но иногда её приходится устанавливать в нескольких копиях, вот здесь и начинаются проблемы. При установке создается ветка реестра
[more] HKLM\SOFTWARE\programname\1 [/more]
в которой прописан путь к программе. При еще одной установке нужно чтобы создавался ключ уже заканчивающийся на 2:
[more] HKLM\SOFTWARE\programname\2 [/more]
Потом на 3, 4, и тд.
Но и это не все. При установке создается конфиг кодом:
[more] procedure CurStepChanged(CurStep: TSetupStep);
var
S: String;
begin
If CurStep=ssPostInstall then
begin
S := ExpandConstant('{app}')
StringChangeEx(S, ':\', ':\|', True);
SaveStringToFile(ExpandConstant('{app}')+'\config.ini', 'INSTALLATION_NUMBER=1' + #13, true);
[/more]
в котором значение "INSTALLATION_NUMBER=?" должно соответствовать цифре в ветке реестра, тоесть здесь - HKLM\SOFTWARE\programname\?.
Добавлено:
Помогите реализовать данный код.
У меня следующая проблема:
Есть софтина, запакованая в инсталятор. Устанавливается все нормально, все норм работает, но иногда её приходится устанавливать в нескольких копиях, вот здесь и начинаются проблемы. При установке создается ветка реестра
[more] HKLM\SOFTWARE\programname\1 [/more]
в которой прописан путь к программе. При еще одной установке нужно чтобы создавался ключ уже заканчивающийся на 2:
[more] HKLM\SOFTWARE\programname\2 [/more]
Потом на 3, 4, и тд.
Но и это не все. При установке создается конфиг кодом:
[more] procedure CurStepChanged(CurStep: TSetupStep);
var
S: String;
begin
If CurStep=ssPostInstall then
begin
S := ExpandConstant('{app}')
StringChangeEx(S, ':\', ':\|', True);
SaveStringToFile(ExpandConstant('{app}')+'\config.ini', 'INSTALLATION_NUMBER=1' + #13, true);
[/more]
в котором значение "INSTALLATION_NUMBER=?" должно соответствовать цифре в ветке реестра, тоесть здесь - HKLM\SOFTWARE\programname\?.
Добавлено:
Помогите реализовать данный код.
Всем привет.
Подскажите пожалуйста.
Мне нужно после установки удалилась папка со всеми файлами.
Потому что я запаковываю оригинальную установку в свою.
Тоесть сначала пользователь просто указывает путь для распаковки.
потом запускается Run и там уже установка спрашивает куда ставить.
Так вот. Все папки и файлы что создались в шаге один остаются не тронутыми.
А мне нужно чтоб они были уделены после нажатия кнопки "Завершить"
вот мой скрипт.
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppName "My Program"
#define MyAppVerName "My Program 1.5"
#define MyAppPublisher "My Company, Inc."
#define MyAppURL "http://www.example.com/"
#define MyAppExeName "istool-5.2.1.exe"
[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{D61AFDB9-1B11-4525-BDEC-1897CF8E2DA5}
AppName={#MyAppName}
AppVerName={#MyAppVerName}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
OutputDir=C:\Setup
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
[Files]
Source: ..\Рабочий стол\ISTool\istool-5.2.1.exe; DestDir: {app}; Flags: ignoreversion deleteafterinstall recursesubdirs createallsubdirs; Tasks: ; Languages:
Source: ..\Рабочий стол\ISTool\*; DestDir: {app}\; Flags: ignoreversion recursesubdirs createallsubdirs deleteafterinstall
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Icons]
Name: {group}\{#MyAppName}; Filename: {app}\{#MyAppExeName}
Name: {commondesktop}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Tasks: desktopicon
[Run]
Filename: {app}\istool-5.2.1.exe; WorkingDir: {app}; Flags: waituntilidle
[Code]
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
begin
DelTree(ExpandConstant('{app}\'), True, True, True);
end;
end;
Добавлено:
Как сделать чтоб при установке показывалось два Process Bar?
как в играх с free-torrents.org
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppName "My Program"
#define MyAppVerName "My Program 1.5"
#define MyAppPublisher "My Company, Inc."
#define MyAppURL "http://www.example.com/"
#define MyAppExeName "istool-5.2.1.exe"
[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{D61AFDB9-1B11-4525-BDEC-1897CF8E2DA5}
AppName={#MyAppName}
AppVerName={#MyAppVerName}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
OutputDir=C:\Setup
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
[Files]
Source: ..\Рабочий стол\ISTool\istool-5.2.1.exe; DestDir: {app}; Flags: ignoreversion deleteafterinstall recursesubdirs createallsubdirs; Tasks: ; Languages:
Source: ..\Рабочий стол\ISTool\*; DestDir: {app}\; Flags: ignoreversion recursesubdirs createallsubdirs deleteafterinstall
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Icons]
Name: {group}\{#MyAppName}; Filename: {app}\{#MyAppExeName}
Name: {commondesktop}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Tasks: desktopicon
[Run]
Filename: {app}\istool-5.2.1.exe; WorkingDir: {app}; Flags: waituntilidle
[Code]
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
begin
DelTree(ExpandConstant('{app}\'), True, True, True);
end;
end;
Подскажите пожалуйста.
Мне нужно после установки удалилась папка со всеми файлами.
Потому что я запаковываю оригинальную установку в свою.
Тоесть сначала пользователь просто указывает путь для распаковки.
потом запускается Run и там уже установка спрашивает куда ставить.
Так вот. Все папки и файлы что создались в шаге один остаются не тронутыми.
А мне нужно чтоб они были уделены после нажатия кнопки "Завершить"
вот мой скрипт.
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppName "My Program"
#define MyAppVerName "My Program 1.5"
#define MyAppPublisher "My Company, Inc."
#define MyAppURL "http://www.example.com/"
#define MyAppExeName "istool-5.2.1.exe"
[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{D61AFDB9-1B11-4525-BDEC-1897CF8E2DA5}
AppName={#MyAppName}
AppVerName={#MyAppVerName}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
OutputDir=C:\Setup
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
[Files]
Source: ..\Рабочий стол\ISTool\istool-5.2.1.exe; DestDir: {app}; Flags: ignoreversion deleteafterinstall recursesubdirs createallsubdirs; Tasks: ; Languages:
Source: ..\Рабочий стол\ISTool\*; DestDir: {app}\; Flags: ignoreversion recursesubdirs createallsubdirs deleteafterinstall
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Icons]
Name: {group}\{#MyAppName}; Filename: {app}\{#MyAppExeName}
Name: {commondesktop}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Tasks: desktopicon
[Run]
Filename: {app}\istool-5.2.1.exe; WorkingDir: {app}; Flags: waituntilidle
[Code]
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
begin
DelTree(ExpandConstant('{app}\'), True, True, True);
end;
end;
Добавлено:
Как сделать чтоб при установке показывалось два Process Bar?
как в играх с free-torrents.org
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppName "My Program"
#define MyAppVerName "My Program 1.5"
#define MyAppPublisher "My Company, Inc."
#define MyAppURL "http://www.example.com/"
#define MyAppExeName "istool-5.2.1.exe"
[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{D61AFDB9-1B11-4525-BDEC-1897CF8E2DA5}
AppName={#MyAppName}
AppVerName={#MyAppVerName}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
OutputDir=C:\Setup
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
[Files]
Source: ..\Рабочий стол\ISTool\istool-5.2.1.exe; DestDir: {app}; Flags: ignoreversion deleteafterinstall recursesubdirs createallsubdirs; Tasks: ; Languages:
Source: ..\Рабочий стол\ISTool\*; DestDir: {app}\; Flags: ignoreversion recursesubdirs createallsubdirs deleteafterinstall
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Icons]
Name: {group}\{#MyAppName}; Filename: {app}\{#MyAppExeName}
Name: {commondesktop}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Tasks: desktopicon
[Run]
Filename: {app}\istool-5.2.1.exe; WorkingDir: {app}; Flags: waituntilidle
[Code]
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
begin
DelTree(ExpandConstant('{app}\'), True, True, True);
end;
end;
Studio13 OutlaW
Цитата:
Просто пишет - запускается потенциально опасная программа. Программа не имеет цифровой подписи. Короче скоко пробовал различные инсталляторы сделанные в Инно - такая фигня...
Цитата:
Как какое вредоносное ПО распознается? GRom_V
Просто пишет - запускается потенциально опасная программа. Программа не имеет цифровой подписи. Короче скоко пробовал различные инсталляторы сделанные в Инно - такая фигня...
milwaukeeman
Может просто также удалить через батники все!
Смотрите в шапке темы Коллекция скриптов там есть пример как это сделать.Все очень понятно!
Может просто также удалить через батники все!
Смотрите в шапке темы Коллекция скриптов там есть пример как это сделать.Все очень понятно!
Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
Предыдущая тема: в очередной раз босудим антивиры?
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.