我将我的项目构建为 64 位(不是任何 CPU),但特别是 64 位。所有的 dll 都是 64 位的;其中大部分是托管代码(C#),少数文件是非托管(C++ 代码)。
我正在 Installshield 中创建安装程序,我需要注册 dll。我在网上看了很多,我很困惑。
- regsvr32 -> 要注册我的 C++ dll,我应该使用哪个 regsvr32.exe?System32 或 Syswow64。
- regasm -> 要注册我的 C# dll,我应该使用哪个 regasm?框架/框架64
我将我的项目构建为 64 位(不是任何 CPU),但特别是 64 位。所有的 dll 都是 64 位的;其中大部分是托管代码(C#),少数文件是非托管(C++ 代码)。
我正在 Installshield 中创建安装程序,我需要注册 dll。我在网上看了很多,我很困惑。
在 64 位系统上,如 64 位应用程序所见:
在 64 位系统上,如 32 位应用程序所见:
在 64 位系统上,禁用文件系统重定向(参见 IntallScriptWOW64FSREDIRECTION或 Windows 的Wow64DisableWow64FsRedirection)如果您碰巧有 System32 文件夹的路径,它将访问 64 位文件。
Regasm 不在此位置;相反,32 位版本在Windows\Microsoft.NET\Framework\<version>,64 位版本在Windows\Microsoft.NET\Framework64\<version>. 这里没有奇怪的文件夹名称,但它不是系统文件夹。
注意:注册文件需要正确的位数和正确的应用程序。此外,如果您正在创建 Windows 安装程序包(例如 Basic MSI 项目),则不应在安装时调用此类工具;相反,您应该使用构建时工具,例如用于本机 DLL 的 COM 提取和用于托管程序集的 COM 互操作,以将它们的自注册转换为 MSI 数据:正确标记组件的 64 位设置,而 InstallShield 应该处理其余部分。