可以在此脚本中减少注册表项的数量吗?

时间:2019-06-04 09:01:09

标签: inno-setup

我正在阅读有关{strong> Inno Setup v6 中的新增功能的文档here。引用:

  
      
  • 添加了新的[Registry]部分RootHKA。在管理安装模式下等于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呢?

有两件事发生:

  1. HKLMHLM64
  2. {{1}中的ValueData1

但引用的文章指的是HKA-> HKLM或HKCU。所以这不是同一回事。我承认我不太了解使用HKLM还是HKLM64的区别。

我在脚本中需要四个条目吗?


更新

我看到了类似的question,其中涵盖了部分问题。我现在将其减少为两个条目:

0
  • 我为; 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

更新

here,它指出:

  

不带后缀的根密钥值(例如// 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; )等效于带后缀32的值(例如HKLM),除非安装在{{3}中运行},在这种情况下,它等于后缀为64的值(例如HKLM32)。

就我而言,我没有在脚本中使用64-bit install mode。这是因为我的脚本同时安装了32位和64位。

这就是为什么我感到困惑。从我的角度来看,用户将在以下三种环境之一中运行我的软件:

  1. 在32位Windows上运行32位应用

我理解这意味着注册表将完全是HKLM。

  1. 在64位Windows上运行32位应用

我理解这意味着注册表将是HKLM ... \ WOW6432Node。

  1. 在64位Windows上运行64位应用

我理解这意味着注册表将完全是HKLM。

因此,我认为我必须先输入两个条目,这样才能涵盖两个位版本位置。

0 个答案:

没有答案