学习笔记1:Inno Setup 编译器 5.4.3
周一
看Example1.iss,主要是显示如何复制3个文件并创建一个图标。
安装字段:
AppName是必须的,安装程序标题,始终在安装过程中显示在安装屏幕的左上角以及安装向导中。
AppVersion是必须的且在没有设定AppVerName的值时不能为空,安装程序版本号,显示在添加/删除程序里,可以在卸载注册表项的时候指定最大和最小的版本号进行卸载。
DefaultDirName是必须的,选择安装路径即目标位置向导面中的默认目录名,如果UsePreviousAppDir为yes(默认)及已经安装了一个相同应用程序的先前版本会使用先前选定的代替默认目录名。
DefaultGroupName在安装中使用的默认开始菜单文件夹名。如果这个指令是空白或未指定将用“(Default)”作为名字。
UninstallDisplayIcon在添加/删除程序里显示你想要的程序图标,不指定即为默认图标。
Compression指定要在文件中使用的压缩方法,以及压缩标准。较高标准压缩较好,但压缩的时间较长,而且在压缩/解压缩也需要更多内存。
SolidCompression设为yes,将固实压缩,会使所有文件一次性压缩,而不是单独奔袭压缩。你果安装程序包含许多相同内容文件组合在文件字段中,将会大大提高压缩率。
OutputDir为脚本指定“输出”目录,它在包含这个脚本的目录下创建一个名为“输出”的目录,生成的安装包放在里面。如果没有指定,将被视为相对于SourceDir的位置,文件将被放置在来源目录中。
文件字段:
Source是必须的,来源文件的名字。
DestDir是必须的,文件安装到用户系统中的目录,如果不指定完整路径,编译器将预先考虑你的安装程序来源目录的路径,如果指定的路径在用户系统中不存在,它会自动创建,并在卸载后如果是空的,卸载程序会自动删除。
图标字段:
Name是必须的,要创建的快捷方式的名字和位置,在这个参数中可以使用任何外壳文件夹常量或目录常量。
Filename是必须的,快捷方式的命令行文件名,通常用一个目录常量开头。
注意事项:
1快捷方式是贮存为文字文件,因此在普通文件名中不能使用的字符不这里也同样不能使用。同样,因为不可能有两个相同名字的文件一样,也不可能有两个相同名字的快捷方式。
2使用固实压缩的缺点是会降低一些性能,因为所有文件都被压缩到一个单个压缩流中,安装程序不能随便访问文件。如果某些文件在用户系统中未被提取,它在解压缩下一个文件之前要将所有数据读取(到内存)。
例如,当提取一个特殊文件后用户单击重试,它不能只搜索文件压缩数据的开头。由于所有的文件贮存在一个信息流中,它将搜索整个文件。如果还使用了磁盘延伸,用户还要重新插入磁盘1。
所以,在较大安装程序(比方说大于100MB)或在磁盘延伸安装时不推荐启用固实压缩。它起初设计用于在网络上发布下载时由于文件较小,需要的时间也少。
周二
把Example1.iss和Example2.iss以及Example3.iss比较,加深对整个打包过程和对应函数之间联系的印象。
Example2.iss的区别在于把图标直接放在开始程序菜单里而不是其子文件夹下,并创建一个桌面图标。
安装字段:
去掉了DefaultGroupName和跟压缩有关的指令。
DisableProgramGroupPage默认为no,设置为yes时安装程序将不显示选择开始菜单向导页,设置为auto,安装程序将检查注册表是否有相同应用程序已经安装,如果已有将不显示选择开始菜单目录的向导页,且使用以前的开始菜单文件夹名。
图标字段:
使用公共路径{commonprograms}和{commondesktop}为快捷方式建立路径。
Example3.iss的区别在于创建了一些注册表项,在HKEY_CURRENT_USER和HKEY_LOCAL_MACHIN下创建注册表项,并逐层删除,一个不留。
注册表字段:
Root是必须的,根键。HKCU代表HKEY_CURRENT_USER且HKLM代表HKEY_LOCAL_MACHINE。
Subkey是必须的,子键名,自己创建的注册表目录,可以包含常量。
ValueType键值的数据类型。
ValueName要创建的键值名字,可以包含常量。如果是空白的,将写入到“默认”值。
ValueData键值的数据内容。
Flags:
uninsdeletekey当卸载程序时,删除整个键,包含其中的所有值和子键。
uninsdeletekeyifempty当程序卸载时,如果这个键的内部没有值或子键,则删除这个键。
周三
巩固了前两天学的知识,粗略查看了Languages.iss,准备着明天开始为自己的程序写一个安装包。
添加语言字段、消息字段和定制消息字段,文件字段添加语言包。
[Messages]段用于定义显示在安装程序和卸载程序中的消息,比如改变按钮名称和不同语言显示。
[CustomMessages]段用于定义{cm:...}常量的自定义消息值。
任务字段以选项框和单选项形式在附加任务向导页中出现,光任务本身是不会做任何事情的: 它需要“链接”到其它安装条目。
周四
写admintool的安装包。
学习笔记2:摄像机代理网关CameraDeviceProxy
一、HiSdkCamera
1、通道参数_CHANNEL_PARAM(int stream_type;//ERS_BOTH(double stream),ERS_MAJOR(main steam),ERS_MINOR(secondary stream))摄像机配置_CAMERA_CONFIG // 由IP、通道号唯一确定(int stream_type;//-1未指定则只连接主码流,0-连接双码流,1,连接主码流)远程码流类型enum eRemoteStreamType{ ERS_UNKNOWN = -1, ERS_BOTH,//双码流 ERS_MAJOR,//主码流 ERS_MINOR,//从码流};
2、FAR_CALL __stdcall
3、strncpy的字符串最后一位要置于\0
4、_beginthreadex( void *security, unsigned stack_size, unsigned ( __stdcall *start_address )( void * ), void *arglist, unsigned initflag, unsigned *thrdaddr )thrdaddr接收线程标识符的32位变量指针。
5、ASSERT直接报错崩溃退出。
6、GetTickCount()当前操作系统运行时间
7、_STREAM_OUT_PARAM只在自己的码流回调函数里面有
8、WaitForSingleObject注意死锁
9、cp::frame_t我们自己的码流结构体
10、pu8Buffer数据包含帧头可能有很多种不同结构体
11、CHiSdkCamera继承自ITypedCamera
二、BvconSDKCamera
1、//获取码流所对应的播放句柄
LONG& GetRealHandle(bool bStreamType);
三、JSLSDKCamera
1、拿不到码流:得到设备后就开始调试代码,确认操作和demo一样后,检查了所有参数的值,打开视频里打开视频通道连接中TCP协议的宏定义PROTOCOL_TCP=0x01而不是像文档上写的那样0x00
2、430帧时线程退出:检查了代码确认没有问题后,与代理网关的框架一起调试,没有查出问题,最后测试组那边提了一句心跳,然后就去查看文档里的获取心跳状态函数,就发现最后有一句一定时间内无心跳会与设备断开连接,原来是被设备踢掉了,然后解决方案就是每隔3S从设备获取一次心跳
3、双码流会卡:发现主码流视频播放顺畅,但是双码流的话主从码流都会卡,有时候就完全没图像了。这个猜想是我的临时缓冲区拿到的码流可能信息不全,就使用了它自己的码流数据获取结构体,就不做缓冲区了。
周一
看Example1.iss,主要是显示如何复制3个文件并创建一个图标。
安装字段:
AppName是必须的,安装程序标题,始终在安装过程中显示在安装屏幕的左上角以及安装向导中。
AppVersion是必须的且在没有设定AppVerName的值时不能为空,安装程序版本号,显示在添加/删除程序里,可以在卸载注册表项的时候指定最大和最小的版本号进行卸载。
DefaultDirName是必须的,选择安装路径即目标位置向导面中的默认目录名,如果UsePreviousAppDir为yes(默认)及已经安装了一个相同应用程序的先前版本会使用先前选定的代替默认目录名。
DefaultGroupName在安装中使用的默认开始菜单文件夹名。如果这个指令是空白或未指定将用“(Default)”作为名字。
UninstallDisplayIcon在添加/删除程序里显示你想要的程序图标,不指定即为默认图标。
Compression指定要在文件中使用的压缩方法,以及压缩标准。较高标准压缩较好,但压缩的时间较长,而且在压缩/解压缩也需要更多内存。
SolidCompression设为yes,将固实压缩,会使所有文件一次性压缩,而不是单独奔袭压缩。你果安装程序包含许多相同内容文件组合在文件字段中,将会大大提高压缩率。
OutputDir为脚本指定“输出”目录,它在包含这个脚本的目录下创建一个名为“输出”的目录,生成的安装包放在里面。如果没有指定,将被视为相对于SourceDir的位置,文件将被放置在来源目录中。
文件字段:
Source是必须的,来源文件的名字。
DestDir是必须的,文件安装到用户系统中的目录,如果不指定完整路径,编译器将预先考虑你的安装程序来源目录的路径,如果指定的路径在用户系统中不存在,它会自动创建,并在卸载后如果是空的,卸载程序会自动删除。
图标字段:
Name是必须的,要创建的快捷方式的名字和位置,在这个参数中可以使用任何外壳文件夹常量或目录常量。
Filename是必须的,快捷方式的命令行文件名,通常用一个目录常量开头。
注意事项:
1快捷方式是贮存为文字文件,因此在普通文件名中不能使用的字符不这里也同样不能使用。同样,因为不可能有两个相同名字的文件一样,也不可能有两个相同名字的快捷方式。
2使用固实压缩的缺点是会降低一些性能,因为所有文件都被压缩到一个单个压缩流中,安装程序不能随便访问文件。如果某些文件在用户系统中未被提取,它在解压缩下一个文件之前要将所有数据读取(到内存)。
例如,当提取一个特殊文件后用户单击重试,它不能只搜索文件压缩数据的开头。由于所有的文件贮存在一个信息流中,它将搜索整个文件。如果还使用了磁盘延伸,用户还要重新插入磁盘1。
所以,在较大安装程序(比方说大于100MB)或在磁盘延伸安装时不推荐启用固实压缩。它起初设计用于在网络上发布下载时由于文件较小,需要的时间也少。
周二
把Example1.iss和Example2.iss以及Example3.iss比较,加深对整个打包过程和对应函数之间联系的印象。
Example2.iss的区别在于把图标直接放在开始程序菜单里而不是其子文件夹下,并创建一个桌面图标。
安装字段:
去掉了DefaultGroupName和跟压缩有关的指令。
DisableProgramGroupPage默认为no,设置为yes时安装程序将不显示选择开始菜单向导页,设置为auto,安装程序将检查注册表是否有相同应用程序已经安装,如果已有将不显示选择开始菜单目录的向导页,且使用以前的开始菜单文件夹名。
图标字段:
使用公共路径{commonprograms}和{commondesktop}为快捷方式建立路径。
Example3.iss的区别在于创建了一些注册表项,在HKEY_CURRENT_USER和HKEY_LOCAL_MACHIN下创建注册表项,并逐层删除,一个不留。
注册表字段:
Root是必须的,根键。HKCU代表HKEY_CURRENT_USER且HKLM代表HKEY_LOCAL_MACHINE。
Subkey是必须的,子键名,自己创建的注册表目录,可以包含常量。
ValueType键值的数据类型。
ValueName要创建的键值名字,可以包含常量。如果是空白的,将写入到“默认”值。
ValueData键值的数据内容。
Flags:
uninsdeletekey当卸载程序时,删除整个键,包含其中的所有值和子键。
uninsdeletekeyifempty当程序卸载时,如果这个键的内部没有值或子键,则删除这个键。
周三
巩固了前两天学的知识,粗略查看了Languages.iss,准备着明天开始为自己的程序写一个安装包。
添加语言字段、消息字段和定制消息字段,文件字段添加语言包。
[Messages]段用于定义显示在安装程序和卸载程序中的消息,比如改变按钮名称和不同语言显示。
[CustomMessages]段用于定义{cm:...}常量的自定义消息值。
任务字段以选项框和单选项形式在附加任务向导页中出现,光任务本身是不会做任何事情的: 它需要“链接”到其它安装条目。
周四
写admintool的安装包。
学习笔记2:摄像机代理网关CameraDeviceProxy
一、HiSdkCamera
1、通道参数_CHANNEL_PARAM(int stream_type;//ERS_BOTH(double stream),ERS_MAJOR(main steam),ERS_MINOR(secondary stream))摄像机配置_CAMERA_CONFIG // 由IP、通道号唯一确定(int stream_type;//-1未指定则只连接主码流,0-连接双码流,1,连接主码流)远程码流类型enum eRemoteStreamType{ ERS_UNKNOWN = -1, ERS_BOTH,//双码流 ERS_MAJOR,//主码流 ERS_MINOR,//从码流};
2、FAR_CALL __stdcall
3、strncpy的字符串最后一位要置于\0
4、_beginthreadex( void *security, unsigned stack_size, unsigned ( __stdcall *start_address )( void * ), void *arglist, unsigned initflag, unsigned *thrdaddr )thrdaddr接收线程标识符的32位变量指针。
5、ASSERT直接报错崩溃退出。
6、GetTickCount()当前操作系统运行时间
7、_STREAM_OUT_PARAM只在自己的码流回调函数里面有
8、WaitForSingleObject注意死锁
9、cp::frame_t我们自己的码流结构体
10、pu8Buffer数据包含帧头可能有很多种不同结构体
11、CHiSdkCamera继承自ITypedCamera
二、BvconSDKCamera
1、//获取码流所对应的播放句柄
LONG& GetRealHandle(bool bStreamType);
三、JSLSDKCamera
1、拿不到码流:得到设备后就开始调试代码,确认操作和demo一样后,检查了所有参数的值,打开视频里打开视频通道连接中TCP协议的宏定义PROTOCOL_TCP=0x01而不是像文档上写的那样0x00
2、430帧时线程退出:检查了代码确认没有问题后,与代理网关的框架一起调试,没有查出问题,最后测试组那边提了一句心跳,然后就去查看文档里的获取心跳状态函数,就发现最后有一句一定时间内无心跳会与设备断开连接,原来是被设备踢掉了,然后解决方案就是每隔3S从设备获取一次心跳
3、双码流会卡:发现主码流视频播放顺畅,但是双码流的话主从码流都会卡,有时候就完全没图像了。这个猜想是我的临时缓冲区拿到的码流可能信息不全,就使用了它自己的码流数据获取结构体,就不做缓冲区了。