|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 9] |
|
|
Скрипты Inno Setup. Помощь и советы [часть 9]
|
|
Ветеран Сообщения: 1274 |
Внимание! Данная тема предназначена только для обсуждения написания скриптов!
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Скрипты Inno Setup. Помощь и советы [часть 6] | Скрипты Inno Setup. Помощь и советы [часть 6].7z Скрипты Inno Setup. Помощь и советы [часть 7] | Скрипты Inno Setup. Помощь и советы [часть 7].7z Скрипты Inno Setup. Помощь и советы [часть 8] | Скрипты Inno Setup. Помощь и советы [часть 8].7z |
|
|
Отправлено: 16:09, 04-04-2018 |
|
Пользователь Сообщения: 76
|
Профиль | Отправить PM | Цитировать Выручайте, башка кипит!
Как решить не пойму, примеров найти не могу? Некая программа работает на Виндовс 7 некорректно. Опытным путем , после установки обновления KB2533623, программа начала работать как надо. Так вот в момент установки моего приложения, надо проверить установлено ли обновление KB2533623 в системе, или нет. Если установлено то просто установить приложение, в противном случае, спросить у пользователя, мол хотите установить или нет? Как проверить наличие KB2533623 за что цеплятся? Короч насочинял чот но как быть с 32-бит системой, как запустить само обновление при нажатии "да" непойму.Скрытый текст
[Setup]
AppName=TEST
AppVerName=TEST
OutputDir=userdocs:..\Desktop
CreateAppDir=no
Uninstallable=no
[.Code]
function WindowsVersion(Major, Minor: Integer): Boolean; var
Version: TWindowsVersion;
begin
GetWindowsVersionEx(Version);
Result:=(Version.Major = Major);
Result:=(Version.Minor = Minor);
end;
function WindowsRevVersion: Boolean;
begin
Result:=WindowsVersion(6,1);// Далее код будет выполнятся, только если установлена система (6.1)
end;
function InitializeSetup: Boolean; var
FileName: String;
begin
if not WindowsRevVersion then
Result:=True
else begin
FileName:=ExpandConstant('C:\Windows\SoftwareDistribution\Download\873dafaddab7475a4078c7fc97bc8cba\Windows6.1-KB2533623-x64.cab')// Проверка наличия файла по пути прописаном в реестре
if FileExists(FileName) then
Result:=True
else
if MsgBox('Для полноценной работы приложения TEST:'#13'Нужно установить обновление KB2533623:'#13'Хотите установить обновление KB2533623 ?', mbInformation, MB_YESNO)=IDNO then
Result:=True
else
// Как здесь запустить файл "Windows6.1-KB2533623-x64.msu"???
end
end;
[Files]
Source: "C:\Windows6.1-KB2533623-x64.msu"; DestDir: "{tmp}"; Flags: deleteafterinstall;
шуршу страницы в поисках истины, реально прогрес бар, ботва... короче дети засрали все со своими репаками ПОМОГИТЕ |
|
Последний раз редактировалось Beavimo, 04-02-2020 в 22:24. Отправлено: 15:32, 04-02-2020 | #521 |
|
SHVtYW4= Сообщения: 3451
|
Профиль | Отправить PM | Цитировать Цитата Beavimo:
Например в [Files] добавить обновления: [Files]
Source: Windows6.1-KB2533623-x64.msu; DestDir: {tmp}
Source: Windows6.1-KB2533623-x86.msu; DestDir: {tmp}
[Run]
Filename: wusa.exe; Parameters: {tmp}\Windows6.1-KB2533623-x86.msu /quiet /norestart; StatusMsg: Установка KB2533623
Filename: wusa.exe; Parameters: {tmp}\Windows6.1-KB2533623-x64.msu /quiet /norestart; StatusMsg: Установка KB253362
[Components]
Name: abcd_x86; Description: KB2533623 for x86; Flags: exclusive
Name: abcd_x64; Description: KB2533623 for x64; Flags: exclusive
[Files]
Source: Windows6.1-KB2533623-x64.msu; DestDir: {tmp}; Components: abcd_x64
Source: Windows6.1-KB2533623-x86.msu; DestDir: {tmp}; Components: abcd_x86
[Run]
Filename: wusa.exe; Parameters: {tmp}\Windows6.1-KB2533623-x86.msu /quiet /norestart; StatusMsg: Установка KB2533623; Components: abcd_x86
Filename: wusa.exe; Parameters: {tmp}\Windows6.1-KB2533623-x64.msu /quiet /norestart; StatusMsg: Установка KB2533623; Components: abcd_x64
[Components] Name: abcd_x86; Description: KB2533623 for x86; Flags: exclusive; Check: ab_x86 Name: abcd_x64; Description: KB2533623 for x64; Flags: exclusive; Check: ab_x64 Проверку обновлений осуществить через реестр, например: HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages\Package_for_KB2533623_SP1~31bf3856ad364e35~x86~~6.1.1.2 HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages\Package_for_KB2533623_SP1~31bf3856ad364e35~amd64~~6.1.1.2 Цитата Beavimo:
|
||
|
------- Отправлено: 22:50, 04-02-2020 | #522 |
|
Пользователь Сообщения: 76
|
Профиль | Отправить PM | Цитировать Nordek, огромное спасибо что откликнулся... буду разбиратся
![]() |
|
Последний раз редактировалось Beavimo, 05-02-2020 в 02:35. Отправлено: 23:36, 04-02-2020 | #523 |
|
Пользователь Сообщения: 76
|
Профиль | Отправить PM | Цитировать Nordek, когда я делаю вот так:
CODE
инсталлятор ругается на "ab_x86", я так понимаю в секции {Code} нужно что то сделать с этим именем... меня мучает момент а можно ли вот тут? CODE
[Setup]
AppName=TEST
AppVerName=TEST
OutputDir=userdocs:..\Desktop
CreateAppDir=no
Uninstallable=no
[.code]
function WindowsVersion(Major, Minor: Integer): Boolean; var
Version: TWindowsVersion;
begin
GetWindowsVersionEx(Version);
Result:=(Version.Major=Major) and (Version.Minor=Minor);
end;
function WindowsRevVersion: Boolean;
begin
Result:=WindowsVersion(6,1);
end;
function InitializeSetup: Boolean; var
FileName: String;
begin
if not WindowsRevVersion then
Result:=True
else begin
If IsWin64 then
If RegKeyExists(HKLM64, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages\Package_for_KB2533623_SP1~31bf3856ad364e35~amd64~~6.1.1.2') then
Result:=True// Так вот надо тут поставить чекбокс напротив "Check: ab_x64"
else
MsgBox('Для полноценной работы TEST на Windows 7'#13' Будет установлено обновление << KB2533623 >>'#13'После окончания установки ваш ПК перезагрузится!', mbInformation, MB_OK);
Result:=True
If not IsWin64 then
If RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages\Package_for_KB2533623_SP1~31bf3856ad364e35~amd64~~6.1.1.2') then
Result:=True
else
MsgBox('Для полноценной работы TEST на Windows 7'#13' Будет установлено обновление << KB2533623 >>'#13'После окончания установки ваш ПК перезагрузится!', mbInformation, MB_OK);
Result:=True// А вот тут поставить чекбокс напротив "Check: ab_x86". Наверное я неправильно выражаюсь, может нада говорить вызвать функцию "ab_x86"
end
end;
function ShouldSkipPage(PageID: Integer): Boolean;
begin
Result:=(PageID=wpSelectComponents);
end;// Этот код прячет страницу компонентов
[Components]
Name: abcd_x86; Description: KB2533623 for x86; Check: ab_x86
Name: abcd_x64; Description: KB2533623 for x64; Check: ab_x64
[Files]
Source: C:\Windows6.1-KB2533623-x64.msu; DestDir: {tmp}; Flags: deleteafterinstall;
Source: C:\Windows6.1-KB2533623-x86.msu; DestDir: {tmp}; Flags: deleteafterinstall;
[Run]
Filename: wusa.exe; Parameters: {tmp}\Windows6.1-KB2533623-x86.msu /quiet /norestart; StatusMsg: Установка KB2533623_x86; Components: abcd_x86; BeforeInstall: "Sleep(2000)"
Filename: wusa.exe; Parameters: {tmp}\Windows6.1-KB2533623-x64.msu /quiet /norestart; StatusMsg: Установка KB2533623_x64; Components: abcd_x64; BeforeInstall: "Sleep(2000)"
опять я уперся в запуск. как из секции [code] автоматически ставить флагжки на checkbox??? я просто задолбался искать пример, хотя бы один пример ![]() ![]() ![]() все иду гулять башка взрывается. как всегда на последнем рывке я не знаю что делать |
|
Последний раз редактировалось Beavimo, 05-02-2020 в 18:18. Отправлено: 14:16, 05-02-2020 | #524 |
|
SHVtYW4= Сообщения: 3451
|
Профиль | Отправить PM | Цитировать Цитата Beavimo:
Вот сляпал что-то: Скрытый текст
[Code]
function WindowsVersion(Major, Minor: Integer): Boolean; var
Version: TWindowsVersion;
begin
GetWindowsVersionEx(Version);
Result:=(Version.Major = Major);
Result:=(Version.Minor = Minor);
end;
function WindowsRevVersion: Boolean;
begin
Result:=WindowsVersion(6,1);// Далее код будет выполнятся, только если установлена система (6.1)
end;
function ab_x86: Boolean;
begin
if not WindowsRevVersion then
else begin
if not IsWin64 then begin
if not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages\Package_for_KB2533623_SP1~31bf3856ad364e35~x86~~6.1.1.2') then Result:= True
end;
end;
end;
function ab_x64: Boolean;
begin
if not WindowsRevVersion then
else begin
if IsWin64 then begin
if not RegKeyExists(HKLM64, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages\Package_for_KB2533623_SP1~31bf3856ad364e35~amd64~~6.1.1.2') then Result:= True
end;
end;
end;
Смысл думаю понятен. |
|
|
------- Последний раз редактировалось Nordek, 05-02-2020 в 20:10. Отправлено: 19:49, 05-02-2020 | #525 |
|
Пользователь Сообщения: 76
|
Профиль | Отправить PM | Цитировать Nordek, Пока думаю как правильно организовать сие творение, но оно ска работает именно так как мне надо
![]() ![]() . ОГРОМНОЕ тебе человеческое СПАСИБО.... Я давно мечтал сделать подобного рода инсталлер (как с магазина), без этих картинок музыки в меню, но чтобы умный был Думал что Инно не потянет, а по nsis очень мало доходчивого материала в сети, забил на это дело. Пользовал Smart Install Maker, но он до ужаса кастрирован, ждал обновы, но безрезультатно, прошло много лет а обновы нет. И тут опять решил попробовать, давно мечтал научить инсталлер автоматически опредилять путь для установки, мне подсказали выход, и понеслась я зацепилса за это дело. Не знаю правильно ли но я привик изучять дело с конца, а не с начала. Потому как начинаэш сначала в момент когда ты чегото не понимаешь ты просто здаешся. А так ты ничего не понимаешь вопще но постепенно у тебя чтото получается. Ладно чот меня на творчество понесло. Спасибо за то что пошел на встречу сейчас это редкость... + Из тебя может быть не плохой учитель, умеешь заинтриговать. |
|
Отправлено: 21:41, 05-02-2020 | #526 |
|
SHVtYW4= Сообщения: 3451
|
Профиль | Отправить PM | Цитировать Цитата Beavimo:
Например нужно чтоб установилось в определённой версии (Например Windows 7) и определённой разрядности (Например 32-разрядной ОС): [Components] Name: "a"; Description: "A"; Check: not IsWin64; MinVersion: 0,6.1; OnlyBelowVersion: 0,6.2 Или как ваш случай: Необходимо определять наличие компонента по наличию файла (или реестр). + Нужно определение вресии Windows + Разрядности = То почему бы не организовать что-то через код. В определённых случаях "IsWin64" в коде всё-равно нужен. Если "IsWin64" туда, то почему бы туда же не переместить и определение версии. Получается: Проще сделать 1 "; Check: xxx" чем для каждого городить по несколько. - Из серии (если не имеется возможности) |
|
|
------- Отправлено: 23:39, 05-02-2020 | #527 |
|
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать Здравствуйте Уважаемые. начинаю изучать, 3 день сижу читаю, башка закипает, и что то не выходит. Не откажите помочь.
Задача простейшая (ИМХО) Наверно у меня проблема с RegQueryStringValue или головой ))) 1. Есть папка 1 с файлами (как добавлять файлы - разобрался)) ее надо скопировать в папку которая указана в реестре по пути 1. HKEY_LOCAL_MACHINE\SOFTWARE\Avid\Studio\Main Path путь № 1 прописан (т.е он есть в наличии 100%) 2. Есть папка 2 с файлами ее надо скопировать в папку которая указана в реестре по пути 2. HKEY_LOCAL_MACHINE\SOFTWARE\Avid\Content\Content Path путь № 2 прописан (т.е он есть в наличии 100%) Вот в принципе пока задача в этом. если нужен скрипт того что я наваял. могу представить. Заранее спасибо. Питерцам могу пива налить ))) Удачи. |
|
Отправлено: 00:53, 06-02-2020 | #528 |
|
Alien Сообщения: 4262
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 02:00, 06-02-2020 | #529 |
|
Пользователь Сообщения: 76
|
Профиль | Отправить PM | Цитировать Nordek,
code
[Setup]
AppId={{B5C6D58E-3D57-4255-937B-36F6B94FFD7F}
AppName=TEST
AppVerName=TEST
OutputDir=userdocs:..\Desktop
CreateAppDir=no
Uninstallable=no
[*Code]
function VersionWindows (Major, Minor: Integer): Boolean; var
Version: TWindowsVersion;
begin
GetWindowsVersionEx(Version);
Result:=(Version.Major=Major) and (Version.Minor=Minor);
end;// Этот код проверяет версию Windows
function WindowsAll (): Boolean;
begin
Result:=VersionWindows(6,1);// Далее код будет выполнятся, только если установлена система (6.1)
end;// Этот код задает значение версии Windows
function Check_x86 (): Boolean;
begin
if not WindowsAll then
Result:=False
else begin
if not IsWin64 then
if not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages\Package_for_KB2533623_SP1~31bf3856ad364e35~amd64~~6.1.1.2') then
if MsgBox('Для полноценной работы TEST на Windows 7'#13' Будет установлено обновление << KB2533623 >>', mbInformation, MB_OK)=IDOK then
Result:=True
end
end;// Этот код проверяет наличие обновления << KB2533623 >> на 32-ух битной Windows 7, и устанавливает это обновление при его отсутствии выводя сообщение
function Check_x64 (): Boolean;
begin
if not WindowsAll then
Result:=False
else begin
if IsWin64 then
if not RegKeyExists(HKLM64, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages\Package_for_KB2533623_SP1~31bf3856ad364e35~amd64~~6.1.1.2') then
if MsgBox('Для полноценной работы TEST на Windows 7'#13' Будет установлено обновление << KB2533623 >>', mbInformation, MB_OK)=IDOK then
Result:=True
end
end;// Этот код проверяет наличие обновления << KB2533623 >> на 64-х битной Windows 7, и устанавливает это обновление при его отсутствии выводя сообщение
function UpdateCentre (): Boolean; var
UpdateCentreDWord: Cardinal;
begin
if RegQueryDWordValue(HKLM, 'SYSTEM\CurrentControlSet\services\wuauserv', 'Start', UpdateCentreDWord) then
if UpdateCentreDWord=4 then
MsgBox('Центр Обновления Windows 7 Отключен:'#13' <<<для продолжения установки>>>'#13'Включите Центр Обновления Windows 7:'#13' <<и повторите установку еще раз>>', mbCriticalError, MB_OK)
else begin
Result:=True
end
end;// Этот код проверяет включен ли Центр Обновления на Windows 7 выводя сообщение
<event('InitializeSetup')>
function InitializeSetup2 (): Boolean;
begin
if WindowsAll then
Result:=UpdateCentre
else begin
Result:=True;
end
end;
function ShouldSkipPage(PageID: Integer): Boolean;
begin
Result:=(PageID=wpSelectComponents);
end;// Этот код прячет страницу компонентов
[Components]
Name: File_x86; Description: KB2533623 for x86; Flags: exclusive restart; Check: Check_x86
Name: File_x64; Description: KB2533623 for x64; Flags: exclusive restart; Check: Check_x64
[Files]
Source: C:\Windows6.1-KB2533623-x86.msu; DestDir: {tmp}; Flags: deleteafterinstall;
Source: C:\Windows6.1-KB2533623-x64.msu; DestDir: {tmp}; Flags: deleteafterinstall;
[Run]
Filename: wusa.exe; Parameters: {tmp}\Windows6.1-KB2533623-x86.msu /quiet /norestart; StatusMsg:УСТАНОВКА ОБНОВЛЕНИЯ <<< KB2533623-x86 >>>; Components: File_x86; BeforeInstall: "Sleep(3000)"
Filename: wusa.exe; Parameters: {tmp}\Windows6.1-KB2533623-x64.msu /quiet /norestart; StatusMsg:УСТАНОВКА ОБНОВЛЕНИЯ <<< KB2533623-x64 >>>; Components: File_x64; BeforeInstall: "Sleep(3000)"
вот сочинил пьеску, это четверть от всего кода, на моем ФХ-се инсталятор летает, уже сутки колдую, и все время хочется больше... разговаривать его научить))) непонятно тока как организовать установку при установленом уже на ПК обновлении KB2533623, и выключеном Центре Обновления Windows, чтобы не прекращалась установка MsgBox-ом (Центр Обновления Windows 7 Отключен <<<для продолжения установки>>>)...бла...бла...бла... но то такое надо поспать и в бой потому как я уже просто схожу с ума. идей как говорится полно тока ришения подавай)))) как думаешь реально не прибегая к сторонниму софту на Инно сделать такой инсталлер? |
|
Последний раз редактировалось Beavimo, 06-02-2020 в 08:28. Отправлено: 07:29, 06-02-2020 | #530 |
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| Скрипты Inno Setup. Помощь и советы [часть 7] | El Sanchez | Автоматическая установка приложений | 2499 | 02-02-2015 08:59 | |
| Скрипты Inno Setup. Помощь и советы [часть 6] | El Sanchez | Автоматическая установка приложений | 2494 | 10-03-2014 11:51 | |
| Скрипты Inno Setup. Помощь и советы [часть 5] | El Sanchez | Автоматическая установка приложений | 1999 | 28-03-2013 19:09 | |
| Скрипты Inno Setup. Помощь и советы [часть 4] | El Sanchez | Автоматическая установка приложений | 2099 | 22-05-2012 23:16 | |
| Скрипты Inno Setup. Помощь и советы [часть 3] | Serega | Автоматическая установка приложений | 3755 | 26-10-2011 17:58 | |
|