关于DEB打包的一些失败记录,想让deb安装完成之后显示一些信息

今天搞了一下QT的应用程序在ubuntu下的安装程序,也就是用DEB打包工具打包以下。

客户要求要在安装完成之后,显示一个提示信息,让用户看到。

我首先想到的方法就是DEBIAN/control文件中有没有什么字段是用来在deb package installer安装完成之后显示信息的。

可是查了一下官方文档,很失望,没有这个字段。

后来只好从DEBIAN/postint这个脚本入手,这个脚本是在installer完成安装之后执行的脚本。

所以,我一开始的想法,是用QT做一个简单的弹框程序,然后用脚本去调用它,谁知道简单的一个对话框程序,编完发现居然达到了8M之大。

由于对QT的研究不是很深入,不敢贸然去删除一些静态库。所以pass了该方案。

接下去我就想到,使用脚本去执行shell命令,估计有哪一条命令是可以弹框的,果不其然,一查之下,还真有,那就是——zenity。

我使用zenity --info --text="hello world"就可以弹出一个简单的对话框,这下可把我高兴的。

直接开始打包,过程很顺利,结果也不错。

可是!!!拿到11.04下面一测就悲剧了。直接报错说connot open display神马的。

查了一下,网上的说法是当有不同的用户要执行图形界面的时候,本用户就会报错。解决方法是先运行命令"xhost +"来开启多用户共享的图形界面。

于是我在zenity之前调用了"xhost +",在11.04下面一跑,得了,这次不报zenity的错,而是报xhost的错误了,提示也是一些cannot display之类的,记得不是很清楚了。

网上提到该解决办法比较繁琐,要去更改系统配置之类的。所以,该方案pass too。

仔细回想一下,以我的理解,应该是当前用户运行deb之后,会提示输入超级用户的密码,这个时候,应该就是转到超级用户的身份来执行installer了,所以导致了zenity的多用户出错。后面的话,按理说超级用户跑xhost应该有足够的权限,怎么就失败了?具体我也没深究了。 反正是放弃了。

后来想想,即使用了8M的那个弹框估计也会出现和zenity类似的问题。真是纠结啊。

最后实在没辙了,只好在DEBIAN/control 的Description字段里面写一些提示信息了,反正这些字从开始安装到结束都会显示着,^_^。

记得第二行开头要空格,不然打包的时候就出错咯。

发表回复