Inno安装程序无法在Windows 10中创建桌面图标

时间:2019-02-01 18:05:15

标签: windows-10 inno-setup

我具有用于最新版本的安装程序的安装文件。它可以从Windows XP到Windows 8进行编译和运行,但是在Windows 10中,当它创建带有下一个错误的桌面图标时,它会失败: IPersistFile ::保存失败;代码0x80070002

这是我在设置文件中创建图标的方式:

[Icons]
Name: "{userdesktop}\Forex Tester 4"; Filename: "{app}\ForexTester4.exe"; Tasks: desktopicon

部分安装日志文件:

2019-02-01 12:50:46.376   -- Icon entry --
2019-02-01 12:50:46.376   Dest filename: C:\Users\Mike\Desktop\Forex Tester 4.lnk
2019-02-01 12:50:46.376   Creating the icon.
2019-02-01 12:50:46.376   Exception message:
2019-02-01 12:50:46.376   Message box (OK):
                          IPersistFile::Save failed; code 0x80070002.
                          The system cannot find the file specified.
2019-02-01 12:50:59.066   User chose OK.

此文件夹存在,我可以在那里手动创建文件。但是inno安装程序无法执行此操作...除桌面图标以外的所有其他图标都没有问题。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

在Windows 7和Windows 10上,我有相同的错误,因为我试图创建快捷方式来访问尚不存在的文件。

[Icons]
; Create icons for the app
Name: "{group}\{#AppName}"; \
    Filename: "{app}\{#AppName}.lnk"; \
    BeforeInstall: CreateAppRunLink();
Name: "{commondesktop}\{#AppName}"; \
    Filename: "{app}\{#AppName}.lnk"; \
    Tasks: desktopicon;

因此,在创建图标之前,我必须确保文件“ {app} {#AppName} .lnk”存在: 转到[代码]部分:

procedure CreateAppRunLink();
var
    Filename: string;
    Description: string;
    ShortcutTo: string;
    Parameters: string;
    WorkingDir: string;
    IconFilename: string;
begin
    Filename := ExpandConstant('{app}\MyApp.lnk');
    Description := 'Description';
    ShortcutTo := 'Full path to file that will be run (MyApp.exe)';
    Parameters := 'parameters if any';
    WorkingDir := ExpandConstant('{app}');
    IconFilename := ExpandConstant('{app}') + '\icon.ico';

    CreateShellLink(Filename, Description, ShortcutTo, Parameters, WorkingDir, 
        IconFilename, 0, SW_HIDE);
end;

从[文件]部分提取任何文件后,将调用CreateAppRunLink,以确保我们的文件就位。

希望会有所帮助。

答案 1 :(得分:0)

这可能是Windows 10的一个相对较新的功能(自1709版起),称为“受控文件夹访问”。有关打开或关闭它的说明,请参见Allow a blocked app in Windows Security