Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 7]
Dodakaedr
30-03-2014, 20:30
Пробовал, отображается обычная @ »
Какая программа требует? Что-то я вообще не понял.....
Dodakaedr, в реестре такой параметр есть, мне просто нужно сохранить пути реестра. TeamSpeak называется
Dodakaedr
30-03-2014, 20:47
в реестре такой параметр есть »
Если вы используете inno ultra то там есть программа Converter Reg to ISS, если нет то в шапке темы она есть. Через стандартный редактор реестра извлеките вам нужный ключ и через Converter Reg to ISS конвертируйте в формат inno setup, потом запустите конвертированный файл и скопируйте уже готовый код вашего ключа.
Dodakaedr, спасибо попробую, последний вопрос, как в
Root: HKLM; Subkey: "SOFTWARE\TeamSpeak 3 Client"; ValueType: string; ValueName: "InstallMode"; ValueData: "AllUsers"; Flags: uninsdeletekey
...указать, чтоб параметры создались именно в SOFTWARE, а не в Wow6432Node по умолчанию на 64 бит платформе?
Dodakaedr
30-03-2014, 20:57
по умолчанию на 64 бит платформе? »
Попробуй так, сам лично не проверял.
Root: HKLM64; Subkey: "SOFTWARE\TeamSpeak 3 Client"; ValueType: string; ValueName: "InstallMode"; ValueData: "AllUsers"; Flags: uninsdeletekey
diman_21Ru
30-03-2014, 23:25
Какие бывают типы сжатий ,заранее благодарю =)
Какие бывают типы сжатий »
zip
; zip - сжатие / 9 - Степень сжатия (от 1 до 9)
Compression=zip/9
; Внутреннее сжатие (none, fast, normal, max или ultra )
InternalCompressLevel=ultra
; Потоки сжатия (auto, 1 или 2)
CompressionThreads=2
; Непрерывное сжатие
SolidCompression=True
Пример:
Compression=zip/9
InternalCompressLevel=ultra
CompressionThreads=2
SolidCompression=True
bzip
; bzip - сжатие / 1 - Степень сжатия (от 1 до 9)
Compression=bzip/9
; Внутреннее сжатие (none, fast, normal, max или ultra )
InternalCompressLevel=ultra
; Потоки сжатия (auto, 1 или 2)
CompressionThreads=2
; Непрерывное сжатие
SolidCompression=True
Пример:
Compression=bzip/9
InternalCompressLevel=ultra
CompressionThreads=2
SolidCompression=True
lzma
; lzma - сжатие / ultra64 - Степень сжатия (fast, normal, max, ultra и ultra64)
Compression=lzma/ultra64
; Внутреннее сжатие (none, fast, normal, max или ultra)
InternalCompressLevel=ultra
; Потоки сжатия (auto, 1 или 2)
CompressionThreads=2
; Непрерывное сжатие
SolidCompression=True
Пример:
Compression=lzma/ultra64
InternalCompressLevel=ultra
CompressionThreads=2
SolidCompression=True
lzma2
; lzma2 - сжатие / ultra64 - Степень сжатия (fast, normal, max, ultra и ultra64)
Compression=lzma2/ultra64
; Внутреннее сжатие (none, fast, normal, max или ultra)
InternalCompressLevel=ultra
; Потоки сжатия (auto, 1 или 2)
CompressionThreads=2
; Непрерывное сжатие
SolidCompression=True
Пример:
Compression=lzma2/ultra64
InternalCompressLevel=ultra
CompressionThreads=2
SolidCompression=True
none
; none - без сжатия
Compression=none
; Внутреннее сжатие (none, fast, normal, max или ultra)
InternalCompressLevel=ultra
; Потоки сжатия (auto, 1 или 2)
CompressionThreads=2
; Непрерывное сжатие
SolidCompression=True
Пример:
Compression=none
InternalCompressLevel=ultra
CompressionThreads=2
SolidCompression=True
Воспользуйся программами InnoIDE (http://www.innoide.net/download.php), ISTool (http://sourceforge.net/projects/istool/) или Inno Script Studio (https://www.kymoto.org/products/inno-script-studio)
InnoIDE
"Проект » Настройки » Сжатие"
ISTool
"Проект » Параметры дистрибутива » Компилятор"
Inno Script Studio
"Проект » Параметры установки » Сжатие (Project » Setup Options » Compression)"
Dodakaedr, просмотрел код, который по той ссылке. А нельзя как-нибудь попроще найти способ? Просто не понимаю как с этим кодом сделать 2 чекбокса на деинсталлер.
Dodakaedr
31-03-2014, 09:36
Raz3r, мне тоже нужно было создать чекбокс и мне дали такой код, а когда я попросил попроще то ответили:
http://forum.oszone.net/post-2330624-148.html
Так что если найдете по проще, то поделитесь....
Dodakaedr
31-03-2014, 10:16
Где можно посмотреть примеры реализации проверок IsWin32, IsWin64 или тому подобное. В справке читал, хочется поподробней посмотреть их реализацию?
Dodakaedr, в Inno нет вшитой функции IsWin32.
Простейшее использование IsWin64 на примере установки файлов:
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
OutputDir=...
[Files]
;install on x64
Source: MyProg-x64.exe; DestDir: {app}; Check: IsWin64;
;install on x86
Source: MyProg.exe; DestDir: {app}; Check: not IsWin64;
diman_21Ru
31-03-2014, 10:53
Можно ли реализовать о выходе новой версии и добавить уведомление в любую игру,заранее благодарю
Stealthmax
31-03-2014, 11:02
Подскажите, как добавить событие для ShowButton, чтобы при нажатии выполнялось действие показать/скрыть панель и сохранялось событие чекбокса при изменении и закрытии панели.
#define MyAppName "My Program"
#define MyAppVersion "1.5"
#define MyAppPublisher "My Company, Inc."
#define MyAppExeName "MyProg.exe"
[Setup]
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppPublisher={#MyAppPublisher}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
OutputBaseFilename=setup
ShowLanguageDialog=no
Compression=lzma
SolidCompression=yes
[Languages]
Name: "default"; MessagesFile: "compiler:Default.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
[Files]
Source: "Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
[_Code]
var
SettingPanel: TPanel;
One: TNewCheckBox;
Two: TNewCheckBox;
ShowButton: TNewButton;
procedure ShowButtonClick(Sender: TObject); forward;
procedure RedesignWizardForm;
begin
{ SettingPanel }
SettingPanel := TPanel.Create(WizardForm);
with SettingPanel do
begin
Name := 'SettingPanel';
Parent := WizardForm.WelcomePage;
Left := ScaleX(168);
Top := ScaleY(0);
Width := ScaleX(329);
Height := ScaleY(314);
Visible := False;
Caption := '';
end;
{ One }
One := TNewCheckBox.Create(WizardForm);
with One do
begin
Name := 'One';
Parent := SettingPanel;
Left := ScaleX(8);
Top := ScaleY(24);
Width := ScaleX(97);
Height := ScaleY(17);
Checked := True;
State := cbChecked;
Visible := False;
end;
{ Two }
Two := TNewCheckBox.Create(WizardForm);
with Two do
begin
Name := 'Two';
Parent := SettingPanel;
Left := ScaleX(8);
Top := ScaleY(48);
Width := ScaleX(97);
Height := ScaleY(17);
Checked := True;
State := cbChecked;
Visible := False;
end;
One.TabOrder := 0;
Two.TabOrder := 1;
SettingPanel.TabOrder := 2;
{ ShowButton }
ShowButton := TNewButton.Create(WizardForm);
with ShowButton do
begin
Name := 'ShowButton';
Parent := WizardForm;
Left := ScaleX(16);
Top := ScaleY(325);
Width := ScaleX(75);
Height := ScaleY(25);
Caption := 'Show';
OnClick := @ShowButtonClick;
end;
ShowButton.TabOrder := 5;
end;
procedure ShowButtonClick(Sender: TObject);
begin
SettingPanel.Visible := True;
One.Visible := True;
Two.Visible := True;
ShowButton.Caption := 'Hide';
end;
procedure InitializeWizard();
begin
RedesignWizardForm;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpWelcome then SettingPanel.Visible := False;
end;
примеры реализации проверок IsWin32, IsWin64 »
[Setup]
AppName=IsWin
AppVersion=1.5
DefaultDirName={pf}\IsWin
DefaultGroupName=IsWin
OutputDir=.
[Files]
Source: MyProg32.exe; DestDir: {app}; Check: not IsWin64; Flags: ignoreversion
Source: MyProg64.exe; DestDir: {app}; Check: IsWin64; Flags: ignoreversion
[Registry]
Root: HKLM; SubKey: SOFTWARE\My Program; ValueType: string; ValueName: Install Dir; ValueData: {app}; Flags: uninsdeletekey; Check: not IsWin64
Root: HKLM; SubKey: SOFTWARE\Wow6432Node\My Program; ValueType: string; ValueName: Install Dir; ValueData: {app}; Flags: uninsdeletekey; Check: IsWin64
[Run]
Filename: {app}; Flags: shellexec nowait postinstall; Description: Открыть папку {app}
Filename: {app}\MyProg32.exe; Description: Выполнить MyProg32; Check: not IsWin64; Flags: nowait postinstall
Filename: {app}\MyProg64.exe; Description: Выполнить MyProg64; Check: IsWin64; Flags: nowait postinstall
[Setup]
AppName=IsWin
AppVersion=1.5
DefaultDirName={pf}\IsWin
DefaultGroupName=IsWin
OutputDir=.
[Languages]
Name: ru; MessagesFile: compiler:Languages\Russian.isl;
Name: en; MessagesFile: compiler:Languages\Russian.isl;
[CustomMessages]
ru.IsWin32=У вас 32-битная система, программа будет установлена в папку по умолчанию:
ru.IsWin64=У вас 64-битная система, программа будет установлена в папку по умолчанию:
en.IsWin32=32-bit program files reside in:
en.IsWin64=64-bit program files reside in:
[Files]
Source: MyProg32.exe; DestDir: {app}; Check: not IsWin64; Flags: ignoreversion
Source: MyProg64.exe; DestDir: {app}; Check: IsWin64; Flags: ignoreversion
[Registry]
Root: HKLM; SubKey: SOFTWARE\My Program; ValueType: string; ValueName: Install Dir; ValueData: {app}; Flags: uninsdeletekey; Check: not IsWin64
Root: HKLM; SubKey: SOFTWARE\Wow6432Node\My Program; ValueType: string; ValueName: Install Dir; ValueData: {app}; Flags: uninsdeletekey; Check: IsWin64
[Run]
Filename: {app}; Flags: shellexec nowait postinstall; Description: Открыть папку {app}
Filename: {app}\MyProg32.exe; Description: Выполнить MyProg32; Check: not IsWin64; Flags: nowait postinstall
Filename: {app}\MyProg64.exe; Description: Выполнить MyProg64; Check: IsWin64; Flags: nowait postinstall
[Code]
function InitializeSetup: Boolean;
begin
if IsWin64 then
MsgBox(ExpandConstant('{cm:IsWin64}') + ExpandConstant('{pf64}'), mbInformation, MB_OK)
else
MsgBox(ExpandConstant('{cm:IsWin32}') + ExpandConstant('{pf32}'), mbInformation, MB_OK);
result:=true;
end;
Stealthmax, #define MyAppName "My Program"
#define MyAppVersion "1.5"
#define MyAppPublisher "My Company, Inc."
#define MyAppExeName "MyProg.exe"
[Setup]
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppPublisher={#MyAppPublisher}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
OutputBaseFilename=setup
ShowLanguageDialog=no
Compression=lzma
SolidCompression=yes
[Languages]
Name: "default"; MessagesFile: "compiler:Default.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
[Files]
Source: "Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
[_Code]
var
SettingPanel: TPanel;
One: TNewCheckBox;
Two: TNewCheckBox;
ShowButton: TNewButton;
FlagSB: Boolean;
procedure ShowButtonClick(Sender: TObject); forward;
procedure RedesignWizardForm;
begin
{ SettingPanel }
SettingPanel := TPanel.Create(WizardForm);
with SettingPanel do
begin
Name := 'SettingPanel';
Parent := WizardForm.WelcomePage;
Left := ScaleX(168);
Top := ScaleY(0);
Width := ScaleX(329);
Height := ScaleY(314);
Caption := '';
end;
{ One }
One := TNewCheckBox.Create(WizardForm);
with One do
begin
Name := 'One';
Parent := SettingPanel;
Left := ScaleX(8);
Top := ScaleY(24);
Width := ScaleX(97);
Height := ScaleY(17);
Checked := True;
State := cbChecked;
end;
{ Two }
Two := TNewCheckBox.Create(WizardForm);
with Two do
begin
Name := 'Two';
Parent := SettingPanel;
Left := ScaleX(8);
Top := ScaleY(48);
Width := ScaleX(97);
Height := ScaleY(17);
Checked := True;
State := cbChecked;
end;
One.TabOrder := 0;
Two.TabOrder := 1;
SettingPanel.TabOrder := 2;
{ ShowButton }
ShowButton := TNewButton.Create(WizardForm);
with ShowButton do
begin
Name := 'ShowButton';
Parent := WizardForm;
Left := ScaleX(16);
Top := ScaleY(325);
Width := ScaleX(75);
Height := ScaleY(25);
Caption := 'Show';
OnClick := @ShowButtonClick;
end;
ShowButton.TabOrder := 5;
FlagSB := False;
end;
procedure ShowButtonClick(Sender: TObject);
begin
if FlagSB = False then begin
SettingPanel.Show;
One.Show;
Two.Show;
ShowButton.Caption := 'Hide';
FlagSB := True;
end else begin
SettingPanel.Hide;
One.Hide;
Two.Hide;
ShowButton.Caption := 'Show';
FlagSB := False;
end;
end;
procedure InitializeWizard();
begin
RedesignWizardForm;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpWelcome then SettingPanel.Visible := False;
end;Немного упростил.
Можно ли реализовать о выходе новой версии и добавить уведомление в любую игру,заранее благодарю »
Можно, но уж очень много геммора - например, нужно для начала создать сайт для хранения обновлений версий на надёжном хосте.
diman_21Ru
31-03-2014, 12:17
Можно ли как то реализовать в скрипт Лаунчер по оповещению новой версии программы
Можно ли как то реализовать в скрипт Лаунчер по оповещению новой версии программы »
Как ты себе это представляешь?
Можно, но уж очень много геммора - например, для начала нужно создать сайт для хранения обновлений версий на надёжном хосте. »
Stealthmax
31-03-2014, 12:52
Немного упростил. »Спасибо огромное, сам затупил конечно, забыл, что надо добавить значение в var.
Ещё такой вопрос: можно будет обратиться с готовым скриптом, для проверки и правки, если вдруг где-то будут ошибки? А то я давно мурыжу свой скрипт из тонн поисковых запросов google и справки по Inno. Хочу для личных нужд вывести свой и больше не возиться с написанием. На руборде неоднократно обращался, но там народ не сильно сговорчивый, никто ни разу ничего не подсказал. А здесь практически всегда кто-то чем-то поможет или хотя бы ответят, "носом ткнут".
Какой параметр нужно ввести вместо DeleteFile(ExpandConstant('{app}\ts3server.sqlitedb')); чтобы удалить папку со всеми вложенными файлами?
Пример:
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);begin
if (CurUninstallStep = usUninstall) and
(MsgBox(CustomMessage('Del'), mbInformation, MB_YESNO or MB_DEFBUTTON2) = IDYES) then
DeleteFile(ExpandConstant('{app}\ts3server.sqlitedb'));
end;
Raz3r,
[Code]
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);begin
if (CurUninstallStep = usUninstall) and
(MsgBox(CustomMessage('Del'), mbInformation, MB_YESNO or MB_DEFBUTTON2) = IDYES) then
DelTree(ExpandConstant('{app}\Test'), True, True, True);
end;
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC