Я читаю документацию здесь о том, что нового в Inno Setup v6 . Цитировать:
Добавлен новый [Registry]
раздел Root
значение HKA
. В режиме административной установки равно HKLM
, в противном случае - HKCU
. Также поддерживается
{reg:...}
константы и HKA32
/ HKA64
также поддерживаются. Примечание: HKA
(например, HKCU
) следует использовать только для настроек, совместимых с
перемещаемые профили.
Использование [Registry]
сечения Root
значение HKCR
больше не рекомендуется, используйте HKA
с параметром Subkey
, установленным на "Software\Classes"
.
У меня есть следующие 4 записи реестра:
; AJT v19.0.0 Download Help Documentation
; This registry key value is used by the Help Ribbon Panel.
; We set the preference registry value "DownloadHelpDocumentation"
; to 1 if the "downloadhelp" task was selected.
Root: "HKLM"; Subkey: "Software\Community Talks\Public Talks\Preferences"; \
ValueType: dword; \
ValueName: "DownloadHelpDocumentation"; \
ValueData: "1"; \
Flags: uninsdeletevalue; \
Tasks: downloadhelp;
Root: "HKLM64"; Subkey: "Software\Community Talks\Public Talks\Preferences"; \
ValueType: dword; \
ValueName: "DownloadHelpDocumentation"; \
ValueData: "1"; \
Flags: uninsdeletevalue; \
Check: IsWin64; \
Tasks: downloadhelp;
; We set the preference registry value "DownloadHelpDocumentation"
; to 0 if the "downloadhelp" task was NOT selected.
Root: "HKLM"; Subkey: "Software\Community Talks\Public Talks\Preferences"; \
ValueType: dword; \
ValueName: "DownloadHelpDocumentation"; \
ValueData: "0"; \
Flags: uninsdeletevalue; \
Tasks: not downloadhelp;
Root: "HKLM64"; Subkey: "Software\Community Talks\Public Talks\Preferences"; \
ValueType: dword; \
ValueName: "DownloadHelpDocumentation"; \
ValueData: "0"; \
Flags: uninsdeletevalue; \
Check: IsWin64; \
Tasks: not downloadhelp;
Мне было интересно, смогу ли я упростить сценарий до двух записей в реестре выше или даже до одной, если ValueData
можно определить программным путем.
Есть две вещи:
HKLM
или HLM64
ValueData
из 1
или 0
Но цитируемая статья относится к HKA -> HKLM или HKCU. Так что это не одно и то же. Признаюсь, я не совсем понимаю разницу между использованием HKLM или HKLM64.
Мне нужно четыре записи в скрипте?
Обновление
Я видел этот похожий вопрос , который охватывает часть проблемы. Теперь я уменьшил его до двух записей:
; AJT v19.0.0 Download Help Documentation
; This registry key value is used by the Help Ribbon Panel.
; We set the preference registry value "DownloadHelpDocumentation"
; - to 1 if the "downloadhelp" task was selected.
; - to 0 if the "downloadhelp" task was NOT selected.
Root: "HKLM"; Subkey: "Software\Community Talks\Public Talks\Preferences"; \
ValueType: dword; \
ValueName: "DownloadHelpDocumentation"; \
ValueData: "{code:DownloadHelpDocumentation_ValueData}"; \
Flags: uninsdeletevalue
Root: "HKLM64"; Subkey: "Software\Community Talks\Public Talks\Preferences"; \
ValueType: dword; \
ValueName: "DownloadHelpDocumentation"; \
ValueData: "{code:DownloadHelpDocumentation_ValueData}"; \
Flags: uninsdeletevalue; \
Check: IsWin64
- Я добавил бит
{code:...}
для ValueData
.
- Я удалил
Task: downloadhelp
и т. Д. Биты.
- Я добавил:
// Converts a Boolean to a String
function BoolToStr(bValue: boolean): string;
begin
if(bValue = true) then
result := '1'
else
result := '0';
end;
// AJT v19.0.0 Returns the selected task state
function DownloadHelpDocumentation_ValueData(Param: string): string;
begin
result := BoolToStr(WizardIsTaskSelected('downloadhelp'));
end;
Обновление
Глядя здесь В нем говорится:
Значение корневого ключа без суффикса (например, HKLM
) эквивалентно значению с суффиксом 32 (например, HKLM32
), если только установка не выполняется в 64-битном режиме установки , в этом случае оно эквивалентно значению с суффиксом 64 (например, HKLM64
).
В моем случае я не использовал ArchitecturesInstallIn64BitMode
в своем скрипте. Это связано с тем, что мой сценарий устанавливается как для 32-разрядных, так и для 64-разрядных.
Вот почему я запутался. С моей точки зрения, пользователь будет запускать мое программное обеспечение в одной из трех сред:
- Запуск 32-битного приложения в 32-битной Windows
Я понимаю, это означает, что реестр будет просто HKLM.
- Запуск 32-битного приложения в 64-битной Windows
Я понимаю, это означает, что реестр будет HKLM ... \ WOW6432Node.
- Запуск 64-битного приложения в 64-битной Windows
Я понимаю, это означает, что реестр будет просто HKLM.
Таким образом, я думаю, что тогда у меня должны быть две записи, чтобы охватить оба местоположения битовых изданий.