Inno Setup 32位和64位dll安装



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

如何在Inno设置中做到这一点?64位DLL也会由64位regsvr32程序注册吗?

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

[Files]
Source: D:..32bit filesmylibrary.dll; DestDir: {app}; 
    Flags: restartreplace ignoreversion regserver 32bit
Source: D:..64bit filesmylibrary.dll; DestDir: {app}; 
    Flags: restartreplace ignoreversion regserver 64bit; Check: IsWin64

我看过64BitTwoArch.iss示例,但它告诉如何进行32位OR 64位安装,而不是32位AND 64位安装。

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

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

无法使其仅与{app}变量一起工作,因为您希望同时安装在两个目标上。

通过像这个一样对程序文件文件夹进行硬编码来解决它

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

这对我有效。Windows以这种方式自动加载32位应用的32位dll和64位应用的64位dll。

最新更新