将任务参数与 Inno 安装程序脚本中的注册表项项一起使用



我之前讨论过关于文件关联的任务。但是我突然想到了一些事情。

以下是任务定义:

[Tasks]
Name: "register32"; Description: "Meeting Schedule Assistant (32 bit)"; GroupDescription: "{cm:FileAssociations}"; Flags: unchecked exclusive; Check: IsWin64
Name: "register64"; Description: "Meeting Schedule Assistant (64 bit)"; GroupDescription: "{cm:FileAssociations}"; Flags: exclusive; Check: IsWin64

以下是注册表项:

[Registry]
; ==================================================
; Register File Types
Root: "HKCR"; Subkey: ".mwb"; ValueType: string; ValueData: "MeetSchedAssist.MWB"; Flags: uninsdeletevalue
Root: "HKCR"; Subkey: ".srr"; ValueType: string; ValueData: "MeetSchedAssist.SRR"; Flags: uninsdeletevalue
Root: "HKCR"; Subkey: "MeetSchedAssist.MWB"; ValueType: string; ValueData: "Meeting Workbook Schedule"; Flags: uninsdeletekey
Root: "HKCR"; Subkey: "MeetSchedAssist.SRR"; ValueType: string; ValueData: "Assignments Report"; Flags: uninsdeletekey
Root: "HKCR"; Subkey: "MeetSchedAssist.MWBShellOpenCommand"; ValueType: string; ValueData: """{app}{code:GetExecutableToRegister}"" ""%1"""; Flags: uninsdeletekey
Root: "HKCR"; Subkey: "MeetSchedAssist.SRRShellOpenCommand"; ValueType: string; ValueData: """{app}{code:GetExecutableToRegister}"" ""%1"""; Flags: uninsdeletekey
; ==================================================

上述注册表项不应该有Tasks参数吗?喜欢这个:

Root: "HKCR"; 
Subkey: ".mwb"; 
ValueType: string; 
ValueData: "MeetSchedAssist.MWB"; 
Flags: uninsdeletevalue; 
Tasks: register32 register64

我只是不确定,因为其中一个任务需要由用户勾选,而不是两个。

不,你不应该把Tasks: register32 register64放在那里。

您希望始终处理这些Registry条目,不是吗?

在 32 位系统上,不会处理条目,因为这两个任务都不存在(由于Check: IsWin64(。

您的任务仅用于选择可执行文件 (GetExecutableToRegister(,而不是选择是否创建密钥以及创建哪些键。

最新更新