c# - Framework/Framework64 和 System32/Syswow64

标签 c# .net installshield regsvr32 system32

我将我的项目构建为 64 位(不是任何 CPU),但具体是 64 位。 所有的dll都是64位的;其中大部分是托管代码(C#),少数文件是非托管(C++ 代码)。

我正在 Installshield 中创建安装程序,并且需要注册 dll。我在网上看了这么多,我很困惑。

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

最佳答案

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

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

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

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

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

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

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

关于c# - Framework/Framework64 和 System32/Syswow64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26168654/

相关文章:

visual-studio-2012 - VS2012 和 InstallShield 2014 第一期

c# - 个人 Silverlight 项目的 F# 或 C#?

c# - 为用户订阅 ServiceStack 中的 SSE channel

c# - C# 基类可以在静态成员中调用子类的构造函数吗?

c# - 属性组件

c# - 如何在 Web 应用程序中获取用户的互联网连接速度?

c# - 使用 MVVM 在 WPF 中创建新窗口的最佳方法

c# - 如何使用 InstallShield 2009 显示消息框

c# - 覆盖身份验证属性的用途是什么?

installation - 是否可以在 Installshield 2012 PRQ 中使用逻辑 OR 或否定条件?