首页 文章

Inno设置32位和64位DLL安装

提问于
浏览
7

如果操作系统是64位我想安装32位DLL到 Program Files (x86) 文件夹和64位DLL到 Program Files 文件夹并分别注册它们 . 如果是32位操作系统,我只想将文件复制到普通程序文件夹并注册 .

我怎么能在Inno Setup中做到这一点? 64位 regsvr32 程序也会注册64位DLL吗?

到目前为止,这是我的代码 . 它在32位操作系统上运行良好,但在64位操作系统上,它会在 Program Files (x86) 中转储这两组文件 .

[Files]
Source: D:\..\32bit files\mylibrary.dll; DestDir: {app}; \
    Flags: restartreplace ignoreversion regserver 32bit

Source: D:\..\64bit files\mylibrary.dll; DestDir: {app}; \
    Flags: restartreplace ignoreversion regserver 64bit; Check: IsWin64

我查看了 64BitTwoArch.iss 示例,但它告诉我们如何进行32位或64位安装而不是32位和64位安装 .

2 回答

  • 4

    我在以下方面取得了成功:

    [Files]
    Source: D:\..\32bit files\mylibrary.dll; DestDir: {app}; \
        Flags: restartreplace ignoreversion regserver 32bit; **Check: "not IsWin64"**
    
    Source: D:\..\64bit files\mylibrary.dll; DestDir: {app}; \
        Flags: restartreplace ignoreversion regserver 64bit; Check: IsWin64
    
  • 2

    无法使用 {app} 变量,因为您希望同时安装在两个目的地上 .

    通过像这样硬编码程序文件文件夹来解决它

    #define MyAppName "TestAPP"
    
    [Files]
    Source: D:\..\32bit files\mylibrary.dll; DestDir: {pf32}\{#MyAppName}; \
        Flags: restartreplace ignoreversion regserver 32bit
    
    Source: D:\..\64bit files\mylibrary.dll; DestDir: {pf64}\{#MyAppName}; \
        Flags: restartreplace ignoreversion regserver 64bit; Check: IsWin64
    

    这适合我 . Windows通过这种方式为32位应用程序加载32位dll,为64位应用程序加载64位dll .

相关问题