|
Компьютерный форум 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 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата ErikPshat:
|
|
Отправлено: 08:07, 23-01-2019 | #221 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 54
|
Профиль | Отправить PM | Цитировать Iska, ну допустим, пусть будет даже и так. Это ядро пока ещё не зарелизено на оффсайте, там давно уже лежит версия 5.1 и она давно не обновляется. Но разве это на что-то влияет? Предположим программе требуется для её стабильной работы версия 5.1, не меньше, но конечно же можно старше и если у юзера установлена меньшая версия, тогда ему предлагается обновиться как минимум на требуемую 5.1. И что это меняет, для работы моей программы, даже если завтра выйдет PS 6,0, потом 7.0 и так далее? Но они же будут не меньше 5.1, а если у юзера установлена более свежая версия, тогда логично ему и не будет предлагаться скачать и установить 5.1.
Ну я так понял, это просто опровержение моих слов типа "мало вероятно что предвидится" |
Отправлено: 09:00, 23-01-2019 | #222 |
Ветеран Сообщения: 1270
|
Профиль | Отправить PM | Цитировать Цитата ErikPshat:
Цитата ErikPshat:
Цитата ErikPshat:
|
|||
Отправлено: 10:44, 23-01-2019 | #223 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать ErikPshat, мы уже поимели версию ОС Windows за номером 10.0 сразу после версии 6.3. Так что не зарекайтесь.
|
Отправлено: 17:19, 23-01-2019 | #224 |
Пользователь Сообщения: 54
|
Профиль | Отправить PM | Цитировать El Sanchez, ещё раз благодарю за помощь и разъяснения! Потихоньку кое-что проясняется.
Есть ещё один один момент, который я оказывается упустил. Дело в том, что на Windows Vista идёт версия PS 1.0, на Windows 7 идёт из коробки версия PS 2.0 и что самое важное, они прописываются по другому пути в реестре, там разница в цифре 1 в пути: А, начиная с Windows 8.0 PS 3.0 в пути вместо 1 идёт 3. Получается, что на 7-ке будет возвращаться пустая строка, как и в Vista (но ей пристального внимания уже не уделяем). Тогда получается, нужно добавить условие проверки ключа реестра под 7-ку. Правильно ли будет, если я сделаю так: if not RegQueryStringValue(HKLM,'SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine','PowerShellVersion',PSVersion) or not RegQueryStringValue(HKLM,'SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine','PowerShellVersion',PSVersion) or (StrCmpLogicalW(PSVersion, '5.1') < 0) then Цитата Iska:
Цитата El Sanchez:
Тогда при сравнении 10. < 5.1 разве система не поймёт, что нужно сравнивать цифры до точки, а потом после точки. Если стоит точка, тогда думаю система должна определять, что это дробная запятая и, если после точки ничего не стоит, то это означает 0, т.е. 10.0 < 5.1. Это конечно можно проверить на практике, но пока это так, размышления и аналитическая деятельность. |
||
Отправлено: 19:39, 23-01-2019 | #225 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата ErikPshat:
AutoIt
AutoItSetOption("MustDeclareVars", 1) ConsoleWrite( _ "Returns 0 if the strings are identical." & @CRLF & _ "Returns 1 if the string pointed to by psz1 has a greater value than that pointed to by psz2." & @CRLF & _ "Returns -1 if the string pointed to by psz1 has a lesser value than that pointed to by psz2." & @CRLF & @CRLF _ ) ConsoleWrite("1 w/s 5 ==> " & String(_StrCmpLogicalW("1", "5" )) & @CRLF) ConsoleWrite("1 w/s 5.0 ==> " & String(_StrCmpLogicalW("1", "5.0")) & @CRLF) ConsoleWrite("1.0 w/s 5 ==> " & String(_StrCmpLogicalW("1.0", "5" )) & @CRLF) ConsoleWrite("1.0 w/s 5.0 ==> " & String(_StrCmpLogicalW("1.0", "5.0")) & @CRLF) ConsoleWrite(@CRLF) ConsoleWrite("10 w/s 5 ==> " & String(_StrCmpLogicalW("10", "5" )) & @CRLF) ConsoleWrite("10 w/s 5.0 ==> " & String(_StrCmpLogicalW("10", "5.0")) & @CRLF) ConsoleWrite("10.0 w/s 5 ==> " & String(_StrCmpLogicalW("10.0", "5" )) & @CRLF) ConsoleWrite("10.0 w/s 5.0 ==> " & String(_StrCmpLogicalW("10.0", "5.0")) & @CRLF) ConsoleWrite(@CRLF) ConsoleWrite("10 w/s 10 ==> " & String(_StrCmpLogicalW("10", "10" )) & @CRLF) ConsoleWrite("10 w/s 10.0 ==> " & String(_StrCmpLogicalW("10", "10.0")) & @CRLF) ConsoleWrite("10.0 w/s 10 ==> " & String(_StrCmpLogicalW("10.0", "10" )) & @CRLF) ConsoleWrite("10.0 w/s 10.0 ==> " & String(_StrCmpLogicalW("10.0", "10.0")) & @CRLF) Exit(0) Func _StrCmpLogicalW($s1, $s2) Return DllCall('shlwapi.dll', 'int', 'StrCmpLogicalW', 'wstr', $s1, 'wstr', $s2)[0] EndFunc Цитата:
Отдельное внимание на последнюю группу. |
||
Отправлено: 20:09, 23-01-2019 | #226 |
Ветеран Сообщения: 1270
|
Профиль | Отправить PM | Цитировать Цитата ErikPshat:
Цитата ErikPshat:
Цитата Iska:
|
|||
Отправлено: 21:42, 23-01-2019 | #227 |
Пользователь Сообщения: 54
|
Профиль | Отправить PM | Цитировать Iska, El Sanchez, ага, спасибо! Понятно, значит идёт посимвольное сравнение как текст, а не как цифры.
Да, я это на практике проверил, поменял в реестре версию PS, просто добавил 1 спереди, получилось 15.1 ))) Оказывается для 64-битки путь автоматически в реестре меняется на Wow6432Node: И вывел через MsgBox версию, чтобы воочию убедиться верно ли возвращает: Ну и далее пошло скачивание и установка, т.е. условие сравнения не выполнилось правильно. То есть, вы правы, сравнение идёт посимвольно и никакие точки, запятые, дроби тут не учитываются. Ещё нашёл функцию в Inno Preprocessor - DecodeVer и EncodeVer, но не понял, почему она не задействуется сразу, хотя вроде бы функция объявлена изначально по умолчанию. |
Отправлено: 00:26, 24-01-2019 | #228 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата El Sanchez:
Но зато пишут не менее интересное: Цитата:
Цитата ErikPshat:
Скрытый текст
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell] "DisablePromptToUpdateHelp"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1] "Install"=dword:00000001 "PID"="89383-100-0001260-04309" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\0409] "Install"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine] "ApplicationBase"="C:\\Windows\\System32\\WindowsPowerShell\\v1.0" "PSCompatibleVersion"="1.0, 2.0" "RuntimeVersion"="v2.0.50727" "ConsoleHostAssemblyName"="Microsoft.PowerShell.ConsoleHost, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, ProcessorArchitecture=msil" "ConsoleHostModuleName"="C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\Microsoft.PowerShell.ConsoleHost.dll" "PowerShellVersion"="2.0" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PSConfigurationProviders] [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PSConfigurationProviders\Microsoft.PowerShell] "ApplicationBase"="C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\" "AssemblyName"="System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, ProcessorArchitecture=msil" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds] [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell] "Path"="C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" "ExecutionPolicy"="RemoteSigned" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\ScriptedDiagnostics] "ExecutionPolicy"="Unrestricted" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3] "ConsoleHostShortcutTargetX86"=hex(2):25,00,50,00,72,00,6f,00,67,00,72,00,61,\ 00,6d,00,44,00,61,00,74,00,61,00,25,00,5c,00,4d,00,69,00,63,00,72,00,6f,00,\ 73,00,6f,00,66,00,74,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,5c,\ 00,53,00,74,00,61,00,72,00,74,00,20,00,4d,00,65,00,6e,00,75,00,5c,00,50,00,\ 72,00,6f,00,67,00,72,00,61,00,6d,00,73,00,5c,00,41,00,63,00,63,00,65,00,73,\ 00,73,00,6f,00,72,00,69,00,65,00,73,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,\ 77,00,73,00,20,00,50,00,6f,00,77,00,65,00,72,00,53,00,68,00,65,00,6c,00,6c,\ 00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,20,00,50,00,6f,00,77,00,\ 65,00,72,00,53,00,68,00,65,00,6c,00,6c,00,20,00,28,00,78,00,38,00,36,00,29,\ 00,2e,00,6c,00,6e,00,6b,00,00,00 "ConsoleHostShortcutTarget"=hex(2):25,00,50,00,72,00,6f,00,67,00,72,00,61,00,\ 6d,00,44,00,61,00,74,00,61,00,25,00,5c,00,4d,00,69,00,63,00,72,00,6f,00,73,\ 00,6f,00,66,00,74,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,5c,00,\ 53,00,74,00,61,00,72,00,74,00,20,00,4d,00,65,00,6e,00,75,00,5c,00,50,00,72,\ 00,6f,00,67,00,72,00,61,00,6d,00,73,00,5c,00,41,00,63,00,63,00,65,00,73,00,\ 73,00,6f,00,72,00,69,00,65,00,73,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,\ 00,73,00,20,00,50,00,6f,00,77,00,65,00,72,00,53,00,68,00,65,00,6c,00,6c,00,\ 5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,20,00,50,00,6f,00,77,00,65,\ 00,72,00,53,00,68,00,65,00,6c,00,6c,00,2e,00,6c,00,6e,00,6b,00,00,00 "Install"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3\0409] "Install"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine] "ApplicationBase"="C:\\Windows\\System32\\WindowsPowerShell\\v1.0" "PSPluginWkrModuleName"="C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\system.management.automation.dll" "PSCompatibleVersion"="1.0, 2.0, 3.0, 4.0, 5.0, 5.1" "RuntimeVersion"="v4.0.30319" "ConsoleHostAssemblyName"="Microsoft.PowerShell.ConsoleHost, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, ProcessorArchitecture=msil" "ConsoleHostModuleName"="C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\Microsoft.PowerShell.ConsoleHost.dll" "PowerShellVersion"="5.1.14409.1005" |
|||
Отправлено: 06:51, 24-01-2019 | #229 |
Пользователь Сообщения: 54
|
Профиль | Отправить PM | Цитировать Iska, ну да, у меня то же самое. Просто я говорю о том, что по обычному пути поменял версию PowerShell, потом удивился, что как на скриншоте выше версия не изменилась. Сначала не понял, что за фокусы, подумал, может быть изменения не применились, перезагрузился, снова скомпилировал и опять показывает мне ответ 5.1, хотя я поменял на 15.1 ))) Потом вспомнил об этой ветке реестра, полез туда и там поменял, тогда оно и показалось во всей красе. Ну это я просто так написал, вдруг кому по ходу дела пригодится. Правда, чтобы сменить версию PS в реестре, пришлось себя владельцем ветки сделать, а потом и права выдать :D.
|
Отправлено: 08:11, 24-01-2019 | #230 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Скрипты 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 |
|