Framework / Framework64和System32 / Syswow64

时间:2014-10-02 19:58:59

标签: c# .net installshield regsvr32 system32

我将我的项目构建为64位(不是任何CPU),但特别是64位。 所有的dll都是64位;其中大多数是托管代码(C#),一些文件是非托管的(C ++代码)。

我在Installshield中创建一个安装程序,我需要注册dll' s。我在网上看了很多,以至于我很困惑。

  • regsvr32 - >要注册我的C ++ DLL,我应该使用哪个regsvr32.exe? System32或Syswow64。
  • regasm - >要注册我的C#dll,我应该使用哪个regasm?框架/ framework64

1 个答案:

答案 0 :(得分:3)

在64位系统上,由64位应用程序查看:

  • System32 :包含64位系统文件
  • SysWow64 :包含32位系统文件

在64位系统上,由32位应用程序查看:

  • System32 :通常重定向到SysWow64,因此访问32位系统文件
  • SysNative :重定向到真正的System32;访问64位文件

在64位系统上,如果您碰巧有System32文件夹的路径,则禁用文件系统重定向(请参阅IntallScript' s WOW64FSREDIRECTION或Windows Wow64DisableWow64FsRedirection),它将访问64位文件。

Regasm不在这个位置;而是32位构建在Windows\Microsoft.NET\Framework\<version>中,而64位构建在Windows\Microsoft.NET\Framework64\<version>中。这里没有奇怪的文件夹名称,但它不是系统文件夹。

注意: 注册文件需要正确的位数和正确的应用程序。此外,如果您要创建Windows Installer程序包(例如,基本MSI项目),则不应在安装时调用此类工具;您应该使用COM Extraction等构建时工具来处理本机DLL,使用COM Interop来管理程序集将其自注册转换为MSI数据:正确标记组件的64位设置,而InstallShield应该处理其余部分。