Inno setup Inno设置允许用户选择与哪个应用程序关联扩展

Inno setup Inno设置允许用户选择与哪个应用程序关联扩展,inno-setup,Inno Setup,我有一个安装项目,安装三个不同的可执行文件 我想让用户选择将多个文件扩展名与其中一个EXE关联,或者不与任何EXE关联。这可能吗?如果可能,怎么可能 我当前用于将单个程序与文件扩展名关联的代码是: [Registry] Root: HKCR; Subkey: "program1\DefaultIcon"; ValueType: string; \ ValueName: ""; ValueData: "{app}\program1.EXE,0" Root: HKCR; Subkey

我有一个安装项目,安装三个不同的可执行文件

我想让用户选择将多个文件扩展名与其中一个EXE关联,或者不与任何EXE关联。这可能吗?如果可能,怎么可能

我当前用于将单个程序与文件扩展名关联的代码是:

[Registry]
Root: HKCR; Subkey: "program1\DefaultIcon"; ValueType: string; \    
    ValueName: ""; ValueData: "{app}\program1.EXE,0"
Root: HKCR; Subkey: "program1\shell\open\command"; ValueType: string; \
    ValueName: ""; ValueData: """{app}\program1.exe"" ""%1"""
您可以使用来显示选择

例如:

[Tasks]
Name: associate; Description: "Associate application with extension"
Name: associate\app1; Description: "Application 1"; Flags: exclusive
Name: associate\app2; Description: "Application 2"; Flags: exclusive unchecked
Name: associate\app3; Description: "Application 3"; Flags: exclusive unchecked


然后使用相应部分中的来选择正确的注册操作

在你的情况下(协会),它将是

  • ,如果您让安装程序进行注册或
  • ,如果您将注册委托给某个应用程序

[Registry]
部分条目的示例:

[Registry]
Root: HKCR; Subkey: "program1\DefaultIcon"; ValueType: string; ValueName: ""; \
    ValueData: "{app}\program1.EXE,0"; Tasks: associate\app1
Root: HKCR; Subkey: "program1\shell\open\command"; ValueType: string; ValueName: ""; \
    ValueData: """{app}\program1.exe"" ""%1"""; Tasks: associate\app1

Root: HKCR; Subkey: "program1\DefaultIcon"; ValueType: string; ValueName: ""; \
    ValueData: "{app}\program2.EXE,0"; Tasks: associate\app2
Root: HKCR; Subkey: "program1\shell\open\command"; ValueType: string; ValueName: ""; \
    ValueData: """{app}\program2.exe"" ""%1"""; Tasks: associate\app2

Root: HKCR; Subkey: "program1\DefaultIcon"; ValueType: string; ValueName: ""; \
    ValueData: "{app}\program3.EXE,0"; Tasks: associate\app3
Root: HKCR; Subkey: "program1\shell\open\command"; ValueType: string; ValueName: ""; \
    ValueData: """{app}\program3.exe"" ""%1"""; Tasks: associate\app3
(我不确定您的
程序1
键是否应该是扩展名或文件类型?)


要避免重复几乎相同的
注册表
项,可以使用:

[注册表]
词根:香港华润;;子键:“program1\DefaultIcon”;ValueType:字符串;值名称:“”\
ValueData:“{app}\{code:AssociateExecutable},0”;任务:助理
词根:香港华润;;子键:“program1\shell\open\command”;ValueType:字符串;值名称:“”\
ValueData:“{app}\{代码:AssociateExecutable}”“%1”“;任务:助理
[守则]
函数AssociateExecutable(参数:string):string;
开始
如果选择了IsTaskSelected('associate\app1'),则结果:='program1.exe'
其他的
如果选择了IsTaskSelected('associate\app2'),则结果:='program2.exe'
其他的
如果选择了IsTaskSelected('associate\app3'),则结果:='program3.exe'
其他的
开始
日志(“未选择应用程序,不应发生此情况”);
结果:='';
结束;
结束;

这是一个相当广泛的问题。任务的哪一部分你有问题?扩展的关联?或者选择与扩展关联的应用程序?谢谢-我认为它非常具体:)。我有3个程序1.exe、2.exe和3.exe,都是与inno安装程序一起安装的。我希望有2个扩展与programs.ext1和.ext2中的一个或任何一个相关联。我希望我的用户能够在安装过程中选择是否与1.exe、2、exe、,我列出的两个扩展名都是3.exe或nothing所以选择有问题,对吗?你已经知道如何关联这些程序了吗?是的-这是如何使选择成为可选的-更新了我的原始帖子