在 windows 上指定 dbus 会话地址
Posted
技术标签:
【中文标题】在 windows 上指定 dbus 会话地址【英文标题】:Specify dbus session address on windows 【发布时间】:2016-03-24 08:41:59 【问题描述】:Windows 上 DBus 的默认 session.conf (https://code.google.com/p/dbus-windows-installer/downloads/list) 使用 <listen>autolaunch:scope=install-path</listen>
,顾名思义,它使用 dbus-daemon 可执行文件的当前路径以某种方式确定会话地址。
有没有办法指定显式路径?也许是tcp:
?
【问题讨论】:
【参考方案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
做了两件事:
-
在
C:\Program Files (x86)\DBus
中提供DBus库和默认配置
它将C:\Program Files (x86)\DBus\bin
添加到%PATH%
拥有后者是必要的,这样您的应用程序才能在运行时访问 DBus DLL 和 EXE。要使此安装使用tcp:
语法,您必须
-
将
C:\Program Files (x86)\DBus\etc\session.conf
编辑为<listen>tcp:host=localhost,port=54321,family=ipv4</listen>
将C:\Program Files (x86)\DBus\bin\dbus-env.bat
编辑为set DBUS_SESSION_BUS_ADDRESS=tcp:host=localhost,port=54321,family=ipv4
从首先执行dbus-env.bat
然后运行dbus-daemon.exe --session
的环境启动会话守护程序
(可选)从首先执行dbus-env.bat
然后运行dbus-monitor.exe --session
的环境启动会话监视器
从首先执行 dbus-env.bat
然后实际运行您的应用程序的环境启动您的应用程序
正如我上面所说,DBus 1.4.3 已经很老了。事实上,根据https://code.google.com/p/support/wiki/ReadOnlyTransition 的说法,它甚至可能很快就无法下载。在撰写本文时,最新的稳定分支是 1.10。因此,这里是构建您自己的最新 DBus 的说明
-
安装 Visual Studio
任何版本 2010 及更高版本都可以满足要求,包括免费的 Express 版本
安装 CMake
我相信任何最新版本都可以,但我使用了https://cmake.org/files/v3.4/cmake-3.4.1-win32-x86.exe 我的建议是不要将 cmake 添加到路径中,只是为了保持系统清洁获取 libexpat
我相信任何最新版本都可以,但我使用了http://olex.openlogic.com/package_versions/6311/download?package_version_id=1765&path=https%3A%2F%2Folex-secure.openlogic.com%2Fcontent%2Fopenlogic%2Fexpat%2F2.0.1%2Fopenlogic-expat-2.0.1-windows-bin-1.zip 从 zipfile 运行可执行文件,它将 libexpat 安装到 C:\Program Files (x86)\Expat 2.0.1 目录中。 我们称之为 $expatDir 获取 DBus 源 git clone git://anongit.freedesktop.org/git/dbus/dbus cd dbus 我们称之为 $dbusSrcDir git checkout dbus-1.10 这是当前的稳定分支 为 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 此时,您可以使用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
要在应用程序中使用“部署包”,请修改 %PATH% 以指向“部署包”bin 目录,并确保在执行任何操作之前获取 dbus-env.bat。
【讨论】:
以上是关于在 windows 上指定 dbus 会话地址的主要内容,如果未能解决你的问题,请参考以下文章