任何通过Cab包的Setup.dll在Cab包安装前或安装后获得Cab包的文件名?

Handsomewang527 2007-09-24 05:07:05
在打Cab包时,可以在CESetupDLL指定一个DLL文件在Cab包安装前后,卸载前后作些操作。
现在希望通过这个DLL在Cab包安装前后(即Install_Init或Install_Exit函数中)获得这个Cab包的文件名。
比如,这个Cab包叫1234.cab,那么我可以在Setup.DLL调用时,获得该Cab包文件名:1234.Cab,如果改名成了5678.Cab,也可以获得文件名“5678.Cab”,请各位大虾指定,谢谢!
...全文
189 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaocheng1988 2010-04-29
  • 打赏
  • 举报
回复
想卸载之后Uninstall_Exit;删除程序更新的一些文件夹及文件。请问各位有没有这么一个方法!让小弟学习一下!
guopeixin 2009-12-16
  • 打赏
  • 举报
回复
果然可以调用setup.dll呀
IMGGTOO 2007-09-26
  • 打赏
  • 举报
回复
这种方法都被想出来了!!
楼主果然高人,呵呵。
ren54 2007-09-26
  • 打赏
  • 举报
回复
楼主高人,学习了。
Handsomewang527 2007-09-26
  • 打赏
  • 举报
回复
有办法了,尽管有点歪门邪道。注意一下,可以发现在安装Cab包时会有个窗口显示“正在安装 XX.Cab ...”,现在就是要取得这段文字。
方法是:
在Setup.dll的Install_Init有个hwndParent的参数正是安装时显示窗口的句柄。
接着就是遍历这个窗口的控件了,正好是第一个(有兴趣的话,可以用Remote Spy进一步看看)。
这样
TCHAR sCabName[256];
HWND hControl = GetWindow( hwndParent,GW_CHILD | GW_HWNDFIRST );
UINT uCtrlID = GetDlgCtrlID( hControl );
GetDlgItemText( hwndParent,uCtrlID ,sCabName,256 );
获得这段文字后再把Cab包的名字解析出来就OK了。
Handsomewang527 2007-09-25
  • 打赏
  • 举报
回复
不是不一样,我考虑的是,比如我下载个名字为123.cab的Cab包,改名成456.Cab包,然后点击安装,我希望这个安装过程能获得这个Cab包的当前名称。
dyw 2007-09-25
  • 打赏
  • 举报
回复
不太明白——安装前后的cab文件名为什么会不一样?
IMGGTOO 2007-09-25
  • 打赏
  • 举报
回复
试了下,想得到安装包中要安装的程序名字,还有点可能,但是想得到安装包的名字,没找到方法 :-(

7,655

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧