Project

General

Profile

Bug #3464

win32ole failure load TYPELIB on mswin64 vista

Added by beuniv (shintaro kuwamoto) over 9 years ago. Updated almost 9 years ago.

Status:
Closed
Priority:
Normal
Target version:
ruby -v:
ruby 1.9.2dev (2010-06-22 revision 28384) [x64-mswin64_90]
Backport:

Description

=begin
Vista 64環境でwin32oleがタイプライブラリのロードに失敗します。

Vista 64の環境ではMicrosoft Scripting Runtimeが次のようなキーになっています。
HKEY_CLASSES_ROOT\TypeLib{420B2830-E718-11CF-893D-00A0C9054228}\1.0\0\win64

OLE Automationなどwin32, win64両方あるケースもあるようです。
HKEY_CLASSES_ROOT\TypeLib{00020430-0000-0000-C000-000000000046}\2.0\0\win32
HKEY_CLASSES_ROOT\TypeLib{00020430-0000-0000-C000-000000000046}\2.0\0\win64

どちらを優先的に読むべきか解らないのですが下記のパッチでtest-allのwin32oleで出ていた
HRESULT error code:0x80029c4a タイプ ライブラリ/DLL の読み込みエラーです
が無くなることを確認しました。

Index: ../ext/win32ole/win32ole.c
===================================================================
--- ../ext/win32ole/win32ole.c (リビジョン 28384)
+++ ../ext/win32ole/win32ole.c (作業コピー)
@@ -2355,7 +2355,11 @@
VALUE path = Qnil;
path = reg_get_val2(hkey, "win32");
if (path == Qnil) {

  • path = reg_get_val2(hkey, "win16");
  • path = reg_get_val2(hkey, "win64");
  • if (path == Qnil) {
  • path = reg_get_val2(hkey, "win16"); +
  • } } return path; } =end

Associated revisions

Revision 0864df17
Added by suke (Masaki Suketa) over 9 years ago

  • ext/win32ole/win32ole.c (reg_get_typelib_file_path): try win64 registry entry at first. [ruby-dev:41674] [Bug #3464]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28403 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

Revision 28403
Added by suke (Masaki Suketa) over 9 years ago

  • ext/win32ole/win32ole.c (reg_get_typelib_file_path): try win64 registry entry at first. [ruby-dev:41674] [Bug #3464]

Revision 28403
Added by suke (Masaki Suketa) over 9 years ago

  • ext/win32ole/win32ole.c (reg_get_typelib_file_path): try win64 registry entry at first. [ruby-dev:41674] [Bug #3464]

Revision 28403
Added by suke (Masaki Suketa) over 9 years ago

  • ext/win32ole/win32ole.c (reg_get_typelib_file_path): try win64 registry entry at first. [ruby-dev:41674] [Bug #3464]

Revision 28403
Added by suke (Masaki Suketa) over 9 years ago

  • ext/win32ole/win32ole.c (reg_get_typelib_file_path): try win64 registry entry at first. [ruby-dev:41674] [Bug #3464]

Revision 28403
Added by suke (Masaki Suketa) over 9 years ago

  • ext/win32ole/win32ole.c (reg_get_typelib_file_path): try win64 registry entry at first. [ruby-dev:41674] [Bug #3464]

Revision 28403
Added by suke (Masaki Suketa) over 9 years ago

  • ext/win32ole/win32ole.c (reg_get_typelib_file_path): try win64 registry entry at first. [ruby-dev:41674] [Bug #3464]

Revision e9eb635a
Added by yugui (Yuki Sonoda) over 9 years ago

merges r28403 from trunk into ruby_1_9_2.

  • ext/win32ole/win32ole.c (reg_get_typelib_file_path): try win64 registry entry at first. [ruby-dev:41674] [Bug #3464]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_2@28496 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

History

#1

Updated by suke (Masaki Suketa) over 9 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

=begin
This issue was solved with changeset r28403.
shintaro, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.

=end

#2

Updated by suke (Masaki Suketa) over 9 years ago

  • Status changed from Closed to Assigned
  • Assignee set to suke (Masaki Suketa)

=begin

=end

#3

Updated by suke (Masaki Suketa) over 9 years ago

=begin
win64を優先するようにして、修正したので、r28403 を試してみていただけますか?
=end

#4

Updated by beuniv (shintaro kuwamoto) over 9 years ago

=begin
対応有り難うございます。
Vista 64bit環境で、TESTS=win32oleでTypelibエラーが出ないのを確認しました。
#win32環境でも毎回win64を見に行くのはちょっともったいない気もします
=end

#5

Updated by suke (Masaki Suketa) over 9 years ago

  • Status changed from Assigned to Closed

=begin
確認ありがとうございました。
このチケットを一旦クローズします。

毎回win64を見に行くのはもったいないと言えばもったいないのですが、
(1) いずれ、64bitな環境が主流になる。ということは、win64が多くなるはず。
(2) 64bit環境では、win32とwin64とでは、win64を優先した方がいいんじゃないかと思う。
ので、こうしました。

=end

Also available in: Atom PDF