Показать полную графическую версию : [архив] Inno Setup .:[все вопросы]:.
800:600 много? »
Нет, нормально.
забыл сказать что если упаковать не целую папку т.е вес получиться меньше то запуститься без проблем! »
Видимо из-за того, что у вас размер стоит DiskSliceSize=2034000000, а максимально поддерживаемый - 2100000000, т.е. у вас практически на пределе. Попробуйте уменьшить размер, разбив на два файла .bin.
Serega,
дело в том что раньше у меня 7340000(ну сколько 0 не помню но разбит был по 699мб), думал что в этом проблема. сделал потом такой!!!ладно, остальное сейчас опробую и отпишусь! спасибо!!!
R.i.m.s.k.y.
02-07-2009, 09:33
Я думаю 00.reg у вас должен востанавливаться, а 01.reg нет.
Замените запуск второго рег-файла (01.reg) на команду для первого (00.reg), т.е. замените: »
Индейская хижина. Не восстанавливает.
После деинсталляции ключи удаляются (в секции [Registry] стоит удаление этих ключей дабы если их не было до установки - они не забэкапятся и удалятся (это работает, создаются файлы только на существующие ключи), а если были - удалятся и восстановятся в состоянии до установки)
Как вообще работает эта процедура CurUninstallStepChanged(CurUninstallStep: TUninstallStep)?
Её надо откуда-то вызывать как процедуру BackupReg или она автоматом отрабатывает в процессе деинсталляции?
При деинсталляции она работает до секции [Registry] или после? Должна после секции чтобы восстановились удаленные ключи.
Как вообще работает эта процедура CurUninstallStepChanged(CurUninstallStep: TUninstallStep)? »
CurUninstallStepChanged - стандартная процедура при деинсталляции, она отрабатывает автоматом при деинсталляции программы. Возможные значения:
usAppMutexCheck – не знаю...;
usUninstall - отрабатывает в момент движения прогрессбара при деинсталляции;
usPostUninstall - отрабатывает после страницы с прогрессбаром, но до появления сообщения о том, что программа удалена;
usDone - отрабатывает после нажатия на кнопку ОК в сообщении о том, что программа удалена.
Должна после секции чтобы восстановились удаленные ключи »
для этого нужно использовать значения usPostUninstall или usDone.
R.i.m.s.k.y.
02-07-2009, 17:31
для этого нужно использовать значения usPostUninstall или usDon »
Эти ключи тоже ничего не решают, пробовал.
Эти ключи тоже ничего не решают, пробовал. »
Что вы пробовали и что они не решают?
Вы спашивали:
Как вообще работает эта процедура CurUninstallStepChanged(CurUninstallStep: TUninstallStep)? »
Я вам написал как она работает и её возможные значения...
МИШАНЧИК
02-07-2009, 21:41
Serega, подскажите пожалуйста, можно ли как-то сделать чтоб инсталятор одну и ту же папку с подпапками и файлами при установке скопировал в 2 места?
Допустим папка1, папка2, папка3 установил в Program Files\Program\Program1 и в Program Files\Program\Program2.
serg aka lain
03-07-2009, 01:58
подскажите пожалуйста, можно ли как-то сделать чтоб инсталятор одну и ту же папку с подпапками и файлами при установке скопировал в 2 места? »
А что мешает заюзать xcopy?
Или ещё проще:
[Files]
Source: "файлы\*"; DestDir: "{app}\Program1"; Flags: ignoreversion recursesubdirs createallsubdirs;
Source: "файлы\*"; DestDir: "{app}\Program2"; Flags: ignoreversion recursesubdirs createallsubdirs;
R.i.m.s.k.y.
03-07-2009, 08:36
Я вам написал как она работает и её возможные значения »
Я подставлял все возможные значения, кроме usAppMutexCheck потому как мне ее название ни о чем не говорит и в хелпе про нее ни слова, про остальные хоть из названия понятно. Ни при каких значениях (usUninstall, usPostUninstall, usDone) выкат из бэкапа ключей при деинсталляции не делается.
Такое ощущение будто процедурка CurUninstallStepChanged не отрабатывает. Может ей вывод на экран поставить (да хоть 'Hello, World') чтоп она себя обозначила в процессе.
Оффтоп - а и правда, как вывести на экран сообщение из этой процедуры? Поставить в начало и конец - будет видно что-где-когда делается...
Вопрос снят, нашел как делать сообщения, процедура CurUninstallStepChanged, судя по выводу на экран, запускается.
МИШАНЧИК
03-07-2009, 11:39
serg aka lain, большое спасибо. Подскажите пожалйста как правильно указать:
А что мешает заюзать xcopy? »
И ещё вопрос. Можно как-то задать нахождение файлов деинсталятора и их имена, допустим чтоб не в основной папке, а в подпапке и не unins000.dat, unins000.exe, а uninstall.dat и uninstall.exe?
R.i.m.s.k.y.
03-07-2009, 14:04
Вопрос решен. Всем спасибо!
Решение (http://forum.ru-board.com/topic.cgi?forum=5&topic=30413&start=1680#3)
Господа в чем проблема? стоит в инсталляторе 9bmp изображений он использует их как слайд шоу, но во время установки он показыват лишь 2 из них это 2 и 3 слайды помогите прошу вас, и как всегда надеюсь на вас!
[Code]
type
TProc = procedure(HandleW, msg, idEvent, TimeSys: LongWord);
var
WelcomeLabel1,WelcomeLabel2,FinishedHeadingLabel,RunLabel,
FinishedLabel,PageNameLabel,PageDescriptionLabel:TLabel;
RunMyProg: TCheckBox;
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
1*{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\2.bmp')) end;
2*{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\3.bmp')) end;
3*{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\4.bmp')) end;
4*{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\5.bmp')) end;
5*{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\6.bmp')) end;
6*{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\7.bmp')) end;
7*{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\8.bmp')) end;
8*{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\9.bmp')) end;
end;
if CurrTime = 7*{#TIME_FOR_VIEW} then CurrTime := -1;
end;
procedure RLabelOnClick(Sender: TObject);
begin
if RunMyProg.Checked=false then
begin
RunMyProg.Checked := true;
end else
RunMyProg.Checked := false;
end;
// функция для запуска программы если отмечен чебокс
procedure CurStepChanged(CurStep: TSetupStep);
var
ErrorCode: Integer;
begin
if CurStep = ssDone then
begin
end;
end;
procedure InitializeWizard();
begin
ExtractTemporaryFile('1.bmp')
ExtractTemporaryFile('2.bmp')
ExtractTemporaryFile('3.bmp')
ExtractTemporaryFile('4.bmp')
ExtractTemporaryFile('5.bmp')
ExtractTemporaryFile('6.bmp')
ExtractTemporaryFile('7.bmp')
ExtractTemporaryFile('8.bmp')
ExtractTemporaryFile('9.bmp')
currTime := 5;
WizardForm.WelcomeLabel1.Hide;
WizardForm.WelcomeLabel2.Hide;
WizardForm.PageNameLabel.Hide;
WizardForm.PageDescriptionLabel.Hide;
WizardForm.FinishedHeadingLabel.Hide;
WizardForm.FinishedLabel.Hide;
// низнаю почему, но Hide не действует. Поэтому просто уменьшил размер
WizardForm.RunList.Height := 0;
WizardForm.RunList.Width := 0;
WizardForm.FilenameLabel.Hide;
WizardForm.StatusLabel.Parent := WizardForm;
WizardForm.StatusLabel.Top := ScaleY(315);
WizardForm.StatusLabel.Left := ScaleX(10);
WizardForm.StatusLabel.Width := ScaleX(200);
WizardForm.StatusLabel.Hide;
WizardForm.ProgressGauge.Parent := WizardForm;
WizardForm.ProgressGauge.Top := ScaleY(330);
WizardForm.ProgressGauge.Left := ScaleX(10);
WizardForm.ProgressGauge.Width := ScaleX(380);
WizardForm.ProgressGauge.Height := ScaleX(18);
WizardForm.ProgressGauge.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('{tmp}\1.bmp'));
SplashImage.Hide;
WizardForm.WizardBitmapImage.Align:=true;
WizardForm.WizardBitmapImage2.Align:=true;
WizardForm.WizardSmallBitmapImage.Align:=true;
WelcomeLabel1:=TLabel.Create(WizardForm);
WelcomeLabel1.Left:=ScaleX(255);
WelcomeLabel1.Top := ScaleY(15);
WelcomeLabel1.Width := ScaleX(250);
WelcomeLabel1.Height := ScaleY(95);
WelcomeLabel1.AutoSize := False;
WelcomeLabel1.WordWrap := true;
WelcomeLabel1.Font.Color := clgreen;
// здесь можно поиграть шрифтом
WelcomeLabel1.Font.Style := [fsBold];
WelcomeLabel1.Font.Name:='MS Sans Serif';
WelcomeLabel1.Font.Size := 13;
WelcomeLabel1.Transparent := True;
WelcomeLabel1.Parent := WizardForm.WelcomePage;
WelcomeLabel2:=TLabel.Create(WizardForm);
WelcomeLabel2.Left := ScaleX(150);
WelcomeLabel2.Top := ScaleY(90);
WelcomeLabel2.Width := ScaleX(320);
WelcomeLabel2.Height := ScaleY(200);
WelcomeLabel2.AutoSize := False;
WelcomeLabel2.WordWrap := True;
WelcomeLabel2.Font.Color := clBlack;
WelcomeLabel2.Font.Size := 8;
WelcomeLabel2.Transparent := True;
//WelcomeLabel2.Parent := WizardForm.WelcomePage;
PageNameLabel := TLabel.Create(WizardForm);
PageNameLabel.Left := ScaleX(25);
PageNameLabel.Top := ScaleY(10);
PageNameLabel.Width := ScaleX(300);
PageNameLabel.Height := ScaleY(14);
PageNameLabel.AutoSize := False;
PageNameLabel.WordWrap := True;
PageNameLabel.Font.Color := clBlack;
PageNameLabel.Font.Style := [fsBold];
PageNameLabel.Transparent := True;
//PageNameLabel.Parent := WizardForm.MainPanel;
PageDescriptionLabel := TLabel.Create(WizardForm);
PageDescriptionLabel.Left := ScaleX(40);
PageDescriptionLabel.Top := ScaleY(25);
PageDescriptionLabel.Width := ScaleX(475);
PageDescriptionLabel.Height := ScaleY(30);
PageDescriptionLabel.AutoSize := False;
PageDescriptionLabel.WordWrap := True;
PageDescriptionLabel.Font.Color := clBlack;
PageDescriptionLabel.Transparent := True;
//PageDescriptionLabel.Parent := WizardForm.MainPanel;
FinishedHeadingLabel:=TLabel.Create(WizardForm);
FinishedHeadingLabel.Left:=ScaleX(275);
FinishedHeadingLabel.Top := ScaleY(15);
FinishedHeadingLabel.Width := ScaleX(250);
FinishedHeadingLabel.Height := ScaleY(95);;
FinishedHeadingLabel.AutoSize := False;
FinishedHeadingLabel.WordWrap := True;
FinishedHeadingLabel.Font.Color := clgreen;
// здесь тоже можно поиграть шрифтом
FinishedHeadingLabel.Font.Style := [fsBold];
FinishedHeadingLabel.Font.Name:='MS Sans Serif';
FinishedHeadingLabel.Font.Size := 13;
FinishedHeadingLabel.Transparent := True;
FinishedHeadingLabel.Parent := WizardForm.FinishedPage;
FinishedLabel:=TLabel.Create(WizardForm);
FinishedLabel.Left := ScaleX(225);
FinishedLabel.Top := ScaleY(15);
FinishedLabel.Width := ScaleX(250);
FinishedLabel.Height := ScaleY(95);
FinishedLabel.AutoSize := False;
FinishedLabel.WordWrap := True;
FinishedLabel.Font.Color := clBlack;
FinishedLabel.Font.Size := 13;
FinishedLabel.Transparent := True;
//FinishedLabel.Parent := WizardForm.FinishedPage;
end;
procedure CurPageChanged(CurPageID: Integer);
var
pfunc: LongWord;
begin
WelcomeLabel1.Caption := WizardForm.WelcomeLabel1.Caption;
WelcomeLabel2.Caption := WizardForm.WelcomeLabel2.Caption;
PageNameLabel.Caption := WizardForm.PageNameLabel.Caption;
PageDescriptionLabel.Caption := WizardForm.PageDescriptionLabel.Caption;
FinishedHeadingLabel.Caption := WizardForm.FinishedHeadingLabel.Caption;
FinishedLabel.Caption := WizardForm.FinishedLabel.Caption;
// здесь придётся вручную вводить требуемый текст
//RunLabel.Caption := 'Запустить программу';
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;
WizardForm.StatusLabel.Show;
SplashImage.Show;
end
else
begin
WizardForm.ProgressGauge.Hide;
WizardForm.StatusLabel.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;
и еще, что надо исправить, что-бы не так быстро менялся слайд?
Raf-9600
03-07-2009, 18:57
1. Ктонить может сделать скрипт, чтоб в папке, которую выбрал юзер, для установки игры, проверялось наличие файлов "Install.exe" и "StarCraft.mpq", если хоть один файл найден, то никаких сообщений об ошибке выводиться не должно, если же не найдено ни одного, то выводилось сообщение "Install.exe не найден в папке назначения, скопируйте его с лицензионного диска StarCraft, в папку, для начала инсталляции". Но этот скрипт должен работать только если выбран компонент "Game\Lokal".
2. Возможно ли сделать чтоб в этом слайд-шоу, слайды менялись не по порядку, а рандомно?
#define TIME_FOR_VIEW 5
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=zip
SolidCompression=yes
[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[Files]
Source: InnoCallback.dll; Flags: dontcopy noencryption nocompression solidbreak;
Source: *.bmp; Flags: dontcopy noencryption nocompression solidbreak;
[-code]
type
TProc = procedure(HandleW, msg, idEvent, TimeSys: LongWord);
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';
var
TimerID: LongWord;
currTime: Integer;
SplashImage: TBitmapImage;
StatusMessages: TNewStaticText;
procedure OnTimer(HandleW, msg, idEvent, TimeSys: LongWord);
begin
currTime := currTime + 1;
case currTime of
{#TIME_FOR_VIEW}: begin
SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_2.bmp'))
end;
2*{#TIME_FOR_VIEW}: begin
SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_3.bmp'))
end;
3*{#TIME_FOR_VIEW}: begin
SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_4.bmp'))
end;
4*{#TIME_FOR_VIEW}: begin
SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_5.bmp'))
end;
5*{#TIME_FOR_VIEW}: begin
SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_6.bmp'))
end;
6*{#TIME_FOR_VIEW}: begin
SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_7.bmp'))
end;
7*{#TIME_FOR_VIEW}: begin
SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_8.bmp'))
end;
8*{#TIME_FOR_VIEW}: begin
SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_9.bmp'))
end;
9*{#TIME_FOR_VIEW}: begin
SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_10.bmp'))
end;
end;
if CurrTime = 9*{#TIME_FOR_VIEW} then CurrTime := -1;
end;
procedure InitializeWizard;
begin
ExtractTemporaryFile('Image_1.bmp');
currTime := 0;
WizardForm.ProgressGauge.Parent := WizardForm;
WizardForm.ProgressGauge.Top := WizardForm.CancelButton.Top + ScaleY(12);
WizardForm.ProgressGauge.Left := ScaleX(10);
WizardForm.ProgressGauge.Width := WizardForm.MainPanel.Width - ScaleX(20);
WizardForm.ProgressGauge.Height := 16;
WizardForm.ProgressGauge.Hide;
WizardForm.StatusLabel.Parent := WizardForm;
WizardForm.StatusLabel.Top := WizardForm.ProgressGauge.Top - ScaleY(18);
WizardForm.StatusLabel.Left := ScaleX(10);
WizardForm.StatusLabel.Width := ScaleX(397);
WizardForm.StatusLabel.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('{tmp}\Image_1.bmp'));
SplashImage.Hide;
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssInstall then
begin
WizardForm.StatusLabel.Caption := 'Распаковка слайдов ...';
ExtractTemporaryFile('Image_2.bmp');
ExtractTemporaryFile('Image_3.bmp');
ExtractTemporaryFile('Image_4.bmp');
ExtractTemporaryFile('Image_5.bmp');
ExtractTemporaryFile('Image_6.bmp');
ExtractTemporaryFile('Image_7.bmp');
ExtractTemporaryFile('Image_8.bmp');
ExtractTemporaryFile('Image_9.bmp');
ExtractTemporaryFile('Image_10.bmp');
end;
end;
procedure CurPageChanged(CurPageID: Integer);
var
pfunc: LongWord;
begin
if (CurPageID = wpInstalling) then
begin
pfunc := WrapTimerProc(@OnTimer, 5);
TimerID := SetTimer(0, 0, 1000, pfunc);
WizardForm.PageNameLabel.Visible := False;
WizardForm.PageDescriptionLabel.Visible := False;
WizardForm.InnerNotebook.Hide;
WizardForm.Bevel1.Hide;
WizardForm.MainPanel.Hide;
WizardForm.PageNameLabel.Hide;
WizardForm.PageDescriptionLabel.Hide;
WizardForm.ProgressGauge.Show;
WizardForm.StatusLabel.Show;
SplashImage.Show;
WizardForm.CancelButton.Enabled := True;
WizardForm.CancelButton.Top := WizardForm.Bevel.Top + ScaleY(100);
end else
begin
WizardForm.ProgressGauge.Hide;
SplashImage.Hide;
WizardForm.FileNameLabel.Hide;
WizardForm.StatusLabel.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;
If CurPageID = wpFinished then
end;
end;
procedure DeInitializeSetup();
begin
KillTimer(0, TimerID);
serg aka lain
03-07-2009, 20:56
МИШАНЧИК
Можно как-то задать нахождение файлов деинсталятора и их имена, допустим чтоб не в основной папке, а в подпапке »
UninstallFilesDir={app}\uninstall
и не unins000.dat, unins000.exe, а uninstall.dat и uninstall.exe? »
Думаю, без ковыряния исходников инно - нет.
Raf-9600
1. Ктонить может сделать скрипт, чтоб в папке, которую выбрал юзер, для установки игры, проверялось наличие файлов "Install.exe" и "StarCraft.mpq", если хоть один файл найден, то никаких сообщений об ошибке выводиться не должно, если же не найдено ни одного, то выводилось сообщение "Install.exe не найден в папке назначения, скопируйте его с лицензионного диска StarCraft, в папку, для начала инсталляции". Но этот скрипт должен работать только если выбран компонент "Game\Lokal". »
Поскольку страница с выбором компонентов идёт после страницы выбора папки установки, данную проверку, думаю целесообразнее делать на странице "Всё готово к установке" (wpReady),
проверяй …
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;
if CurPageID = wpReady then
begin
if IsComponentSelected('Game\Lokal') then
if (FileSearch('Install.exe', ExpandConstant('{app}')) = '') then
if (FileSearch('StarCraft.mpq', ExpandConstant('{app}')) = '') then
begin
SuppressibleMsgBox('"Install.exe не найден в папке назначения, скопируйте его с лицензионного диска StarCraft, в папку, для начала инсталляции".', mbCriticalError, MB_OK, MB_OK);
Result := False;
end else
Result := True;
end;
end;
BlackSelf
03-07-2009, 21:19
и не unins000.dat, unins000.exe, а uninstall.dat и uninstall.exe? »
[_Code]
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
RenameFile(ExpandConstant('{app}\unins000.exe'), ExpandConstant('{app}\uninstall.exe'))
RenameFile(ExpandConstant('{app}\unins000.dat'), ExpandConstant('{app}\uninstall.dat'))
RegWriteStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\Моя Прога_is1','UninstallString', ExpandConstant('{app}\uninstall.exe'))
RegWriteStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\Моя Прога_is1','QuietUninstallString', ExpandConstant('{app}\uninstall.exe /SILENT'))
end;
прошу прощение за беспокойства, разобрался сам, надо было всего-то в #define TIME_FOR_VIEW 1 изменить на цифру больше!!!
serg aka lain
03-07-2009, 21:51
BlackSelf
И чего толку от переименования?
При повторной установке реестр перезапишется как нужно, а в папке будет создан ещё один unins000.exe и unins000.dat.
Ну, если только целью этого действия является лишь бы получить эти uninstall любой ценой, то пойдёт.
ИМХО Думаю, спрашивали как заставить инсталлятор создавать деинсталлятор uninstall.exe изначально.
как заставить инсталлятор создавать деинсталлятор uninstall.exe изначально. »
От перемены мест слагаемых, сумма не меняется, т.е. в итоге будет получен требуемый результат... ;)
serg aka lain
03-07-2009, 22:11
От перемены мест слагаемых, сумма не меняется, т.е. в итоге будет получен требуемый результат... »
согласен
Raf-9600
03-07-2009, 23:21
Поскольку страница с выбором компонентов идёт после страницы выбора папки установки, данную проверку, думаю целесообразнее делать на странице "Всё готово к установке" (wpReady),
проверяй … »
Сенкс! Полет отличный. http://pirat.ca/forum/images/smiles/good.gif
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC