前言:由于项目需要,而Installshield中的界面没有我们想要的,就需要定制一套了,也在网上看了很多资料,现在项目做的差不多了,总结一下
网上有很多Installshield高手的文章,都可以参考一下,先推荐一篇: InstallShield自定义安装界面, 是Kevin.Wan写的,主要是替换InstallShield界面的一些图片。
当然还要感谢群友的帮助,还有单车兄总结的文档,非常实用。
1. 在自定义对话框的时候,无意中看到了InstallShield的一些示例以及文件,可以参看InstallShield界面中的Tools-->InstallScript-->Stand Dialog Sampler,里面有很多内嵌的对话框,可以参看然后选择自己需要的,近似于需求的对话框。比如我们项目中需要做的是类似于AskOptions(NONEXCLUSIVE)的对话框,里面需要把上面的描述字符串都替换掉,而且需要添加新的一段话,后面会详细描述。
2. 还有些示例工程也可以参照学习, 具体是在安装目录下的InstallShield\xxxx\Samples,里面有InstallScript, Sample Data, WindowsInstaller目录,我们的工程类型主要是InstallScript MSI Project,所以主要参考InstallScript目录下面的示例。主要是看Serial Number Validation Sample Project.ism这个工程,它自定义了SdCustomRegisterUserEx这个对话框,可以作参考。
3. 在InstallShield的安装目录下面,InstallShield\xxxx\Script\Isrt\src,里面有很多源代码也可以参考,参照步骤1里InstallShield里面的标准对话框,可以查看相应的源码。
4. 现在来看Serial Number Validation Sample Project.ism项目中的自定义对话框,是在脚本Custom_Password.rul中,主要函数代码如下:
#define SD_DLG_CUSTOM_REGISTERUSEREX "SdCustomRegisterUserEx"
#define SD_NDLG_CUSTOM_REGISTERUSEREX 22002
#define SD_EDIT_CUSTOM_NAME 301
#define SD_EDIT_CUSTOM_COMPANY 302
#define SD_EDIT_CUSTOM_SERIAL_1 101
#define SD_EDIT_CUSTOM_SERIAL_2 102
#define SD_EDIT_CUSTOM_SERIAL_3 103
#define N_REQ_LENGTH_OF_SERIAL_1 6
#define N_REQ_LENGTH_OF_SERIAL_2 4
function SdCustomRegisterUserEx ( szTitle, szMsg, svName, svCompany, svSerial_1, svSerial_2, svSerial_3 )
STRING szDlg, szTemp;
BOOL bDone;
NUMBER nId, nMessage, nTemp, nSdDialog, nSdCustomRegisterUserEx;
HWND hwndDlg, hwndControl;
begin