Rubyにファイルのバージョン、特に.dllファイルを見つける方法はありますか?Ruby on Windowsでファイルのバージョンを確認する
9
A
答えて
1
どのファイルでも、そのファイルがどのようなフォーマットであるかを発見してから、そのファイルを開いて、ファイルのバージョンを調べる必要があります。 Rubyのファイルバージョンを特定するためのAPIや一般的なメソッドはありません。
ファイルバージョンがファイル名に含まれていれば、より簡単になることに注意してください。
3
Microsoftプラットフォームで作業している場合、RubyでWin32 APIを使用して、GetFileVersionInfo()を呼び出すことができます。これにより、探している情報が返されます。 Windowsの場合 http://msdn.microsoft.com/en-us/library/ms647003.aspx
12
EXEのとDLLの「アンパック」+正規表現の部分はハックです
require "Win32API"
FILENAME = "c:/ruby/bin/ruby.exe" #your filename here
s=""
vsize=Win32API.new('version.dll', 'GetFileVersionInfoSize',
['P', 'P'], 'L').call(FILENAME, s)
p vsize
if (vsize > 0)
result = ' '*vsize
Win32API.new('version.dll', 'GetFileVersionInfo',
['P', 'L', 'L', 'P'], 'L').call(FILENAME, 0, vsize, result)
rstring = result.unpack('v*').map{|s| s.chr if s<256}*''
r = /FileVersion..(.*?)\000/.match(rstring)
puts "FileVersion = #{r ? r[1] : '??' }"
else
puts "No Version Info"
end
、「正しい」方法は、VerQueryValue APIですが、これはほとんどのファイルのために働く必要があります。 (拡張文字セットではおそらく失敗します)
5
ルビーでバージョン情報を取得したいのに、ルビーコードがWindowsで実行されていない場合はどうなりますか?
下記ないだけ(同じ拡張文字セットの警告を聞き入れ)は:ルビー2.0のよう
#!/usr/bin/ruby
s = File.read(ARGV[0])
x = s.match(/F\0i\0l\0e\0V\0e\0r\0s\0i\0o\0n\0*(.*?)\0\0\0/)
if x.class == MatchData
ver=x[1].gsub(/\0/,"")
else
ver="No version"
end
puts ver
3
、DL
モジュールは廃止されます。ここでは、Fiddleを使用して、AShellyの答えの更新版があります。
version_dll = Fiddle.dlopen('version.dll')
s=''
vsize = Fiddle::Function.new(version_dll['GetFileVersionInfoSize'],
[Fiddle::TYPE_VOIDP, Fiddle::TYPE_VOIDP],
Fiddle::TYPE_LONG).call(filename, s)
raise 'Unable to determine the version number' unless vsize > 0
result = ' '*vsize
Fiddle::Function.new(version_dll['GetFileVersionInfo'],
[Fiddle::TYPE_VOIDP, Fiddle::TYPE_LONG,
Fiddle::TYPE_LONG, Fiddle::TYPE_VOIDP],
Fiddle::TYPE_VOIDP).call(filename, 0, vsize, result)
rstring = result.unpack('v*').map{|s| s.chr if s<256}*''
r = /FileVersion..(.*?)\000/.match(rstring)
puts r[1]
関連する問題
- 1. Windows 7klでOpenGLのバージョンを確認する方法
- 2. Windows上でMeteor.jsのバージョンを確認する方法
- 3. Ruby on Railsのユーザー確認でパラメータが更新されない
- 4. Ruby on Rails - Deivse - 現在ログインしているユーザを確認
- 5. プリプロセッサスイッチでクラスのバージョンを確認する
- 6. Ruby on Railsでファイルをコピー
- 7. InnoSetup設定ファイルの[実行]セグメントのWindowsバージョンを確認してください
- 8. Ruby on RailsのOpenID認証
- 9. レンダリング時のAjaxful格付け確認 - Ruby on rails
- 10. ruby on rails has_many関連フォーム子どもの妥当性確認
- 11. Crystal Reportのrptファイルのバージョンを確認する方法は?
- 12. Ruby on Rails with Windows Vista - ベストセットアップ?
- 13. DashingとmySQL with Ruby on Windows
- 14. Windowsアプリケーション経由でリモートフォルダ上のファイルを確認する
- 15. Ruby on Rails:モデルが存在するかどうかを確認する方法
- 16. Ruby On Railsのバージョンが異なるのはなぜですか?
- 17. Ruby on Rails with backbone - 認証
- 18. Ruby on Rails&Deviseでの認証
- 19. Androidのバージョンを確認する
- 20. sbtのバージョンを確認するには?
- 21. Ruby on Rails 3を使用して削除確認ページを作成する
- 22. ruby on rubyでopen officeファイルをレンダリングする
- 23. ファイルのカスタマイズボタンruby on rails
- 24. 市場外でのバージョンの確認ダウンロード.apkファイルなし
- 25. Ruby on Railsでの認証、パスワードの使用を禁止する
- 26. Java JDKのバージョンとSDKのバージョンを確認する方法は?
- 27. Windows CMD:ファイルを使用しているアプリケーションを確認する
- 28. Ruby on Rails 2.3.8:特定のバージョンのgemが必要ですか?
- 29. Rubyでブラウザコンソールの出力を確認
- 30. Windows上のRuby on Rails開発