分类:
2009-04-07 15:05:11
1,选择一个中文版本工具和帮助
nullsoft scriptable install system 2.37
1,仔细阅读 NSIS用户手册(中文)大概了解一些规则。
2,利用自带例程进行测试和修改熟悉NSIS。
2,一个实际的安装程序制作
1,要求:
如果在一台机上安装我们的服务器,安装步骤如下(仅供参考):
1 运行Vertrigo_221.exe,安装VertrigoServ。
2 运行VertrigoServ,右键点击右下角小图标,"Tools"=>"MySQL Console(for root)",
密码是****。进入之后,
输入命令:\. d:\ipcamera\install\monitorplatform.sql,用于恢复数据。
可用命令 show tables;检查,注意带分号。
3 输入命令:grant select,update,insert,delete,create on monitorplatform.* to identified by 'guest';用于恢复用来查询的用户身份。
4 拷贝文件夹 voyager 到 VertrigoServ安装文件夹的 www 中。恢复网页。
5 修改secserver文件夹中的文件 secserver.ini,如有必要,创建文件夹,用来让服务器程序存放snapshot和vid。
6 右键点击右下角小图标,"Settings"=>"Aliases and dirs",进入后选择按钮 "Add directory"和"Add aliases"。注意别名是ipcam,这是在vCam中写死了。
从以上安装步骤可以看出,有些事情只有搞开发的人才容易懂。因此,为了让一般人也能方便地安装服务器,要制作一个安装程序。安装程序可用NSIS来制作。NSIS的学习可以在安装NSIS后参考帮助文档。请从 安装程序的制作取得相关资料,包括NSIS的安装程序和服务器/客户端的程序。
请你制作的安装程序中,具体任务如下:
(VertrigoServ在此前已经安装好)
1 默认系统安装目录是$PROGRAMFILES\VoyIPCAM,显示此文件夹,用户可选择另外的文件夹。然后把Client和Server中的文件拷贝到此文件夹。
2 默认的存放快照(snapshot_dir)和录像(vidrecord_dir)的文件夹是上一步指定的安装文件夹下的.\Server\multimedia。显示这一默认文件夹,并允许用户更改。补充说明:存放快照(snapshot_dir)和录像(vidrecord_dir)的文件夹是同一文件夹。但在下面第3步,要在secserver.ini中写入两项。
3 把第2步的设置保存到.\Server\secserver.ini文件中。webmanage的值是安装文件夹的.\Server\voyager。再添加一项:serverport=***。
4 查找VertrigoServ的安装文件夹,修改其目录(\Apache\conf\)下的 vertrigo.conf 文件,把(snapshot_dir\vidrecord_dir)\webmanage路径添加到vertrigo.conf 文件中。添加的格式如下(除了修改所处的文件夹外,其余字符不用修改):
Options All
AllowOverride All
Order allow,deny
Allow from All
Alias /ipcam "snapshot_dir和vidrecord_dir的文件夹,从盘符开始的绝对路径"
Options All
AllowOverride All
Order allow,deny
Allow from All
Alias /voyager "webmanage的文件夹,从盘符开始的绝对路径"
以上是当前的工作。下一步还要考虑卸载程序的制作。安装时要检测当前程序的版本等。
2,遇到问题和解决办法
1,在具体任务1中,可以通过nullsoft scriptable install system 2.37直接建立;
2,在任务2中,需要建立一个对话框。
1,创建一个窗体。(directory.ini)
在菜单【File】中找到【新建 InstallOption 文件】编辑一个窗体。
[Settings]
NumFields=2
[Field 1]
Type=Label
Text=Please select snap shot and video record dictory.
Left=6
Right=230
Top=26
Bottom=44
[Field 2]
Type=DirRequest
State=DirRequest
Left=7
Right=235
Top=46
Bottom=59
2,在初始化的地方调用。
; 添加Video record 路径
;=============================
!insertmacro MUI_PAGE_COMPONENTS
Page custom SetCustom LeaveCustom
;=============================
Function .onInit
!insertmacro MUI_LANGDLL_DISPLAY
InitPluginsDir
File /oname=$PLUGINSDIR\io.ini directory.ini
FunctionEnd
3,写数据到文件中
1,获取路经。
2,写文件函数。
Section "-VideoRecordDir" SEC_VideoRecordDir
SectionEnd
Function SetCustom
WriteINIStr $PLUGINSDIR\io.ini "Field 2" State "$INSTDIR\Server\multimedia"
InstallOptions::initDialog /NOUNLOAD "$PLUGINSDIR\io.ini"
InstallOptions::show
FunctionEnd
Function LeaveCustom
ReadINIStr $0 "$PLUGINSDIR\io.ini" "Field 2" State
CreateDirectory $0
${Unless} ${FileExists} "$0\*"
MessageBox MB_OK|MB_ICONSTOP "error"
Abort
${EndUnless}
;===================================================
ClearErrors
FileOpen $1 "$INSTDIR\Server\secserver.ini" w
IfErrors done
FileWrite $1 "snapshot_dir=$0$\r$\n"
FileWrite $1 "vidrecord_dir=$0$\r$\n"
FileWrite $1 "serverport=9394$\r$\n"
FileClose $1
done:
${Unless} ${FileExists} "$INSTDIR\Server\secserver.ini"
MessageBox MB_OK|MB_ICONSTOP "Setting secserver.ini error"
Abort
${EndUnless}
;=====================================================
;==========处理vertigo=================================
ReadRegStr $2 HKCU Software\vertrigoServ "" ;HKEY_CURRENT_USER Software vertrigoServ
;MessageBox MB_OK|MB_ICONSTOP "vertrigoServ 安装在: $2" ;for test message
FileOpen $3 "$2\Apache\conf\vertrigo.conf" a
ClearErrors
IfErrors done2
FileSeek $3 0 END
FileWrite $3 "$\r$\n"
FileWrite $3 "
FileWrite $3 " Options All$\r$\n"
FileWrite $3 " AllowOverride All$\r$\n"
FileWrite $3 " Order allow,deny$\r$\n"
FileWrite $3 " Allow from All$\r$\n"
FileWrite $3 " $\r$\n"
FileWrite $3 "$\r$\n"
FileWrite $3 "Alias /ipcam $\"$0$\" $\r$\n"
FileWrite $3 "$\r$\n"
FileWrite $3 "
FileWrite $3 " Options All$\r$\n"
FileWrite $3 " AllowOverride All$\r$\n"
FileWrite $3 " Order allow,deny$\r$\n"
FileWrite $3 " Allow from All$\r$\n"
FileWrite $3 " $\r$\n"
FileWrite $3 "$\r$\n"
FileWrite $3 "Alias /voyager $\"$INSTDIR\Server\voyager$\" $\r$\n"
FileClose $3
done2:
${Unless} ${FileExists} "$2\Apache\conf\vertrigo.conf"
MessageBox MB_OK|MB_ICONSTOP "Setting vertrigo.conf error!"
Abort
${EndUnless}
;=====================================================
FunctionEnd
ReserveFile directory.ini
4,得到本地IP地址,并创建一个URL连接。
下载一个得到本地IP地址的插件 ,(源码见附件)
URL快捷方式:
;=====================================================================
Section -AdditionalIcons
SetOutPath $INSTDIR
WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
WriteIniStr "$INSTDIR\SecserverWebsite.url" "InternetShortcut" "URL" ""
CreateShortCut "$SMPROGRAMS\VoyIPcam\CompanyWebsite.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
CreateShortCut "$SMPROGRAMS\VoyIPcam\Uninstall.lnk" "$INSTDIR\uninst.exe"
CreateShortCut "$SMPROGRAMS\VoyIPcam\SecserverWebsite.lnk" "$INSTDIR\SecserverWebsite.url"
SectionEnd
5,在程序安装完成时进行改写默认执行程序。
; 安装完成页面
!define MUI_FINISHPAGE_RUN
!define MUI_FINISHPAGE_RUN_TEXT "Run Secserver and then Run VoyCMS"
!define MUI_FINISHPAGE_RUN_FUNCTION "RunMultFun"
!insertmacro MUI_PAGE_FINISH
;!define MUI_FINISHPAGE_RUN "$INSTDIR\Client\VoyCMS.exe"
;!insertmacro MUI_PAGE_FINISH
Function RunMultFun
ExecShell "" "$INSTDIR\Server\secserver.exe"
ExecShell "" "$INSTDIR\Client\VoyCMS.exe"
FunctionEnd
6, 如何默认安装语言
在初始中动态更改
Function .onInit
!insertmacro MUI_LANGDLL_DISPLAY
InitPluginsDir
File /oname=$PLUGINSDIR\io.ini directory.ini
FunctionEnd
3,完整的安装源码
见附件
|