Скажите, а почему Inno Setup Unpacker распаковывает, но полностью что ли так сказать. Т.е. взял диск от 1С, там инсталятор "блатной" весь с полной картинкой, красивыми кнопками и т.д. Начал упаковывать - он получился без картинок и без остального! Это так и должно быть? Или я чё не так делаю, а.
» Inno Setup (создание инсталяционных пакетов)
Inno Setup vs Windows 6/7
В висте и семёрке для определения размера установленного приложения в апллете "программы" панели управления используется параметр реестра EstimatedSize (DWORD), располагающийся там же где (в CurrentVersion/Uninstall/MyProgramName).
Возникает вопрос: как его заполнить при установке ?
В висте и семёрке для определения размера установленного приложения в апллете "программы" панели управления используется параметр реестра EstimatedSize (DWORD), располагающийся там же где (в CurrentVersion/Uninstall/MyProgramName).
Возникает вопрос: как его заполнить при установке ?
Kondrbr
Inno Setup Unpacker не выдирает секцию [code]
Inno Setup Unpacker не выдирает секцию [code]
skeptik_vdm, Sig666 правильно говорит, если ты не знал что такое исходники, то тебе вообще не стоило связываться с этим делом.
Цитата:
Цитата:
Ну объясните что с этим делать???выучить паскаль и найти где-нибудь Delphi, а дальше там все просто
LordVeider
Цитата:
Вроде винда сама этим занимается, но если очень хочется то кто мешает записать при установке.
RegWriteDWordValue(HKEY_LOCAL_MACHINE, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\MyProgramName_is1',
'EstimatedSize', 1);
Цитата:
В висте и семёрке для определения размера установленного приложения в апллете "программы" панели управления используется параметр реестра EstimatedSize (DWORD), располагающийся там же где (в CurrentVersion/Uninstall/MyProgramName).
Возникает вопрос: как его заполнить при установке ?
Вроде винда сама этим занимается, но если очень хочется то кто мешает записать при установке.
RegWriteDWordValue(HKEY_LOCAL_MACHINE, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\MyProgramName_is1',
'EstimatedSize', 1);
Можно и так:
[Registry]
Root: HKLM; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MyProg_is1; ValueType: dword; ValueName: EstimatedSize; ValueData: 16384
В идеале надо бы сделать проверку на привилегии, чтоб знать куда писать в hklm или hkcu
[Registry]
Root: HKLM; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MyProg_is1; ValueType: dword; ValueName: EstimatedSize; ValueData: 16384
В идеале надо бы сделать проверку на привилегии, чтоб знать куда писать в hklm или hkcu
Парни, возник вопрос, страниц 20 я одолел темы, но вижу что после рабочей недели глаза побаливать начинают.
Делаю для локальной сети обновлённый клиент Стронг и мне нужно, чтобы все кто его устанавливал Стронг прописывался им в Автозагрузку.
Это секция помойму:
[Registry]
Root: HKCU; Subkey: "Software\Microsoft\Windows\CurrentVersion\Run"; ValueName: "StrongDC client";
Но видимо где то ошибка или я вообще не так делаю?
Делаю для локальной сети обновлённый клиент Стронг и мне нужно, чтобы все кто его устанавливал Стронг прописывался им в Автозагрузку.
Это секция помойму:
[Registry]
Root: HKCU; Subkey: "Software\Microsoft\Windows\CurrentVersion\Run"; ValueName: "StrongDC client";
Но видимо где то ошибка или я вообще не так делаю?
Mouzes
Добавь еще ValueType: string
Добавь еще ValueType: string
Если добавить, то вообще не компилится
Mouzes
Вот так попробуй
Root: HKCU; Subkey: Software\Microsoft\Windows\CurrentVersion\Run; ValueType: string; ValueName: "StrongDC client"
Вот так попробуй
Root: HKCU; Subkey: Software\Microsoft\Windows\CurrentVersion\Run; ValueType: string; ValueName: "StrongDC client"
Хелп
как сделать запрос сд-кея при установке
чтобы он в реестр прописывался?????
чтобы игры, которые например просят ключ для сетевой игры, сразу его получали при установке
Добавлено:
Ну или так
сетап сам генерит кей из кейгена, запуская его на 1 секунду и сразу же прописывает этот кей в реестр
как сделать запрос сд-кея при установке
чтобы он в реестр прописывался?????
чтобы игры, которые например просят ключ для сетевой игры, сразу его получали при установке
Добавлено:
Ну или так
сетап сам генерит кей из кейгена, запуская его на 1 секунду и сразу же прописывает этот кей в реестр
Mouzes
Код: [Registry]
Root: HKCU; Subkey: "Software\Microsoft\Windows\CurrentVersion\Run"; ValueType: string; ValueName: "StrongDC client"; ValueData: "{app}\MyProg.exe"; Flags: uninsdeletekey
Код: [Registry]
Root: HKCU; Subkey: "Software\Microsoft\Windows\CurrentVersion\Run"; ValueType: string; ValueName: "StrongDC client"; ValueData: "{app}\MyProg.exe"; Flags: uninsdeletekey
Большое спасипки
kombat 77, Sig666
Ненене. Функциями IS я пользоваться умею. Мне нужно каким-то макаром вычислять при установке значение, которое нужно туда записывать.
Ненене. Функциями IS я пользоваться умею. Мне нужно каким-то макаром вычислять при установке значение, которое нужно туда записывать.
LordVeider
Попробуй это
[more=..]
function GetSpace(): integer;
var Space, LabelSpace: string;
StartLen, EndLen, SpaceLen: integer;
begin
Space:= SetupMessage(msgDiskSpaceMBLabel);
LabelSpace:= WizardForm.DiskSpaceLabel.Caption;
StartLen:= Pos('[mb]', Space);
SpaceLen:= Length(LabelSpace) - Length(Space) + 4;
Space:= Copy(LabelSpace, StartLen, SpaceLen);
StringChange(Space, ',', '.');
Result:= round(StrToFloat(Space))*1024;
end;
procedure WriteSizeInfo;
begin
if not RegWriteDWordValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting('AppName')}_is1', 'EstimatedSize', GetSpace) then
RegWriteDWordValue(HKCU, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting('AppName')}_is1', 'EstimatedSize', GetSpace);
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
WriteSizeInfo;
end;
[/more]
%)
Попробуй это
[more=..]
function GetSpace(): integer;
var Space, LabelSpace: string;
StartLen, EndLen, SpaceLen: integer;
begin
Space:= SetupMessage(msgDiskSpaceMBLabel);
LabelSpace:= WizardForm.DiskSpaceLabel.Caption;
StartLen:= Pos('[mb]', Space);
SpaceLen:= Length(LabelSpace) - Length(Space) + 4;
Space:= Copy(LabelSpace, StartLen, SpaceLen);
StringChange(Space, ',', '.');
Result:= round(StrToFloat(Space))*1024;
end;
procedure WriteSizeInfo;
begin
if not RegWriteDWordValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting('AppName')}_is1', 'EstimatedSize', GetSpace) then
RegWriteDWordValue(HKCU, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting('AppName')}_is1', 'EstimatedSize', GetSpace);
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
WriteSizeInfo;
end;
[/more]
%)
Может кто может доработать [more=код][Setup]
AppName=My Program
AppVerName=My Program 1.0
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
[LangOptions]
DialogFontName=Tahoma
[Messages]
DiskSpaceMBLabel=Disk space required: [mb] MB
[Code]
const
NeedSize = 2100; //Размер устанавливаемого компонента
var
FreeSpaceLabel: TLabel;
FreeMB, TotalMB: cardinal;
procedure GetFreeSpaceCaption(Sender: TObject);
var
Path: string;
begin
Path := ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, true, FreeMB, TotalMB);
if FreeMB > 1024 then
FreeSpaceLabel.Caption := 'Disk space available:' + ' ' + FloatToStr(round(FreeMB/1024*100)/100) + ' ' + 'GB'
else
FreeSpaceLabel.Caption := 'Disk space available:' + ' ' + IntToStr(FreeMB) + ' ' + 'MB'
begin
if FreeMB < NeedSize then
begin
WizardForm.NextButton.Enabled := false;
end else
WizardForm.NextButton.Enabled := true;
end;
end;
procedure InitializeWizard();
begin
WizardForm.DiskSpaceLabel.Top := WizardForm.DiskSpaceLabel.Top - ScaleY(16);
FreeSpaceLabel := TLabel.Create(WizardForm);
FreeSpaceLabel.Left := WizardForm.DiskSpaceLabel.Left;
FreeSpaceLabel.Top := WizardForm.DiskSpaceLabel.Top + ScaleY(16);
FreeSpaceLabel.Parent := WizardForm.SelectDirPage;
WizardForm.DirEdit.OnChange := @GetFreeSpaceCaption;
WizardForm.DirEdit.Text := WizardForm.DirEdit.Text + #0;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpSelectDir then
if FreeMB < NeedSize then
begin
WizardForm.NextButton.Enabled := False
end;
end;[/more] для отображения свободного места с блокировкой кнопки ‘Далее, если места на диске не хватает.
Размер устанавливаемой программы, который сравнивается с размером свободного места пишется в коде в const NeedSize = 2100;, вот как бы сделать, что бы NeedSize = автоматом бралась из WizardForm.DiskSpaceLabel то есть где пишется размер в DiskSpaceMBLabel=.
AppName=My Program
AppVerName=My Program 1.0
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
[LangOptions]
DialogFontName=Tahoma
[Messages]
DiskSpaceMBLabel=Disk space required: [mb] MB
[Code]
const
NeedSize = 2100; //Размер устанавливаемого компонента
var
FreeSpaceLabel: TLabel;
FreeMB, TotalMB: cardinal;
procedure GetFreeSpaceCaption(Sender: TObject);
var
Path: string;
begin
Path := ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, true, FreeMB, TotalMB);
if FreeMB > 1024 then
FreeSpaceLabel.Caption := 'Disk space available:' + ' ' + FloatToStr(round(FreeMB/1024*100)/100) + ' ' + 'GB'
else
FreeSpaceLabel.Caption := 'Disk space available:' + ' ' + IntToStr(FreeMB) + ' ' + 'MB'
begin
if FreeMB < NeedSize then
begin
WizardForm.NextButton.Enabled := false;
end else
WizardForm.NextButton.Enabled := true;
end;
end;
procedure InitializeWizard();
begin
WizardForm.DiskSpaceLabel.Top := WizardForm.DiskSpaceLabel.Top - ScaleY(16);
FreeSpaceLabel := TLabel.Create(WizardForm);
FreeSpaceLabel.Left := WizardForm.DiskSpaceLabel.Left;
FreeSpaceLabel.Top := WizardForm.DiskSpaceLabel.Top + ScaleY(16);
FreeSpaceLabel.Parent := WizardForm.SelectDirPage;
WizardForm.DirEdit.OnChange := @GetFreeSpaceCaption;
WizardForm.DirEdit.Text := WizardForm.DirEdit.Text + #0;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpSelectDir then
if FreeMB < NeedSize then
begin
WizardForm.NextButton.Enabled := False
end;
end;[/more] для отображения свободного места с блокировкой кнопки ‘Далее, если места на диске не хватает.
Размер устанавливаемой программы, который сравнивается с размером свободного места пишется в коде в const NeedSize = 2100;, вот как бы сделать, что бы NeedSize = автоматом бралась из WizardForm.DiskSpaceLabel то есть где пишется размер в DiskSpaceMBLabel=.
Diawer
Размещалось на предыдущих страницах мной
Размещалось на предыдущих страницах мной
Кто знает, что это за потаенная библиотека InnoExt.dll. Нашел ее в инсталляторе Legendary от 1С.
Artem_Butenko
Таймер, выводящий и меняющий .jpg картинки.
Таймер, выводящий и меняющий .jpg картинки.
Don_Juan, наверно так, уже вспомнил, только слайд-шоу в этом инсталлере из *.bmp файлов.
Qarma
Понятно, что ни че не понятно.
Вопрос в том, что бы NeedSize = ??? - бралась из DiskSpaceMBLabel автоматом.
Понятно, что ни че не понятно.
Вопрос в том, что бы NeedSize = ??? - бралась из DiskSpaceMBLabel автоматом.
Diawer
Глянь может это!!!
[more=Код]
[Setup]
AppName=My Program
AppVerName=My Program version 1.4
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
[Code]
var
NeedSize:Integer;
FreeMB, TotalMB: Cardinal;
NeedSpaceLabel,FreeSpaceLabel: TLabel;
procedure GetFreeSpaceCaption(Sender: TObject);
var
Path: String;
begin
Path := ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
if FreeMB > 1024 then
FreeSpaceLabel.Caption := 'Доступно места на диске: '+ FloatToStr(round(FreeMB/1024*100)/100) + ' GB' else
FreeSpaceLabel.Caption := 'Доступно места на диске: '+ IntToStr(FreeMB)+ ' MB';
if FreeMB < NeedSize then
WizardForm.NextButton.Enabled := False else
WizardForm.NextButton.Enabled := True; end;
procedure GetNeedSpaceCaption;
begin
if NeedSize > 1024 then
NeedSpaceLabel.Caption := 'Требуется места на диске: '+ FloatToStr(round(NeedSize/1024*100)/100) + ' GB' else
NeedSpaceLabel.Caption := 'Требуется места на диске: '+ IntToStr(NeedSize)+ ' MB';
end;
procedure InitializeWizard();
begin
NeedSize := 6300;
WizardForm.DiskSpaceLabel.Hide;
NeedSpaceLabel := TLabel.Create(WizardForm);
with NeedSpaceLabel do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(202);
Width := ScaleX(209);
Height := ScaleY(13);
end;
FreeSpaceLabel := TLabel.Create(WizardForm);
with FreeSpaceLabel do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(220);
Width := ScaleX(209);
Height := ScaleY(13);
end;
WizardForm.DirEdit.OnChange := @GetFreeSpaceCaption;
WizardForm.DirEdit.Text := WizardForm.DirEdit.Text + #0;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpSelectDir then begin
GetNeedSpaceCaption;
if FreeMB < NeedSize then
WizardForm.NextButton.Enabled:=False
end;
end;
[/more]
Глянь может это!!!
[more=Код]
[Setup]
AppName=My Program
AppVerName=My Program version 1.4
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
[Code]
var
NeedSize:Integer;
FreeMB, TotalMB: Cardinal;
NeedSpaceLabel,FreeSpaceLabel: TLabel;
procedure GetFreeSpaceCaption(Sender: TObject);
var
Path: String;
begin
Path := ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
if FreeMB > 1024 then
FreeSpaceLabel.Caption := 'Доступно места на диске: '+ FloatToStr(round(FreeMB/1024*100)/100) + ' GB' else
FreeSpaceLabel.Caption := 'Доступно места на диске: '+ IntToStr(FreeMB)+ ' MB';
if FreeMB < NeedSize then
WizardForm.NextButton.Enabled := False else
WizardForm.NextButton.Enabled := True; end;
procedure GetNeedSpaceCaption;
begin
if NeedSize > 1024 then
NeedSpaceLabel.Caption := 'Требуется места на диске: '+ FloatToStr(round(NeedSize/1024*100)/100) + ' GB' else
NeedSpaceLabel.Caption := 'Требуется места на диске: '+ IntToStr(NeedSize)+ ' MB';
end;
procedure InitializeWizard();
begin
NeedSize := 6300;
WizardForm.DiskSpaceLabel.Hide;
NeedSpaceLabel := TLabel.Create(WizardForm);
with NeedSpaceLabel do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(202);
Width := ScaleX(209);
Height := ScaleY(13);
end;
FreeSpaceLabel := TLabel.Create(WizardForm);
with FreeSpaceLabel do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(220);
Width := ScaleX(209);
Height := ScaleY(13);
end;
WizardForm.DirEdit.OnChange := @GetFreeSpaceCaption;
WizardForm.DirEdit.Text := WizardForm.DirEdit.Text + #0;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpSelectDir then begin
GetNeedSpaceCaption;
if FreeMB < NeedSize then
WizardForm.NextButton.Enabled:=False
end;
end;
[/more]
Цитата:
Хелп
как сделать запрос сд-кея при установке
чтобы он в реестр прописывался?????
чтобы игры, которые например просят ключ для сетевой игры, сразу его получали при установке
Добавлено:
Ну или так
сетап сам генерит кей из кейгена, запуская его на 1 секунду и сразу же прописывает этот кей в реестр
Кто нибудь поможет?
Qarma
Цитата:
1. Один раз сгенерить кейгеном ключ, скопировать.
2. Сделать чтобы IS писал его в реестр.
3. Не заниматься ерундой.
Цитата:
Хелп
как сделать запрос сд-кея при установке
чтобы он в реестр прописывался?????
чтобы игры, которые например просят ключ для сетевой игры, сразу его получали при установке
Добавлено:
Ну или так
сетап сам генерит кей из кейгена, запуская его на 1 секунду и сразу же прописывает этот кей в реестр
Кто нибудь поможет?
1. Один раз сгенерить кейгеном ключ, скопировать.
2. Сделать чтобы IS писал его в реестр.
3. Не заниматься ерундой.
Qarma
Цитата:
весёлый парень
p.s. помню давным давно, делал другану инстал БФ2 для сетевой, так там как раз я сделал так, что при каждой установке - ключ совершенно разный писался. но средствами инно писать его из кейгена - забудь (у меня как раз именно так и делалось, при запуске инстала запускался кейген, вытаскивал я от туда ключ руками, преообразовывал в реестровый вид БФ-а и прописывал)
LordVeider
точно!
Цитата:
Ну или так
сетап сам генерит кей из кейгена, запуская его на 1 секунду и сразу же прописывает этот кей в реестр
весёлый парень
p.s. помню давным давно, делал другану инстал БФ2 для сетевой, так там как раз я сделал так, что при каждой установке - ключ совершенно разный писался. но средствами инно писать его из кейгена - забудь (у меня как раз именно так и делалось, при запуске инстала запускался кейген, вытаскивал я от туда ключ руками, преообразовывал в реестровый вид БФ-а и прописывал)
LordVeider
точно!
Sig666
Вариант, но...
Посчитать размер папки с помощью IS никак ?
Вариант, но...
Посчитать размер папки с помощью IS никак ?
LordVeider
Цитата:
Ну если один и тот же будет ключ у всех, кому я инсталлер давал, то как то не очень получается
Добавлено:
Помогите - как сделать чтобы на десктоп выводилось 2 ярлыка, под Dx9 и Dx10?
Цитата:
1. Один раз сгенерить кейгеном ключ, скопировать.
2. Сделать чтобы IS писал его в реестр.
3. Не заниматься ерундой.
Ну если один и тот же будет ключ у всех, кому я инсталлер давал, то как то не очень получается
Добавлено:
Помогите - как сделать чтобы на десктоп выводилось 2 ярлыка, под Dx9 и Dx10?
LordVeider
В Corona Skin есть код, возвращающий объем директории.
В Corona Skin есть код, возвращающий объем директории.
Qarma
Цитата:
Код: [Code]
procedure RegisterApplication();
var
s:array [1..5] of string;
begin
s[1]:='ABCD-EFGH-IJK';
s[2]:='ABCD-KLMN-FFF';
s[3]:='ABCD-4566-XCZ';
s[4]:='ABCD-5678-111';
s[5]:='ABCD-9090-BBB';
RegWriteStringValue(HKLM, 'SOFTWARE\MyProgram', 'Serial', s[random(5)]);
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpFinished
then
RegisterApplication;
end;
Цитата:
Ну если один и тот же будет ключ у всех, кому я инсталлер давал, то как то не очень получаетсяУтомили...
Код: [Code]
procedure RegisterApplication();
var
s:array [1..5] of string;
begin
s[1]:='ABCD-EFGH-IJK';
s[2]:='ABCD-KLMN-FFF';
s[3]:='ABCD-4566-XCZ';
s[4]:='ABCD-5678-111';
s[5]:='ABCD-9090-BBB';
RegWriteStringValue(HKLM, 'SOFTWARE\MyProgram', 'Serial', s[random(5)]);
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpFinished
then
RegisterApplication;
end;
Уже несколько раз писал. Вот закопипастю еще раз то-же что несколько страниц назад писал:
Есть софтина, при её установке создается ветвь реестра
Код: HKLM\SOFTWARE\programname\1
Есть софтина, при её установке создается ветвь реестра
Код: HKLM\SOFTWARE\programname\1
Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
Предыдущая тема: в очередной раз босудим антивиры?
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.