2014-10-02 7 views
1

Я построил свой проект как 64-битный (не ЛЮБЫЙ ЦП), а конкретно 64-битный. Все dll 64-бит; большинство из них - управляемый код (C#), а несколько файлов неуправляемы (код C++).Framework/Framework64 и System32/Syswow64

Я создаю установщик в Installshield, и мне нужно зарегистрировать dll. Я читал так много онлайн, что я смущен.

  • regsvr32 -> Чтобы зарегистрировать мою C++ dll, которую regsvr32.exe следует использовать? System32 или Syswow64.
  • regasm -> Чтобы зарегистрировать мою C# dll, какой regasm я должен использовать? рамки/Framework64
+0

Syswow64 regsvr32 должен работать. Возможно, вам придется работать как администратор. Обычно я использую командную строку VS Developer. [здесь] (http://stackoverflow.com/questions/1163503/what-is-difference-bw-regasm-exe-and-regsvr32-how-to-generate-a-tlb-file-usi) является ссылкой на различия между regsvr32 и regasm – alykins

+0

Но я видел в одной из ссылок, что Syswow64 предназначен для регистрации 32-разрядных DLL. Соглашение об именах испорчено. –

+0

Вы попробовали? – alykins

ответ

3

На 64-битной системе, как видно с помощью 64-битного приложения:

  • System32: содержит 64-битные системные файлы
  • syswow64: содержит 32 -разр системные файлы

на 64-битной системе, как видно на 32-битное приложение:

  • System32: как правило, перенаправляется на syswow64, поэтому доступ к 32-битным системным файлам
  • Sysnative: перенаправлено к реальным System32; доступ 64-битных файлов

На 64-битной системе, с перенаправлением файловой системы отключена (см IntallScript-х WOW64FSREDIRECTION или ОС Windows на Wow64DisableWow64FsRedirection), если вам случится иметь путь к папке System32, она будет иметь доступ к 64-разрядные файлы ,

Реглас в этом месте отсутствует; вместо этого 32-битная сборка находится в Windows\Microsoft.NET\Framework\<version>, а 64-битная сборка находится в Windows\Microsoft.NET\Framework64\<version>. Здесь нет странных имен папок, но это не системная папка.

Примечание: Для регистрации файла необходима правильная битность и правильное применение. Кроме того, если вы создаете пакет установщика Windows (например, базовый проект MSI), вы не должны вызывать такие инструменты во время установки; вместо этого вы должны использовать инструменты построения времени, такие как COM Extraction для собственных DLL и COM Interop, для управляемых сборок, чтобы включить их саморегистрацию в данные MSI: отметьте 64-битные настройки компонента правильно, и InstallShield, как предполагается, справится с остальными.

+0

+1 Звездный ответ – alykins