装很多软件是都要配置VC++环境的,但由于系统注册表限制,很多时候软件安装过程中会报如下错误 安装 vc++2005 运行库 Error 1935.安装程序集
系统:win7 64bit
安装软件:Pearson_English_One_LinGo_2_1.msi
安装过程中出现:Error:2738 Could not access VBScript run time for custom action
分析:应该是Windows的脚本(VBScript)没有被注册。
解决方法:
1.依次点击:开始->运行,注意,要用右键单击命令提示符,然后选择“以管理员身份运行”。
2.命令提示符显示当前路径应该是:C:\Windows\system32>,如果不是,改到这个路径。
3.输入命令reg delete "HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{B54F3741-5B07-11CF-A4B0-00AA004A55E8}"
回车后,选择yes,然后提示The operation completed successfully.
4.输入命令regsvr32 vbscript.dll,注册VBScript
ps:在3和4中如果d出错误“0×80004005”(error0×80004005),是因为没有以管理员权限启动CMD,
到C:\Windows\system32路径下找到cmd然后右键以管理员权限启动即可,再输入上面的命令即可
安装成功!!!
对于其他的错误:在HKEY_Current_User\SOFTWARE\Classes\Wow6432Node\CLSID\{B54F3741-5B07-11CF-A4B0-00AA004A55E8
在不同的关键字之间要有\号隔开!
网上还有其他解决的方法:
Windows 64bit 系统下删除
HKEY_Current_User\SOFTWARE\Classes\Wow6432Node\CLSID\{B54F3741-5B07-11CF-A4B0-00AA004A55E8
然后进入cmd.exe 输入cd %windir%\syswow64
然后输入 regsvr32 vbscript.dll
windows 32bit下删除
HKEY_Current_User\SOFTWARE\Classes\CLSID\{B54F3741-5B07-11CF-A4B0-00AA004A55E8
然后进入cmd.exe 输入cd %windir%\system32
然后输入 regsvr32 vbscript.dll
修改了以下两个注册表项(修改前请先备份或者设置系统还原)
系统是Windows7 64 bit, “开始”->“运行”->“regedit”,找到项“HKEY_CLASSES_ROOT\CLSID\{B54F3741-5B07-11cf-A4B0-00AA004A55E8}\InprocServer32”, 将它的“默认”值改为“C:\Windows\system32\vbscript.dll”(不需要引号,此dll库才是windows中默认打开.vbs脚本的程序)。
在修改之前,要在项“InprocServer32”上右键选择“权限”,给你当前用户添加“完全控制”的权限,再修改即可解决此问题。 这个值解决了开机时显示“无法找到VBScript脚本引擎”的错误 找到这个方法的时候我没有注意是64bit还是32bit,就照法删了以上的值。 后来又查看了一下HKEY_CLASSES_ROOT\CLSID\Wow6432Node\CLSID\{B54F3741-5B07-11CF-A4B0-00AA004A55E8}\InprocServer32 的值已经是正确的C:\Windows\SysWOW64\vbscript.dll 在卸载软件时报错,Error 2738,could not access vbscript runtime for custom action 则需要通过修改下面一个键值解决 HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\Wow6432Node\CLSID\{B54F3741-5B07-11cf-A4B0-00AA004A55E8}\InprocServer32. 把值改为"C:\Windows\SysWOW64\vbscript.dll" 同样需要先设置权限再修改 在修改以上两项时,都可以看到之前的默认dll库是之前卸载了的McAfee的残留项。
改成这样就行了 你的集定义写反了model:
sets:
cang/1,2,3/:wei,vol
wu/1,2,3,4/:w,v,p
link(wu,cang):x!xi,j:第i种货物装进第j个仓的质量
endsets
data:
wei=10,16,8
vol=6800,8700,5300
w=18,15,23,12
v=480,650,580,390
p=3100,3800,3500,2850
enddata
max=@sum(wu(i):p(i)*@sum(cang(j):x(i,j)))
@for(wu(i):@sum(cang(j):x(i,j))<w(i))
@for(cang(j):@sum(wu(i):v(i)*x(i,j))<vol(j))
@for(cang(j):@sum(wu(i):x(i,j))<wei(j))
@for(cang(j):
@for(cang(k)|k#GT#j:
@sum(wu(i):x(i,j)/wei(j))=@sum(wu(i):x(i,k)/wei(k)))
)
end
语法上没有问题啊。然后是 data1txt文件应该放在lingo的安装目录下面。例如你是安装在D盘,那么只需要将data1txt文件放在相应的文件夹里面就是了。对于程序是不需要修改的。
下面是我找的关于@FILE语句的用法:
@file函数
该函数用从外部文件中输入数据,可以放在模型中任何地方。该函数的语法格式为@file(’filename’)。这里filename是文件名,可以采用相对路径和绝对路径两种表示方式。@file函数对同一文件的两种表示方式的处理和对两个不同的文件处理是一样的,这一点必须注意。
例4.14 以例1.2来讲解@file函数的用法。
注意到在例1.2的编码中有两处涉及到数据。第一个地方是集部分的6个warehouses集成员和8个vendors集成员;第二个地方是数据部分的capacity,demand和cost数据。
为了使数据和我们的模型完全分开,我们把它们移到外部的文本文件中。修改模型代码以便于用@file函数把数据从文本文件中拖到模型中来。修改后(修改处代码黑体加粗)的模型代码如下:
model:
!6发点8收点运输问题
sets:
warehouses/ @file('1_2.txt') /: capacity
vendors/ @file('1_2.txt') /: demand
links(warehouses,vendors): cost, volume
endsets
!目标函数
min=@sum(links: cost*volume)
!需求约束
@for(vendors(J):
@sum(warehouses(I): volume(I,J))=demand(J))
!产量约束
@for(warehouses(I):
@sum(vendors(J): volume(I,J))<=capacity(I))
!这里是数据
data:
capacity = @file('1_2.txt')
demand = @file('1_2.txt')
cost = @file('1_2.txt')
enddata
end
模型的所有数据来自于1_2.txt文件。其内容如下:
!warehouses成员
WH1 WH2 WH3 WH4 WH5 WH6 ~
!vendors成员
V1 V2 V3 V4 V5 V6 V7 V8 ~
!产量
60 55 51 43 41 52 ~
!销量
35 37 22 32 41 32 43 38 ~
!单位运输费用矩阵
6 2 6 7 4 2 5 9
4 9 5 3 8 5 8 2
5 2 1 9 7 4 3 3
7 6 7 3 9 2 7 1
2 3 9 5 7 2 6 5
5 5 2 2 8 1 4 3
把记录结束标记(~)之间的数据文件部分称为记录。如果数据文件中没有记录结束标记,那么整个文件被看作单个记录。注意到除了记录结束标记外,模型的文本和数据同它们直接放在模型里是一样的。
我们来看一下在数据文件中的记录结束标记连同模型中@file函数调用是如何工作的。当在模型中第一次调用@file函数时,LINGO打开数据文件,然后读取第一个记录;第二次调用@file函数时,LINGO读取第二个记录等等。文件的最后一条记录可以没有记录结束标记,当遇到文件结束标记时,LINGO会读取最后一条记录,然后关闭文件。如果最后一条记录也有记录结束标记,那么直到LINGO求解完当前模型后才关闭该文件。如果多个文件保持打开状态,可能就会导致一些问题,因为这会使同时打开的文件总数超过允许同时打开文件的上限16。
当使用@file函数时,可把记录的内容(除了一些记录结束标记外)看作是替代模型中@file(’filename’)位置的文本。这也就是说,一条记录可以是声明的一部分,整个声明,或一系列声明。在数据文件中注释被忽略。注意在LINGO中不允许嵌套调用@file函数。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)