PDA

Показать полную графическую версию : Скрипты 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

Banan330
02-09-2016, 09:59
Хрень,надо так


[Files]
Source: {#MyAppSource}\*.*; DestDir: {#OutputDir}\Vasya
Source: {#MyAppSource}\*.*; DestDir: {#OutputDir}\Masha

[Run]
Filename: "{cmd}"; Parameters: "/c if /i ""%computername%"" == ""123"" (xcopy /e /y ""{#OutputDir}\Vasya\*.txt"" ""{#MyAppName}\Vasya\"" )";
Filename: "{cmd}"; Parameters: "/c if /i ""%computername%"" == ""123"" (xcopy /e /y ""{#OutputDir}\Masha\*.txt"" ""{#MyAppName}\Masha\"" )";

ZVSRus
02-09-2016, 14:33
Всем Доброго времени суток. У кого есть код для командных файлов (.cmd):

"Setup.exe" /VERYSILENT /I /RU
"Setup.exe" /VERYSILENT /I /EN
"Setup.exe" /VERYSILENT /P

Решение найдено.

Последняя загвоздка с прописыванием пути "setup.exe" /VERYSILENT /P /D="D:\MyPortable".

El Sanchez
02-09-2016, 16:50
Хрень,надо так »
Banan330, т.е. давайте плодить файлы сначала в {#OutputDir}, а потом героически копировать оттуда нужные в {#MyAppName}, зная, что деинсталлятору во время удаления про файлы из {#MyAppName} ничего не будет известно. А потом - чё это у меня файлы остаются после удаления?

vadjliss
11-09-2016, 07:37
парни помогите со скриптом распаковка FreeArc
если можно то наглядный скрипт что куда прописывать
прочитал много но не догнал что и как
заранее спасибо.

Habetdin
11-09-2016, 21:35
El Sanchez, да, и Check - это уже не модно :jester:
[hr]vadjliss, ссылка на пример скрипта (http://www.forum.oszone.ru/post-1300871-729.html) дана в шапке темы, что конкретно непонятно в примере?

vadjliss
12-09-2016, 11:36
я не понял как прописать архив что бы после распаковки установилось программа
ярлыки прописать программы

R.i.m.s.k.y.
14-09-2016, 12:16
Господа
насколько я понимаю для определения windows10 нужен инно 5,5,6 или выше
Но беда - у меня скрипт на расширенной версии инно от restools еще от инноультра 5,5,1(а)
Сайт restools http://restools.hanzify.org/ лежит, инноультра сдох
Вопрос: где теперь все это брать?

и если с новыми версиями все так плохо то как можно выкрутиться для корректного опознавания вин10 в инно версии 5,5,1ее(а) через Version: TWindowsVersion?

R.i.m.s.k.y.
14-09-2016, 13:24
и если с новыми версиями все так плохо то как можно выкрутиться для корректного опознавания вин10 в инно версии 5,5,1ее(а) через Version: TWindowsVersion? »
через ntoskrnl.exe
; Скрипт создан через Мастер Inno Setup Script.
; ИСПОЛЬЗУЙТЕ ДОКУМЕНТАЦИЮ ДЛЯ ПОДРОБНОСТЕЙ ИСПОЛЬЗОВАНИЯ INNO SETUP!

#define MyAppName "version"
#define MyAppVersion "1.0"
#define MyAppExeName "MyProg.exe"

[Setup]
; Примечание: Значение AppId идентифицирует это приложение.
; Не используйте одно и тоже значение в разных установках.
; (Для генерации значения GUID, нажмите Инструменты | Генерация GUID.)
AppId={{8D07C1DF-B738-44EC-AAB9-42EE73B52969}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
CreateAppDir=no
OutputDir=.
OutputBaseFilename=version
Compression=lzma
SolidCompression=yes
Uninstallable=false

[Languages]
Name: "default"; MessagesFile: "compiler:Default.isl"

[Code]

var
Version: TWindowsVersion;

Function InitializeSetup: Boolean;
var ResultStr, s, st, s_apprun, s_app :string; ResultCode, res, i, ErrorCode: Integer; rim, b1,b2 : boolean; VersionMS0x86, VersionLS0x86 : cardinal;
Begin
GetWindowsVersionEx (version)
GetVersionNumbers(ExpandConstant('{sys}\ntoskrnl.exe'), VersionMS0x86, VersionLS0x86);
s:= 'ntoskrnl.exe = ' + IntToSTR(VersionMS0x86) + '.' + IntToSTR(VersionLS0x86) + #13#10 +
'OS = ' + inttostr(Version.Major) + '.' + inttostr(Version.minor);
if VersionMS0x86 = $60001 then MsgBox(s + ' // ' + 'Windows 7', mbInformation, MB_OK);
if VersionMS0x86 = $60002 then MsgBox(s + ' // ' + 'Windows 8.0', mbInformation, MB_OK);
if VersionMS0x86 = $60003 then MsgBox(s + ' // ' + 'Windows 8.1', mbInformation, MB_OK);
if VersionMS0x86 = $A0000 then MsgBox(s + ' // ' + 'Windows 10', mbInformation, MB_OK);
if VersionMS0x86 = $A0001 then MsgBox(s + ' // ' + 'Windows 10.1', mbInformation, MB_OK);

Result:= false
end;
end.
http://images.vfl.ru/ii/1473848614/9243c14e/14111466_m.jpg (http://vfl.ru/fotos/9243c14e14111466.html)

655360 это 000А 0000, 0000А = 10
причем обратите внимание что сам инно 5,5,1 опознает систему как вин 8,0, даже не вин 8,1 из-за старого манифеста (OS = ), но через версию файла ntoskrnl.exe опознает ОС как десятку в hex, т.е. как надо
В общем даже на старом инно если применять этот метод будет опознавать еще долго, если МС опять что-нибудь не начудит

нужно было поменять if на case но вломм
Мысль ясна

doctor_allcome
14-09-2016, 13:52
Добрый день!
Возник вопрос. В окне SelectDirPage при нажатии кнопки "Далее>" выходит сообщение о том что "Папка не существует" и предложение создать её.
Как сделать так, что бы папка создавалась автоматически и сообщение не выводилось?

R.i.m.s.k.y.
14-09-2016, 13:56
doctor_allcome, DirExistsWarning и EnableDirDoesntExistWarning в секции Setup

doctor_allcome
14-09-2016, 14:01
R.i.m.s.k.y., Спасибо!

Nordek
14-09-2016, 14:52
Сайт restools http://restools.hanzify.org/ лежит, инноультра сдох »
Inno Setup Ultra (http://krinkels.org/threads/inno-setup-ultra.944/).

В теме Inno Setup. Прочие вопросы (http://forum.oszone.net/thread-148707.html) - из первого сообщения (http://forum.oszone.net/post-1201499-1.html) ещё доступны к скачиванию по прямым ссылкам файлы Inno Setup Compiler (http://restools.hanzify.org/inno/InnoCompiler121216(7zip).zip) build 121216 и Inno ISCmplr Setup (http://restools.hanzify.org/inno/Inno_ISCmplr_Setup121002(7zip).zip) build 121002.
Версии ispack доступны к скачиванию отсюда (http://files.jrsoftware.org/ispack/) (Например: ispack-5.5.1.exe (http://files.jrsoftware.org/ispack/ispack-5.5.1.exe) и ispack-5.5.1-unicode.exe (http://files.jrsoftware.org/ispack/ispack-5.5.1-unicode.exe))

Версии isetup доступны к скачиванию отсюда (http://files.jrsoftware.org/is/5/) (Например: isetup-5.5.1.exe (http://files.jrsoftware.org/is/5/isetup-5.5.1.exe) и isetup-5.5.1-unicode.exe (http://files.jrsoftware.org/is/5/isetup-5.5.1-unicode.exe)).

R.i.m.s.k.y.
14-09-2016, 14:54
Nordek, это все 5.5.1
а нужно 5.5.6 минимум

El Sanchez
14-09-2016, 21:31
и если с новыми версиями все так плохо то как можно выкрутиться для корректного опознавания вин10 в инно версии 5,5,1ее(а) через Version: TWindowsVersion? »
R.i.m.s.k.y., и года не прошло:)

R.i.m.s.k.y.
15-09-2016, 09:45
R.i.m.s.k.y., и года не прошло »
не работает BASS module с компилятором с правленным манифестом, ругается на неизвестный тип PChar
но таки мой способ будет работать и дальше, а манифест этот опять придется просить поправить

semiono
16-09-2016, 00:24
Помогите! Мне нужно разрешение экрана в секции [registry]

Вот тут какой-то код, но мне MsgBox не нужен, а нужна строка, например 1440x900, чтобы в реестре записать.

[Code]
function GetSystemMetrics (nIndex: Integer): Integer;
external 'GetSystemMetrics@User32.dll stdcall setuponly';

Const
SM_CXSCREEN = 0; // The enum-value for getting the width of the cient area for a full-screen window on the primary display monitor, in pixels.
SM_CYSCREEN = 1; // The enum-value for getting the height of the client area for a full-screen window on the primary display monitor, in pixels.

function InitializeSetup(): Boolean;
var
hDC: Integer;
xres: Integer;
yres: Integer;
begin
xres := GetSystemMetrics(SM_CXSCREEN);
yres := GetSystemMetrics(SM_CYSCREEN); //vertical resolution

MsgBox( 'Current resolution is ' + IntToStr(xres) +
'x' + IntToStr(yres)
, mbInformation, MB_OK );

Result := true;
end;

nik1967
16-09-2016, 12:33
semiono,
[Setup]
AppName = MyApp
AppVerName = MyApp
DefaultDirname = {pf}\MyApp
OutputDir=.

[Registry]
Root: HKLM; SubKey: SOFTWARE\MyApp; ValueType: string; ValueName: Resolution ; ValueData: {code:Res}; Flags: uninsdeletekey;

[Code]
Const
SM_CXSCREEN = 0;
SM_CYSCREEN = 1;

function GetSystemMetrics(nIndex: Integer): Integer; external 'GetSystemMetrics@User32.dll stdcall setuponly';

function Res(S: String): String;
begin
S:= IntToStr(GetSystemMetrics(SM_CXSCREEN))+'x'+IntToStr(GetSystemMetrics(SM_CYSCREEN));
Result:= S;
end;



#ifndef IS_ENHANCED
#error Enhanced edition of Inno Setup (restools) is required to compile this script
#endif

[Setup]
AppName = MyApp
AppVerName = MyApp
DefaultDirname = {pf}\MyApp
OutputDir=.

[Registry]
Root: HKLM; SubKey: SOFTWARE\MyApp; ValueType: string; ValueName: Resolution ; ValueData: {code:Res}; Flags: uninsdeletekey;

[Code]
function Res(S: String): String;
begin
S:= IntToStr(Screen.Width)+'x'+IntToStr(Screen.Height);
Result:= S;
end;

El Sanchez
16-09-2016, 17:57
не работает BASS module с компилятором с правленным манифестом, ругается на неизвестный тип PChar »
R.i.m.s.k.y., манифест не виноват в том, что тип PChar отсутствует в Unicode-версии Inno Setup. Ну замени на AnsiString.

semiono
16-09-2016, 22:27
Нужно установить "дата и время создания папки" = 2001-01-01 00:00:00

SetFileTime function :o

R.i.m.s.k.y.
21-09-2016, 16:56
мне нужно прописать в ярлык в параметры совместимости "runasadmin"

Насколько я помню за это отвечает ключ
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
пишется строковое имя параметра в виде пути и параметр
C:\Program Files\7-Zip\7zFM.exe=RUNASADMIN

Скажите, пожалуйста, это правильно и работает ли оно в 8/10?




© OSzone.net 2001-2012