在Windows上指定dbus会话地址

时间:2015-12-17 18:48:16

标签: windows dbus

Windows上的DBus(https://code.google.com/p/dbus-windows-installer/downloads/list)的默认session.conf使用<listen>autolaunch:scope=install-path</listen>,顾名思义,它使用dbus-daemon可执行文件的当前路径以某种方式确定会话地址。

有没有办法指定显式路径?或许有tcp:的东西?

1 个答案:

答案 0 :(得分:1)

经过多次尝试,我找到了解决方案。即使https://code.google.com/p/dbus-windows-installer/downloads/list提供的(至少目前为止)的1.4.3版本的DBus for Windows已经很老了,但实际上它支持tcp:语法。

安装DBus-Windows-Installer-1.4.1-2.exe会做两件事:

  1. 它在C:\Program Files (x86)\DBus
  2. 中提供了DBus库和默认配置
  3. 它将C:\Program Files (x86)\DBus\bin添加到%PATH%
  4. 使用后者是必要的,以便您的应用程序可以在运行时访问DBus DLL和EXE。要使此安装使用tcp:语法,您必须

    1. C:\Program Files (x86)\DBus\etc\session.conf修改为<listen>tcp:host=localhost,port=54321,family=ipv4</listen>
    2. C:\Program Files (x86)\DBus\bin\dbus-env.bat修改为set DBUS_SESSION_BUS_ADDRESS=tcp:host=localhost,port=54321,family=ipv4
    3. 从首先执行dbus-env.bat的环境启动会话守护程序,然后运行dbus-daemon.exe --session
    4. (可选)从首先执行dbus-env.bat的环境启动会话监视器,然后运行dbus-monitor.exe --session
    5. 从首先执行dbus-env.bat然后实际运行应用程序的环境启动应用程序
    6. 正如我上面所说,DBus 1.4.3已经很老了。事实上,根据https://code.google.com/p/support/wiki/ReadOnlyTransition,它甚至可能不会很快下载。在撰写本文时,最新的稳定分支是1.10。因此,以下是构建您自己的最新DBus的说明

      1. 安装Visual Studio
        • 任何版本的2010及更高版本都应该足够,包括免费的Express版本
      2. 安装CMake

      3. 获取libexpat

      4. 获取DBus源代码
        • git clone git://anongit.freedesktop.org/git/dbus/dbus
        • cd dbus
          • 让我们称之为$ {dbusSrcDir}
        • git checkout dbus-1.10
          • 这是当前的稳定分支
      5. 启动VS2015的开发人员命令提示符
        • cd $ {dbusSrcDir}
        • cd ..
        • mkdir dbus-build
        • cd dbus-build
        • &#34; c:\ Program Files(x86)\ CMake \ bin \ cmake.exe&#34; -G&#34; NMake Makefiles&#34; -DCMAKE_INCLUDE_PATH:PATH =&#34; $ {expatDir} \源\ lib中&#34; -DCMAKE_LIBRARY_PATH:PATH =&#34; $ {expatDir} \滨&#34; -DDBUS_BUILD_TESTS:BOOL = OFF -DDBUS_DISABLE_ASSERT:BOOL = ON -DDBUS_USE_OUTPUT_DEBUG_STRING:BOOL = ON -DDBUS_ENABLE_DOXYGEN_DOCS:BOOL = OFF .. \ dbus \ cmake
        • NMAKE
      6. 此时,您可以nmake install安装到C:\Program Files (x86)\DBus,也可以制作可分发的部署软件包&#34;通过
        • mkdir c:\ temp \ dbus-deploy
        • mkdir c:\ temp \ dbus-deploy \ bin
        • mkdir c:\ temp \ dbus-deploy \ share
        • mkdir c:\ temp \ dbus-deploy \ share \ dbus-1
        • copy bin \ dbus-1-3.dll c:\ temp \ dbus-deploy \ bin
        • copy bin \ dbus-daemon.exe c:\ temp \ dbus-deploy \ bin
        • copy bin \ dbus-env.bat c:\ temp \ dbus-deploy \ bin
        • copy bin \ dbus-launch.exe c:\ temp \ dbus-deploy \ bin
        • copy bin \ dbus-monitor.exe c:\ temp \ dbus-deploy \ bin
        • copy bin \ dbus-send.exe c:\ temp \ dbus-deploy \ bin
        • copy $ {expatDir} \ Bin \ libexpat.dll c:\ temp \ dbus-deploy \ bin
        • 使用包含<listen>tcp:host=localhost,port=54321,family=ipv4</listen>
        • 的常用内容创建c:\ temp \ dbus-deploy \ share \ dbus-1 \ session.conf
        • c:\temp\dbus-deploy\bin\dbus-env.bat修改为set DBUS_SESSION_BUS_ADDRESS=tcp:host=localhost,port=54321,family=ipv4
      7. 使用&#34;部署包&#34;在您的应用程序中,修改%PATH%以指向您的&#34;部署包&#34; bin目录并确保在执行任何操作之前获取dbus-env.bat。