前沿拓展:
installshield20
我用的是ine函数,在声明变量的部分,要添加五个变量,szPath是记录安装路径的,szServer是记录机器类型的
//NNLL添加变量
string szPath,szServer;
string szKey;
number nType,nRootKey;
//NNLL添加结束
在Dlg_SdFeatureTree后,添加下面的脚本,读取安装路径和机器类型,设置安装路径
//提取注册表,取安装路径和是否服务器端
//置根为nRootKey
nRootKey = HKEY_LOCAL_MACHINE;
RegDBSetDefaultRoot (nRootKey);
//取安装路径
szKey="SOFTWARE//NNLL";
if RegDBKeyExist(szKey) = 1 then
//存在这个项,取这个项下的键值
nSize=-1;
nType=REGDB_STRING;
//取安装路径
szName="install";
RegDBGetKeyValueEx (szKey, szName, nType, szPath, nSize);
//取是否服务器端
szName="sc";
RegDBGetKeyValueEx (szKey, szName, nType, szServer, nSize);
//设置安装路径
TARGETDIR=szPath;
else
//如果没有这个注册项,退出升级程序
MessageBox("升级程序在非法安装的程序上无效,请购买正版软件",SEVERE);
abort;
endif;
上面取到的szServer是机器类型,要根据这个的值,判断是不是要用升级数据库,很简单的,给Dlg_SQLServer和Dlg_ObjDialogs加上判断就行了
if szServer="S" then
//如果是服务器端的,就升级数据库
Dlg_SQLServer:
nResult = OnSQLServerInitialize( nResult );
if( nResult = BACK ) goto Dlg_SdFeatureTree;
Dlg_ObjDialogs:
nResult = ShowObjWizardPages( nResult );
if (nResult = BACK) goto Dlg_SQLServer;
endif;
这段是判断sc,如果值是S,就是服务器机器,要升级数据库
下面我说一下升级数据库的问题,在Server Configuration->SQL Script里,添加连接,给连接添加一个sql脚本,把你的数据库要升级的东西,全都写在脚本里,就可以了
看我这一段,我在数据库里,有一个表,叫nnll_version,里面有一个build字段,是记录补丁号的,我每次升级,最少也要把这个补丁号写上,所以我的最简单升级脚本就是这个
use NNLLTABLE
declare @build varchar(20)
select @build=build from nnll_version
if ( @build<'20061117' )
begin
update nnll_version set build='20061117'
end
go
关于升级数据库脚本的设置,详细的可以看这篇博客:
http://blog.csdn.net/JavaProgramers/archive/2008/04/15/2293879.aspx
下面呢,我再说这个升级的安装程序搞好后,每个版本要怎么搞,嗯,我的意思是啊,我在20061117升级了程序,我做了一个升级程序的工程,如果我在20061217程序又要升级了,我们不用重新做一个升级程序的工程的,修改下面几项:
1、项目名称:菜单Project->Settings,在Application标签,修改Product的设置,我是这样设置的:NNLL的软件 v1 build 20061117 升级程序
2、要升级的文件:Organization->Setup Design,在这里,要重新设置对应的Component里面的Static File Links,把原来的文件去掉,换上新的文件就可以了
3、要升级的数据库脚本:Server Configuration->SQL Scripts,在这里,把你的脚本重新修改成新的
4、安装包的名字:Media->Releases,选中你的安装包,补丁文件都是单文件的好,所以呢,是SINGLE_EXE_IMAGE,选中这个,就可以修改他的属性了,修改Single Exe File Name,我是修改成:NNLL软件v1build20061117补丁.exe
5、项目名称:菜单Project->Settings,在Application标签,Product那一栏的id编号,点击Change按钮,这样第二次使用这个projcet,build出来的升级程序时,就不会叫你卸载
最后呢,就是重新生成安装包:菜单Build->Build SINGLE_EXE_IMAGE,等生成完了,你就可以在Media/SINGLE_EXE_IMAGE/Package目录下找到你的升级程序了
我说一下我的这个办法有什么不好的地方
1、我放成installshield11.5的新功能不用,自己想了一个办法,嗯,是因为我对着一堆的英文,看得很辛苦,对中文也辛苦
2、如果有坏蛋的用户,他们升级客户端机器,不升级服务器,那我的数据库就变成没有升级了,如果升级程序有动了数据库结构,那新的文件版本就对不上旧的数据库了,客户端运行的时候,肯定会报错,用户就肯定会找你的,说你的软件出错了
我想过这个的解决办法,就是要读取数据库的信息,如果数据库里面build字段是>=当前升级脚本的补丁号的,那就允许升级客户端机器,else呢,来一个
MessageBox("请先升级服务器",SEVERE);
abort;
嗯,我不知道怎么在installshield的脚本里读数据库里的build的值,所以我不知道这个办法怎么搞
我想过把这个数据库的版本号写在注册表里,那就要安装程序也修改了,要再加一个注册表键值,好麻烦啊,我不要搞了,谁喜欢,谁搞
3、反安装的问题,这样子搞法,连补丁都可以反安装了,还要是反安装补丁后,是把补丁里面的文件删除的,就是说呢,如果有用户反安装了补丁,那我们的软件就变成少了几个文件了,安装程序是可以设置不可以反安装的,我现在还不懂怎么搞.
做建筑,必定少不了要用CAD,
即便你软件用的溜,
也难免会出现CAD说**就**的情况
但更可怕的是
CAD不但要崩,关键时刻还没点保存
(就问你怕不怕)
别担心,今天为大家整理了一些技巧
避免CAD再出错!
温馨提示:
事后补救永远不如提前预防
备份存档!备份存档!备份存档!
CAD安装错误?
ikernel.exe程序是Windows在安装程序时的引擎,运行各种软件的安装程序的时候必须有这个文件支持才行。
它不允许启动时有两个这样的程序同时运行,如果有的话,就会导致无法安装。你可以按“Ctrl+Alt+Del”,查看“任务管理器”中是否有这个文件,如果有,选中它点“结束任务”按钮,就可以解决问题了。
很多朋友在安装软件时,有时会提示“安装程序启动安装引擎失败:不支持此接口”,导致无法安装(安装引擎,比如microsoft的Windows InstallService.之类的,也可能是其它安装器的引擎)。
方法一:
请检查是否具有管理员的权限。
方法二:
可能是系统文件损坏或被修改,请尝试用SFC命令修复一下。用参数scannow立即扫描所有受保护的系统文件。一次扫描所有受保护的系统文件。
方法三:
是否安装了其它有冲突的软件,如安装了(百度)IE搜索伴侣和ACDSEE5.0(特别是迷你中文版),有时就会导致这种现象,请卸掉5.0,找个其它版本(如4.0)的装一下。网上有一个版本的ACD See 5.0中文版对Windows 有一个严重的摧毁作用,这个版本有一个特殊的标记:就是它的图标(ico)上面有一个小小的五星红旗。安装了这个版本后,Windows的组件服务将被破坏,IIS的asp程无法运行,另外,许多程序装时会出错,提示“安装程序启动安装引擎失败,不支持此接口!”,可以卸载这个版本的和搜索工具和ACD See,删除[HKEY_LOCAL_MACHINEsoftware]下面的百度工具和ACD See项。
方法四:
有的软件安装需要windows installer支持,一般解决方法为:在控制面板->管理工具->服务中,找到 windows installer服务,把启动类型改为手动,第二启动即可。记住安装好程序后将此服务停止。如果仍然存在问题,请到微软站点下载最新的windows installer。
方法五:
安装文件是单线程的,查看正在运行的进程,如果里面有ikernel.exe,则表示现在无法安装,结束此进程,第二再安装就OK了。
方法六:
进入系统所在分区program files -> common fiels -> installshield -> engine-> 6 – > intel32,把这个文件夹中的文件全部删除(或直接把engine整个文件夹都删了),重新启动,第二再安装。
方法七:
现在的好多的软件的安装程序都不是exe的而是msi,而msi是一种新的安装程序的脚本文件。就算有的安装程序是exe的但在它的安装目录里也有个msi文件,实际上是exe调用msi文件来安装程序的。msi是脚本文件,实际上真正运行脚本文件的是“msiexec.exe”它就是一切问题的原因。需要安装instmsiw.exe这个文件,instmsiw.exe是一个压缩包里面包括了所有关于运行msi所需要的文件。运行后问题就可解决了。
方法八:
因为NORDON杀毒软件会把INSTALL SHIELD那个ikernel.exe文件误认为**。退出防火墙,重新启动,就好了。
方法九:
安装NORTON SYTEMWORKS,用它的WINDOCTOR自动修复,第二用了NORTON SYTEMWORKS的ONE BUTTON CHECKUP,重启。
方法十:
当然是重装系统啦,前九种方法均无效时也只有这样做了。
CAD致命错误?
CAD是一种对作图环境要求较高的软件,有些时候开启的程序过多,或者打开了一些带有恶意代码的网页会使得AutoCAD出现异常;有的时候**作失误或打开的图形过大,也会导致错误出现;有的时候,版本转换、块的插入有问题等一些不确定的因素,也会导致图形损坏而发生各种各样的致命错误。
4招帮你搞定致命错误!
1.检查与修复
很多时候需要导入从其他电脑拷贝来的AutoCAD格式的图纸,这样的图导入后在进行修改或者其他一些**作的时候会发生致使错误并退出。
解决这种问题的方法是打开“文件”中的“绘图实用程序”,选择其中的“检查”命令,这样可以修复其中的一些错误。如果AutoCAD图不能很顺利地导入或者导入后有一些残缺,可以用Recover工具,打开文件中的“绘图实用程序”下的“修复”,第二选择需要修复的文件夹进行修复就可以了。
2.改变新坐标
有的时候问题不是那么容易解决的,AutoCAD出现错误并通过Recover等工具修复后,仍然会有错误提示此时可以浓度建立一下新作图环境。
新建一个AutoCAD文件,第二把需要修复的文件作为一个块插入进来,注意插入的时候改变一下插入的点坐标,如原来系统黑夜是(0,0),改为(1,1),或者其他坐标都可以。顺利插入以后,再整体移动到(0,0)这个原始坐标。
3.带基本**
AutoCAD的版本有很多,目前常用到的版本有AutoCAD 2007,这种情况下就需要经常在高版本和低版本之间转换因此也会导致错误的出现。
遇到这样的情况可以用高版本的AutoCAD新建一个AutoCAD文件,用它打开原来的图,选中所有的实体,选择“编辑”中的“带基点**”命令,第二粘贴到新文件,转成低版本,这样问题就解决了。
4. 从“加载”下手
致命错误出现以后,新建一个CAD文件,第二打开需要修复的文件,在文件读取的瞬间多次Ese键,这样做的目的是阻止AutoCAD菜单实用程序的加载,也会打开一些已损坏的文件。接下来在命令行中输入Dxfin,选择刚刚输出的文件,成功加载后进行保存,这样也会解决一些错误问题。
使CAD错误出现原因很多,解决的方法也很多。事后补救永远不如提前预防,充分利用备份文件和自动存档文件,养成良好的作图习惯是最重要的。
拓展知识:
installshield20
现在都没这个版本了吧 ,有2010的
前沿拓展:
installshield20
我用的是ine函数,在声明变量的部分,要添加五个变量,szPath是记录安装路径的,szServer是记录机器类型的
//NNLL添加变量
string szPath,szServer;
string szKey;
number nType,nRootKey;
//NNLL添加结束
在Dlg_SdFeatureTree后,添加下面的脚本,读取安装路径和机器类型,设置安装路径
//提取注册表,取安装路径和是否服务器端
//置根为nRootKey
nRootKey = HKEY_LOCAL_MACHINE;
RegDBSetDefaultRoot (nRootKey);
//取安装路径
szKey="SOFTWARE//NNLL";
if RegDBKeyExist(szKey) = 1 then
//存在这个项,取这个项下的键值
nSize=-1;
nType=REGDB_STRING;
//取安装路径
szName="install";
RegDBGetKeyValueEx (szKey, szName, nType, szPath, nSize);
//取是否服务器端
szName="sc";
RegDBGetKeyValueEx (szKey, szName, nType, szServer, nSize);
//设置安装路径
TARGETDIR=szPath;
else
//如果没有这个注册项,退出升级程序
MessageBox("升级程序在非法安装的程序上无效,请购买正版软件",SEVERE);
abort;
endif;
上面取到的szServer是机器类型,要根据这个的值,判断是不是要用升级数据库,很简单的,给Dlg_SQLServer和Dlg_ObjDialogs加上判断就行了
if szServer="S" then
//如果是服务器端的,就升级数据库
Dlg_SQLServer:
nResult = OnSQLServerInitialize( nResult );
if( nResult = BACK ) goto Dlg_SdFeatureTree;
Dlg_ObjDialogs:
nResult = ShowObjWizardPages( nResult );
if (nResult = BACK) goto Dlg_SQLServer;
endif;
这段是判断sc,如果值是S,就是服务器机器,要升级数据库
下面我说一下升级数据库的问题,在Server Configuration->SQL Script里,添加连接,给连接添加一个sql脚本,把你的数据库要升级的东西,全都写在脚本里,就可以了
看我这一段,我在数据库里,有一个表,叫nnll_version,里面有一个build字段,是记录补丁号的,我每次升级,最少也要把这个补丁号写上,所以我的最简单升级脚本就是这个
use NNLLTABLE
declare @build varchar(20)
select @build=build from nnll_version
if ( @build<'20061117' )
begin
update nnll_version set build='20061117'
end
go
关于升级数据库脚本的设置,详细的可以看这篇博客:
http://blog.csdn.net/JavaProgramers/archive/2008/04/15/2293879.aspx
下面呢,我再说这个升级的安装程序搞好后,每个版本要怎么搞,嗯,我的意思是啊,我在20061117升级了程序,我做了一个升级程序的工程,如果我在20061217程序又要升级了,我们不用重新做一个升级程序的工程的,修改下面几项:
1、项目名称:菜单Project->Settings,在Application标签,修改Product的设置,我是这样设置的:NNLL的软件 v1 build 20061117 升级程序
2、要升级的文件:Organization->Setup Design,在这里,要重新设置对应的Component里面的Static File Links,把原来的文件去掉,换上新的文件就可以了
3、要升级的数据库脚本:Server Configuration->SQL Scripts,在这里,把你的脚本重新修改成新的
4、安装包的名字:Media->Releases,选中你的安装包,补丁文件都是单文件的好,所以呢,是SINGLE_EXE_IMAGE,选中这个,就可以修改他的属性了,修改Single Exe File Name,我是修改成:NNLL软件v1build20061117补丁.exe
5、项目名称:菜单Project->Settings,在Application标签,Product那一栏的id编号,点击Change按钮,这样第二次使用这个projcet,build出来的升级程序时,就不会叫你卸载
最后呢,就是重新生成安装包:菜单Build->Build SINGLE_EXE_IMAGE,等生成完了,你就可以在Media/SINGLE_EXE_IMAGE/Package目录下找到你的升级程序了
我说一下我的这个办法有什么不好的地方
1、我放成installshield11.5的新功能不用,自己想了一个办法,嗯,是因为我对着一堆的英文,看得很辛苦,对中文也辛苦
2、如果有坏蛋的用户,他们升级客户端机器,不升级服务器,那我的数据库就变成没有升级了,如果升级程序有动了数据库结构,那新的文件版本就对不上旧的数据库了,客户端运行的时候,肯定会报错,用户就肯定会找你的,说你的软件出错了
我想过这个的解决办法,就是要读取数据库的信息,如果数据库里面build字段是>=当前升级脚本的补丁号的,那就允许升级客户端机器,else呢,来一个
MessageBox("请先升级服务器",SEVERE);
abort;
嗯,我不知道怎么在installshield的脚本里读数据库里的build的值,所以我不知道这个办法怎么搞
我想过把这个数据库的版本号写在注册表里,那就要安装程序也修改了,要再加一个注册表键值,好麻烦啊,我不要搞了,谁喜欢,谁搞
3、反安装的问题,这样子搞法,连补丁都可以反安装了,还要是反安装补丁后,是把补丁里面的文件删除的,就是说呢,如果有用户反安装了补丁,那我们的软件就变成少了几个文件了,安装程序是可以设置不可以反安装的,我现在还不懂怎么搞.
做建筑,必定少不了要用CAD,
即便你软件用的溜,
也难免会出现CAD说**就**的情况
但更可怕的是
CAD不但要崩,关键时刻还没点保存
(就问你怕不怕)
别担心,今天为大家整理了一些技巧
避免CAD再出错!
温馨提示:
事后补救永远不如提前预防
备份存档!备份存档!备份存档!
CAD安装错误?
ikernel.exe程序是Windows在安装程序时的引擎,运行各种软件的安装程序的时候必须有这个文件支持才行。
它不允许启动时有两个这样的程序同时运行,如果有的话,就会导致无法安装。你可以按“Ctrl+Alt+Del”,查看“任务管理器”中是否有这个文件,如果有,选中它点“结束任务”按钮,就可以解决问题了。
很多朋友在安装软件时,有时会提示“安装程序启动安装引擎失败:不支持此接口”,导致无法安装(安装引擎,比如microsoft的Windows InstallService.之类的,也可能是其它安装器的引擎)。
方法一:
请检查是否具有管理员的权限。
方法二:
可能是系统文件损坏或被修改,请尝试用SFC命令修复一下。用参数scannow立即扫描所有受保护的系统文件。一次扫描所有受保护的系统文件。
方法三:
是否安装了其它有冲突的软件,如安装了(百度)IE搜索伴侣和ACDSEE5.0(特别是迷你中文版),有时就会导致这种现象,请卸掉5.0,找个其它版本(如4.0)的装一下。网上有一个版本的ACD See 5.0中文版对Windows 有一个严重的摧毁作用,这个版本有一个特殊的标记:就是它的图标(ico)上面有一个小小的五星红旗。安装了这个版本后,Windows的组件服务将被破坏,IIS的asp程无法运行,另外,许多程序装时会出错,提示“安装程序启动安装引擎失败,不支持此接口!”,可以卸载这个版本的和搜索工具和ACD See,删除[HKEY_LOCAL_MACHINEsoftware]下面的百度工具和ACD See项。
方法四:
有的软件安装需要windows installer支持,一般解决方法为:在控制面板->管理工具->服务中,找到 windows installer服务,把启动类型改为手动,第二启动即可。记住安装好程序后将此服务停止。如果仍然存在问题,请到微软站点下载最新的windows installer。
方法五:
安装文件是单线程的,查看正在运行的进程,如果里面有ikernel.exe,则表示现在无法安装,结束此进程,第二再安装就OK了。
方法六:
进入系统所在分区program files -> common fiels -> installshield -> engine-> 6 – > intel32,把这个文件夹中的文件全部删除(或直接把engine整个文件夹都删了),重新启动,第二再安装。
方法七:
现在的好多的软件的安装程序都不是exe的而是msi,而msi是一种新的安装程序的脚本文件。就算有的安装程序是exe的但在它的安装目录里也有个msi文件,实际上是exe调用msi文件来安装程序的。msi是脚本文件,实际上真正运行脚本文件的是“msiexec.exe”它就是一切问题的原因。需要安装instmsiw.exe这个文件,instmsiw.exe是一个压缩包里面包括了所有关于运行msi所需要的文件。运行后问题就可解决了。
方法八:
因为NORDON杀毒软件会把INSTALL SHIELD那个ikernel.exe文件误认为**。退出防火墙,重新启动,就好了。
方法九:
安装NORTON SYTEMWORKS,用它的WINDOCTOR自动修复,第二用了NORTON SYTEMWORKS的ONE BUTTON CHECKUP,重启。
方法十:
当然是重装系统啦,前九种方法均无效时也只有这样做了。
CAD致命错误?
CAD是一种对作图环境要求较高的软件,有些时候开启的程序过多,或者打开了一些带有恶意代码的网页会使得AutoCAD出现异常;有的时候**作失误或打开的图形过大,也会导致错误出现;有的时候,版本转换、块的插入有问题等一些不确定的因素,也会导致图形损坏而发生各种各样的致命错误。
4招帮你搞定致命错误!
1.检查与修复
很多时候需要导入从其他电脑拷贝来的AutoCAD格式的图纸,这样的图导入后在进行修改或者其他一些**作的时候会发生致使错误并退出。
解决这种问题的方法是打开“文件”中的“绘图实用程序”,选择其中的“检查”命令,这样可以修复其中的一些错误。如果AutoCAD图不能很顺利地导入或者导入后有一些残缺,可以用Recover工具,打开文件中的“绘图实用程序”下的“修复”,第二选择需要修复的文件夹进行修复就可以了。
2.改变新坐标
有的时候问题不是那么容易解决的,AutoCAD出现错误并通过Recover等工具修复后,仍然会有错误提示此时可以浓度建立一下新作图环境。
新建一个AutoCAD文件,第二把需要修复的文件作为一个块插入进来,注意插入的时候改变一下插入的点坐标,如原来系统黑夜是(0,0),改为(1,1),或者其他坐标都可以。顺利插入以后,再整体移动到(0,0)这个原始坐标。
3.带基本**
AutoCAD的版本有很多,目前常用到的版本有AutoCAD 2007,这种情况下就需要经常在高版本和低版本之间转换因此也会导致错误的出现。
遇到这样的情况可以用高版本的AutoCAD新建一个AutoCAD文件,用它打开原来的图,选中所有的实体,选择“编辑”中的“带基点**”命令,第二粘贴到新文件,转成低版本,这样问题就解决了。
4. 从“加载”下手
致命错误出现以后,新建一个CAD文件,第二打开需要修复的文件,在文件读取的瞬间多次Ese键,这样做的目的是阻止AutoCAD菜单实用程序的加载,也会打开一些已损坏的文件。接下来在命令行中输入Dxfin,选择刚刚输出的文件,成功加载后进行保存,这样也会解决一些错误问题。
使CAD错误出现原因很多,解决的方法也很多。事后补救永远不如提前预防,充分利用备份文件和自动存档文件,养成良好的作图习惯是最重要的。
拓展知识:
installshield20
现在都没这个版本了吧 ,有2010的
原创文章,作者:九贤生活小编,如若转载,请注明出处:http://www.wangguangwei.com/15615.html