|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 9] |
|
Скрипты Inno Setup. Помощь и советы [часть 9]
|
Ветеран Сообщения: 1270 |
Профиль | Отправить PM | Цитировать
Внимание! Данная тема предназначена только для обсуждения написания скриптов!
Остальные вопросы, а также последние версии компилятора в теме 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 |
Пользователь Сообщения: 67
|
Профиль | Отправить 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 |
Пользователь Сообщения: 67
|
Профиль | Отправить PM | Цитировать Nordek, огромное спасибо что откликнулся... буду разбиратся
|
Последний раз редактировалось Beavimo, 05-02-2020 в 02:35. Отправлено: 23:36, 04-02-2020 | #523 |
Пользователь Сообщения: 67
|
Профиль | Отправить 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 |
Пользователь Сообщения: 67
|
Профиль | Отправить 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 |
Пользователь Сообщения: 67
|
Профиль | Отправить 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 |
|