Скрипты Inno Setup. Помощь и советы [часть 9]
-
El Sanchez
Re: Скрипты Inno Setup. Помощь и советы [часть 9]
proffbik, Для этого нужно задействовать секцию [Icons].
-
OldGamer
Re: Скрипты Inno Setup. Помощь и советы [часть 9]
Цитата Dodakaedr:
proffbik, Для этого нужно задействовать секцию [Icons].
Благодарю. Могу ли услышать подробнее для более четкого понимания? Если есть пример кода, то был бы очень признателен
Код:
proffbik, Для этого нужно задействовать секцию [Icons].
Скрипты Inno Setup. Помощь и советы [часть 9]
Благодарю. Могу ли услышать подробнее для более четкого понимания? Если есть пример кода, то был бы очень признателен
Код:
Код: Выделить всё
[Icons]
Name: "{group}\{#MyAppNameIcon}"; Filename: "{app}\{#MyAppExeName}"; WorkingDir: "{app}"; IconFilename: "{app}\game.ico"
Name: "{commondesktop}\{#MyAppNameIcon}"; Filename: "{app}\{#MyAppExeName}"; WorkingDir: "{app}"; IconFilename: "{app}\game.ico"; Tasks: desktopicon
Name: "{commonappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon-
OldGamer
Re: Скрипты Inno Setup. Помощь и советы [часть 9]
Цитата proffbik:
При создании скрипта через wizard, отмечаю "Разрешить пользователю отключить создание папки в меню пуск". В итоге этот выбор не предоставляется пользователю при установке. Помогите люди добрые)
Проверь наличие и значение в сценарии директивы
Должно быть AllowNoIcons=yes
При создании скрипта через wizard, отмечаю "Разрешить пользователю отключить создание папки в меню пуск". В итоге этот выбор не предоставляется пользователю при установке. Помогите люди добрые)
Скрипты Inno Setup. Помощь и советы [часть 9]
Проверь наличие и значение в сценарии директивы
AllowNoIcons
. Должно быть AllowNoIcons=yes
-
proffbik
Re: Скрипты Inno Setup. Помощь и советы [часть 9]
Цитата Flix:
Проверь наличие и значение в сценарии директивы AllowNoIcons.
Должно быть AllowNoIcons=yes
Благодарю. Решил проблему тем, что скачал версию 5.5.9 unicode и в ней как раз таки высветилась эта строчка AllowNoIcons=yes. А в более новых версиях она почему то не прикрепляется визардом)
Проверь наличие и значение в сценарии директивы AllowNoIcons.
Должно быть AllowNoIcons=yes
Скрипты Inno Setup. Помощь и советы [часть 9]
Благодарю. Решил проблему тем, что скачал версию 5.5.9 unicode и в ней как раз таки высветилась эта строчка AllowNoIcons=yes. А в более новых версиях она почему то не прикрепляется визардом)
-
Dodakaedr
Re: Скрипты Inno Setup. Помощь и советы [часть 9]
proffbik, Для этого нужно задействовать секцию [Icons].
-
proffbik
Re: Скрипты Inno Setup. Помощь и советы [часть 9]
Цитата proffbik:
Ничего из этого не работает. Есть варианты сделать это?
Примеры от El Sanchez все рабочие. Фуфло никто выкладывать не будет!.
Ничего из этого не работает. Есть варианты сделать это?
Примеры от El Sanchez все рабочие. Фуфло никто выкладывать не будет!.
-
Flix
Re: Скрипты Inno Setup. Помощь и советы [часть 9]
Ребята, всем привет. Такая проблема
создал батник, который запускаю вручную -- реестр успешно считывается
если запускаю этот же батник через [run] секцию уже в созданном Inno Setup приложении, то исполняется весь код успешно, кроме чтения реестра
Батник делает простое
Смотрит в реестре путь к игре и если есть потом пишет его в файл.
Писать в файл он может всё что угодно через Inno Setup (это проверено и работает)
Короче вот 2 варианта кода чтения ресстра (которые, повторюсь, рабочие и работают если их запускать вручную, но не хотят если запускать из Inno Setup в любом виде)
Код:
Код:
Я также написал код, который проверяет наличие реестра самим Inno Setup установщиком, но мне этот вариант нужен на самый крайний случай. Ведь я хочу динамическое обновление приложения посредством загрузки данных, а не статичный установщик, который надо будет переобновлять с выходом новой версии.
Пробовал запускать с правами админа, но в чём смысл если сам Inno Setup может читать, а батник нет, мне не подходит вариант даже если это заработает.
Также знаю что в 64 версиях внутри Inno Setup нужно писать HKEY_LOCAL_MACHINE_64
я это пробовал и в батнике (думал вдруг связь есть)
но нет, не помогает
Кто справится с первого раза получит 1000₽ по номеру телефона. Кто не с первого 700₽ (под разом подразумевается выдача готового решения)
Спасибо
создал батник, который запускаю вручную -- реестр успешно считывается
если запускаю этот же батник через [run] секцию уже в созданном Inno Setup приложении, то исполняется весь код успешно, кроме чтения реестра
Батник делает простое
Смотрит в реестре путь к игре и если есть потом пишет его в файл.
Писать в файл он может всё что угодно через Inno Setup (это проверено и работает)
Короче вот 2 варианта кода чтения ресстра (которые, повторюсь, рабочие и работают если их запускать вручную, но не хотят если запускать из Inno Setup в любом виде)
Код:
Код: Выделить всё
rem Получаем путь к установке Brawlhalla из реестра
for /f "tokens=2*" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 291550" /v "InstallLocation"') do (
set "registry=%%b"
)Код:
Код: Выделить всё
powershell -Command "& { $registryPath = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 291550'; $valueName = 'InstallLocation'; $installLocation = Get-ItemProperty -Path $registryPath -Name $valueName | Select-Object -ExpandProperty $valueName; $iconPath = Join-Path -Path $installLocation -ChildPath 'Brawlhalla.exe'; $appDataPath = [System.Environment]::GetFolderPath('ApplicationData'); $hubFilePath = 'Brawlhalla\hub.omx'; if (Test-Path $hubFilePath) { [xml]$xmlContent = Get-Content -Path $hubFilePath; $iconNode = $xmlContent.SelectSingleNode('//icon'); $iconNode.InnerText = $iconPath; $xmlContent.Save($hubFilePath); } }"Я также написал код, который проверяет наличие реестра самим Inno Setup установщиком, но мне этот вариант нужен на самый крайний случай. Ведь я хочу динамическое обновление приложения посредством загрузки данных, а не статичный установщик, который надо будет переобновлять с выходом новой версии.
Пробовал запускать с правами админа, но в чём смысл если сам Inno Setup может читать, а батник нет, мне не подходит вариант даже если это заработает.
Также знаю что в 64 версиях внутри Inno Setup нужно писать HKEY_LOCAL_MACHINE_64
я это пробовал и в батнике (думал вдруг связь есть)
но нет, не помогает
Кто справится с первого раза получит 1000₽ по номеру телефона. Кто не с первого 700₽ (под разом подразумевается выдача готового решения)
Спасибо
-
proffbik
Re: Скрипты Inno Setup. Помощь и советы [часть 9]
Цитата lmiol:
Батник делает простое
Смотрит в реестре путь к игре и если есть потом пишет его в файл.
lmiol, reg.exe он разных разрядностей бывает. В зависимости от окружения, 32- или 64-разрядного, из которого вызвали батник, будет вызван 32- или 64-разрядный reg.exe. Только вот 64-разрядный reg при таком запросе полезет искать в 64-разрядный раздел HKLM\SOFTWARE, 32-разрядный reg в 32-разрядный HKLM\SOFTWARE, который фактически является HKLM\SOFTWARE\WOW6432Node. Steam пишет в 64-разрядный раздел, понятно, что 32-разрядный reg или 32-разрядный Inno, вызывающий 32-разрядный reg, ничего не найдут в 32-разрядном разделе. Начитавшись инторнетов, умники в батниках или ещё где явно пишут WOW6432Node, не думая о разрядности вызывающего, потом в 32-разрядных системах в реестре появляется раздел WOW6432Node, которого быть там не должно, или на 64-разрядных системах в 32-разрядном разделе появляется лишний HKLM\SOFTWARE\WOW6432Node\WOW6432Node.
Чтобы такого не происходило, лучше в reg при запросе сразу указывать в какую ветку лезть параметрами /reg:32 или /reg:64, в таком случае разрядность reg не имеет значения.
Код:
Батник делает простое
Смотрит в реестре путь к игре и если есть потом пишет его в файл.
Скрипты Inno Setup. Помощь и советы [часть 9]
lmiol, reg.exe он разных разрядностей бывает. В зависимости от окружения, 32- или 64-разрядного, из которого вызвали батник, будет вызван 32- или 64-разрядный reg.exe. Только вот 64-разрядный reg при таком запросе полезет искать в 64-разрядный раздел HKLM\SOFTWARE, 32-разрядный reg в 32-разрядный HKLM\SOFTWARE, который фактически является HKLM\SOFTWARE\WOW6432Node. Steam пишет в 64-разрядный раздел, понятно, что 32-разрядный reg или 32-разрядный Inno, вызывающий 32-разрядный reg, ничего не найдут в 32-разрядном разделе. Начитавшись инторнетов, умники в батниках или ещё где явно пишут WOW6432Node, не думая о разрядности вызывающего, потом в 32-разрядных системах в реестре появляется раздел WOW6432Node, которого быть там не должно, или на 64-разрядных системах в 32-разрядном разделе появляется лишний HKLM\SOFTWARE\WOW6432Node\WOW6432Node.
Чтобы такого не происходило, лучше в reg при запросе сразу указывать в какую ветку лезть параметрами /reg:32 или /reg:64, в таком случае разрядность reg не имеет значения.
Код:
Код: Выделить всё
function GetSteamAppInstallLocation(const AAppID: Integer): string;
var
LSubkeyName: string;
begin
Result := '';
LSubkeyName := Format('SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam App %u', [AAppID]);
if IsWin64() then
begin
if RegQueryStringValue(HKCU64, LSubkeyName, 'InstallLocation', Result) and
(Result '') then Exit;
if RegQueryStringValue(HKLM64, LSubkeyName, 'InstallLocation', Result) and
(Result '') then Exit;
end;
if RegQueryStringValue(HKCU32, LSubkeyName, 'InstallLocation', Result) and
(Result '') then Exit;
RegQueryStringValue(HKLM32, LSubkeyName, 'InstallLocation', Result);
end;
procedure InitializeWizard();
begin
MsgBox(GetSteamAppInstallLocation(291550), mbInformation, MB_OK);
end;
-
proffbik
Re: Скрипты Inno Setup. Помощь и советы [часть 9]
Цитата El Sanchez:
lmiol, reg.exe он разных разрядностей бывает. В зависимости от окружения, 32- или 64-разрядного, из которого вызвали батник, будет вызван 32- или 64-разрядный reg.exe. Только вот 64-разрядный reg при таком запросе полезет искать в 64-разрядный раздел HKLM\SOFTWARE, 32-разрядный reg в 32-разрядный HKLM\SOFTWARE, который фактически является HKLM\SOFTWARE\WOW6432Node. Steam пишет в 64-разрядный раздел, понятно, что 32-разрядный reg или 32-разрядный Inno, вызывающий 32-разрядный reg, ничего не найдут в 32-разрядном разделе. Начитавшись инторнетов, умники в батниках или ещё где явно пишут WOW6432Node, не думая о разрядности вызывающего, потом в 32-разрядных системах в реестре появляется раздел WOW6432Node, которого быть там не должно, или на 64-разрядных системах в 32-разрядном разделе появляется лишний HKLM\SOFTWARE\WOW6432Node\WOW6432Node.
Чтобы такого не происходило, лучше в reg при запросе сразу указывать в какую ветку лезть параметрами /reg:32 или /reg:64, в таком случае разрядность reg не имеет значения.
Я же уже написал в сообщении что знаю как проверять реестр через inno setup. Мне это не нужно, у меня уже есть готовый код.
И повторяю еще раз. Делая реестр через Inno setup будет означать что и данные приложения будут захардкожены в установщике. Т.е. отдельный установщик - отдельные проверки на реестр или если другими словами то новая версия приложения означает что мне надо новый установщик собирать. Моя задача была сделать Inno Setup установщик один а данные чтобы всегда скачивались вместе с батником, в котором уже будет прописана логика. И при апдейте приложения я и батник обновлю. Иными словами это будет один установщик и разные данные приложения, включая разное чтение реестра.
Я еще раз повторяю мой батник успешно читает что угодно (путь текущий например) и успешно всё это пишет в нужный мне файл (когда запускается через inno setup), вот только считать данные с реестра он не может (зато может когда я запускаю его вручную из под винды). Код считывания с реестра батником я приложил
Я ничего не пишу в реестр мне только надо считать с него и всё
PS я проверю твое предположение про WOW6432Node и прочее
если поможет -- отпишусь
lmiol, reg.exe он разных разрядностей бывает. В зависимости от окружения, 32- или 64-разрядного, из которого вызвали батник, будет вызван 32- или 64-разрядный reg.exe. Только вот 64-разрядный reg при таком запросе полезет искать в 64-разрядный раздел HKLM\SOFTWARE, 32-разрядный reg в 32-разрядный HKLM\SOFTWARE, который фактически является HKLM\SOFTWARE\WOW6432Node. Steam пишет в 64-разрядный раздел, понятно, что 32-разрядный reg или 32-разрядный Inno, вызывающий 32-разрядный reg, ничего не найдут в 32-разрядном разделе. Начитавшись инторнетов, умники в батниках или ещё где явно пишут WOW6432Node, не думая о разрядности вызывающего, потом в 32-разрядных системах в реестре появляется раздел WOW6432Node, которого быть там не должно, или на 64-разрядных системах в 32-разрядном разделе появляется лишний HKLM\SOFTWARE\WOW6432Node\WOW6432Node.
Чтобы такого не происходило, лучше в reg при запросе сразу указывать в какую ветку лезть параметрами /reg:32 или /reg:64, в таком случае разрядность reg не имеет значения.
Скрипты Inno Setup. Помощь и советы [часть 9]
Я же уже написал в сообщении что знаю как проверять реестр через inno setup. Мне это не нужно, у меня уже есть готовый код.
И повторяю еще раз. Делая реестр через Inno setup будет означать что и данные приложения будут захардкожены в установщике. Т.е. отдельный установщик - отдельные проверки на реестр или если другими словами то новая версия приложения означает что мне надо новый установщик собирать. Моя задача была сделать Inno Setup установщик один а данные чтобы всегда скачивались вместе с батником, в котором уже будет прописана логика. И при апдейте приложения я и батник обновлю. Иными словами это будет один установщик и разные данные приложения, включая разное чтение реестра.
Я еще раз повторяю мой батник успешно читает что угодно (путь текущий например) и успешно всё это пишет в нужный мне файл (когда запускается через inno setup), вот только считать данные с реестра он не может (зато может когда я запускаю его вручную из под винды). Код считывания с реестра батником я приложил
Я ничего не пишу в реестр мне только надо считать с него и всё
PS я проверю твое предположение про WOW6432Node и прочее
если поможет -- отпишусь
-
lmiol
Re: Скрипты Inno Setup. Помощь и советы [часть 9]
Цитата proffbik:
Ничего из этого не работает. Есть варианты сделать это?
Примеры от El Sanchez все рабочие. Фуфло никто выкладывать не будет!.
Ничего из этого не работает. Есть варианты сделать это?
Примеры от El Sanchez все рабочие. Фуфло никто выкладывать не будет!.
- Вложения