如果操作系统是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。