【问题标题】:Runtime error (at -1:0): Cannot import ISSkin.dll with InnoSetup运行时错误(-1:0):无法使用 InnoSetup 导入 ISSkin.dll
【发布时间】:2012-09-03 20:10:29
【问题描述】:

我的程序在安装了 ISSkin 的计算机上安装良好。然后,我尝试将我的程序安装在未安装 ISSkin 的另一台计算机上,安装时收到此消息:“运行时错误(在 -1:0):无法导入 dll:c:\Folder00\ISSkin。 dll”。

我在网上搜索过,但目前还没有。我的 INNO 中有以下代码:

[Files]
Source: "c:\Folder00\ISSkin.dll"; DestDir: {tmp}; Flags: dontcopy; Attribs: hidden system

[Code] 
procedure LoadSkin(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@c:\Folder00\ISSkin.dll cdecl';

procedure UnloadSkin();
external 'UnloadSkin@c:\Folder00\ISSkin.dll cdecl'

我正在为 innosetup 使用 *.cjstyles 皮肤。我从 STDCALL 更改为 CDECL 但无济于事。有没有人遇到过这个问题以及如何解决?

【问题讨论】:

    标签: inno-setup failed-installation


    【解决方案1】:

    您正在将 dll 提取到临时文件中,但尝试从某些 'c:\folder00\' 加载它,这很可能在目标计算机中不存在。

    关注产品页面上的example,您会没事的。链接示例中的相关部分:

    [Files]
    Source: ISSkin.dll; DestDir: {app}; Flags: dontcopy
    Source: Office2007.cjstyles; DestDir: {tmp}; Flags: dontcopy    
    
    [Code] 
    procedure LoadSkin(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@files:isskin.dll stdcall';
    
    function InitializeSetup(): Boolean;
    begin
      ExtractTemporaryFile('Office2007.cjstyles');
      LoadSkin(ExpandConstant('{tmp}\Office2007.cjstyles'), '');
      Result := True;
    end; 
    

    【讨论】:

    • +1,无论如何,您不需要指定DestDirdontcopy 标志的组合。
    • @TLama - AAMOF 我不知道如何引用像 'LoadSkin@files:isskin.dll stdcall' 这样的文件,似乎不需要提取它。所以我决定不碰这个例子..
    • 谢谢 TLama(他在上一篇文章的评论中给了我第一个答案呵呵),也非常感谢 Sertac 对这个问题表现出兴趣并给出了正确的解决方案 :)。现在工作正常!
    猜你喜欢
    • 2019-10-24
    • 2019-06-11
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    • 1970-01-01
    • 2018-12-08
    • 1970-01-01
    • 2021-11-06
    相关资源
    最近更新 更多