PPC中SetupDll基本使用方法及细节

在WinCE的安装工程(cab包)底下可以配置一个Setup.dll,这个东西在安装过程中被加载,并控制安装过程。

SetupDll.dll很简单里面只有四个函数:

 

SETUP_API codeINSTALL_INIT Install_Init( 

HWND hwndParent, 

BOOL fFirstCall, 

BOOL fPreviouslyInstalled, 

LPCTSTR pszInstallDir 



SETUP_API codeINSTALL_EXIT Install_Exit( 

HWND hwndParent, 

LPCTSTR pszInstallDir, 

WORD cFailedDirs, 

WORD cFailedFiles, 

WORD cFailedRegKeys, 

WORD cFailedRegVals, 

WORD cFailedShortcuts 



SETUP_API codeUNINSTALL_INIT Uninstall_Init( 

HWND hwndParent, 

LPCTSTR pszInstallDir 



SETUP_API codeUNINSTALL_EXIT Uninstall_Exit( 

HWND hwndParent 



基本的操作是这样:

在用户选择安装路径后,先执行Install_Init,在安装完成后,执行Install_Exit。

卸载时,先执行Uninstall_Init,在卸载完毕后执行Uninstall_Exit。

这里讨论一下,在安装过程中,遇到可能的情况以及传入函数的参数。

在第一次安装的时候,Install_Init会在用户选择安装路径后执行。

传入Install_Init的参数:

pszInstallDir为:用户刚选择的路径\Program Files\工程名

fFirstCall为TRUE

fPreviouslyInstall为FALSE

安装完成后,执行Install_Exit。

pszInstallDir为:用户选择的路径\Program Files\工程名

卸载时,Uninstall_Init被执行。

参数pszInstallDir为:用户安装时选择的路径\Program Files\工程名

之后执行Uninstall_Exit。

另一种情况,在用户用新的CAB对已有工程进行更新时:

系统先挂载新的CAB中的SetupDll.dll

进入新SetupDll.dll的Install_Init,传入的参数为:

pszInstallDir为:用户上次安装的路径\Program Files\工程名

fFirstCall为TRUE

fPreviouslyInstall为FALSE

之后会弹出询问用户是否卸载上次安装的对话框,如果选择“取消”则程序退出不会执行其他函数。

如果选择“确定”,则会挂载旧版本中的SetupDll.dll,进入Uninstall_Init,传入参数为:pszInstallDir为:用户上次安装的路径\Program Files\工程名

之后执行旧版本的Uninstall_Exit。

在卸载旧版本完毕后,又会出现让用户选择路径的界面:

之后又进入新版本的Install_Init,此时参数变为:

pszInstallDir为:用户新选择的路径\Program Files\工程名

fFirstCall为FALSE

fPreviouslyInstall为FALSE

安装完成后,执行Install_Exit。

pszInstallDir为:用户新选择的路径\Program Files\工程名

另外,在安装过程中,还可以通过注册表,进行新旧setupdll的交互。这种方法比较灵活,怎么方便怎么来吧\^o^/

posted @ 2008-04-02 22:33  摇滚诗人  阅读(1923)  评论(4编辑  收藏  举报