【问题标题】:Specify dbus session address on windows在 windows 上指定 dbus 会话地址
【发布时间】:2016-03-24 08:41:59
【问题描述】:

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

有没有办法指定显式路径?也许是tcp:

【问题讨论】:

    标签: windows dbus


    【解决方案1】:

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

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

    1. C:\Program Files (x86)\DBus中提供DBus库和默认配置
    2. 它将C:\Program Files (x86)\DBus\bin 添加到%PATH%

    拥有后者是必要的,这样您的应用程序才能在运行时访问 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 然后实际运行您的应用程序的环境启动您的应用程序

    正如我上面所说,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
      • "c:\Program Files (x86)\CMake\bin\cmake.exe" -G "NMake Makefiles" -DCMAKE_INCLUDE_PATH:PATH="${expatDir}\Source\lib" -DCMAKE_LIBRARY_PATH:PATH="${ expatDir}\Bin" -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,也可以通过以下方式制作可分发的“部署包”
      • 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
      • 复制 bin\dbus-1-3.dll c:\temp\dbus-deploy\bin
      • 复制 bin\dbus-daemon.exe c:\temp\dbus-deploy\bin
      • 复制 bin\dbus-env.bat c:\temp\dbus-deploy\bin
      • 复制 bin\dbus-launch.exe c:\temp\dbus-deploy\bin
      • 复制 bin\dbus-monitor.exe c:\temp\dbus-deploy\bin
      • 复制 bin\dbus-send.exe c:\temp\dbus-deploy\bin
      • 复制 ${expatDir}\Bin\libexpat.dll c:\temp\dbus-deploy\bin
      • 创建一个 c:\temp\dbus-deploy\share\dbus-1\session.conf 包含<listen>tcp:host=localhost,port=54321,family=ipv4</listen> 的常规内容
      • c:\temp\dbus-deploy\bin\dbus-env.bat 编辑为set DBUS_SESSION_BUS_ADDRESS=tcp:host=localhost,port=54321,family=ipv4
    7. 要在应用程序中使用“部署包”,请修改 %PATH% 以指向“部署包”bin 目录,并确保在执行任何操作之前获取 dbus-env.bat。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-10
      • 1970-01-01
      • 2017-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-01
      相关资源
      最近更新 更多