无法设置文件关联的注册表

时间:2014-04-21 09:19:49

标签: registry inno-setup libvlc file-association

我正在尝试将.mpg视频文件与我的视频播放器相关联。但只有当我禁用了Windows媒体播放器时才会关联它。启用Windows媒体播放器后,它无法关联。请帮助我这方面。谢谢。

/ 这是我的inno脚本代码 /

[setup]
ChangesAssociations=yes


 [registry]
    Root: HKLM; Subkey: "Software\Classes\VideoPlayer.AssocFile.mpg"; ValueType: String; ValueData: "MPEG video file"; Flags: uninsdeletekey
    Root: HKLM; Subkey: "Software\Classes\VideoPlayer.AssocFile.mpg\DefaultIcon"; ValueType: String; ValueData: "{app}\{#MyAppExeName},0"; Flags: uninsdeletekey
    Root: HKLM; Subkey: "Software\Classes\VideoPlayer.AssocFile.mpg\Shell\Open"; ValueName: Icon; ValueType: String; ValueData: "{app}\{#MyAppExeName}"; Flags: uninsdeletekey
    Root: HKLM; Subkey: "Software\Classes\VideoPlayer.AssocFile.mpg\Shell\Open\Command"; ValueType: String; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
    Root: HKLM; Subkey: "Software\Classes\.mpg"; ValueType: String; ValueData: "VideoPlayer.AssocFile.mpg"; Flags: uninsdeletevalue uninsdeletekeyifempty;

1 个答案:

答案 0 :(得分:1)

用户关联“胜过”机器关联,因此如果用户过去曾明确要求使用Media Player打开这些文件,那么尽管安装程序采取了操作,它仍将保持关联状态。这是正确的行为;用户的偏好应该总是赢。尝试全新安装(使用VM)或创建一个全新的用户帐户进行测试,您应该发现它按预期工作。您可以引导受此影响的用户使用“打开方式”或“默认程序”控制面板更改其选择,但不应尝试以编程方式执行此操作。

问题中的脚本显示了文件关联的“经典”方法(Win98时代),它仍然受支持,但是您应该设置一些额外的值,尤其是在尝试与常见文件类型关联时为.mpg。 (至少OpenWithProgIds - 事实上,如果你想让你的应用成为一个选项而不是默认选项,你可能希望只设置这个。)

了解这些选项的最佳方式是read the official documentation。一旦您知道要为用例设置哪些注册表值,如果您在将其转换为Inno脚本时遇到任何问题,请随时提出具体细节的其他问题。