Использование InnoSetup для выполнения сложных изменений реестра - PullRequest
0 голосов
/ 02 ноября 2018

В Windows 10 Microsoft представила несколько новых голосов. Тем не менее, они перечислены только в

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens\

enter image description here

Это означает, что они доступны только для 64-разрядных приложений, поскольку они не отображаются в списке установленных голосов при обращении к Microsoft.Speech в рамках NET.

Обходной путь - экспортировать раздел реестра и заменить все вхождения

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens\

с этим текстом

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\SPEECH\Voices\Tokens\

и затем импортируйте этот измененный раздел реестра в реестр. Это делает голоса доступными и для 32-битных приложений.

Я хотел бы сделать это автоматически для всех доступных голосов Microsoft во время настройки моего приложения, а не только для этого одного голоса.

Выполнение этого для всех голосов означало бы перебирать реестр, видеть, какие голоса есть, проверять, принадлежат ли они Microsoft, проверять, существуют ли они уже в

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\SPEECH\Voices\Tokens\, 

затем дублирует 64-битный ключ. Это довольно сложный процесс.

Какой рекомендуемый способ сделать это?

Должно ли это быть запрограммировано в приложении, а затем запускать это приложение во время установки?

...