正式会员享受无限制浏览网站功能和高速网盘下载,赶快加入本站吧!
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- InstallShield 操作XML是用的DOM文档对象模型,这东西就比较好弄了。
- prototype CreateXml(STRING);
- prototype DelteXmlNode(STRING);
- prototype UpdateXmlNode(STRING);
- prototype InsertXmlNode(STRING);
- //创建一个XML文档
- function CreateXml(szFile)
- OBJECT objXml;
- STRING strXML;
- begin
- //开始创建XML文档
- set objXml = CreateObject("MSXML.DOMDocument");//创建一个DOM对象
- if (IsObject(objXml) = FALSE ) then
- MessageBox("出错,系统不支持使用DOM对象",SEVERE);
- endif;
- objXml.async = FALSE;
- ///r/n是回车换行 让内容更美观点 呵呵
- strXML = "<?xml version=/"1.0/" encoding=/"utf-8/" ?>/r/n"
- + "<INVENTORY>/r/n"
- +"<BOOK><TITLE src =/"www/">One</TITLE><PRICE>1.0</PRICE></BOOK>/r/n"
- +"<BOOK><TITLE>Two</TITLE><PRICE>2.0</PRICE></BOOK>/r/n"
- +"<BOOK><TITLE>Three</TITLE><PRICE>3.0</PRICE></BOOK>/r/n"
- +"</INVENTORY>/r/n";
- objXml.loadXML(strXML);//可以用片段很容易就弄一个XML文档出来
- objXml.save(szFile); //保存
- set objXml = NOTHING;
- end;
- //插入一个节点值
- function InsertXmlNode(szFile)
- OBJECT objXml;
- OBJECT objRoot,objNode;
- OBJECT objBook,objTitle,objAttributeNode;
- begin
- set objXml = CreateObject("MSXML.DOMDocument");//创建一个DOM对象
- if (IsObject(objXml) = FALSE ) then
- MessageBox("出错,系统不支持使用DOM对象",SEVERE);
- endif;
- objXml.async = FALSE;
- objXml.load(szFile);//加载原有XML文档
- set objRoot = objXml.documentElement; //取根节点
- set objBook = objXml.CreateElement("BOOK");
- //objBook.text = "Free";
- set objTitle = objXml.CreateElement("TITLE");
- objTitle.text = "4";
- set objAttributeNode = objXml.CreateNode("attribute","src","");
- objAttributeNode.text = "ww";
- objTitle.SetAttributeNode(objAttributeNode); //添加属性节点
-
- objBook.appendChild(objTitle);
- objRoot.appendChild(objBook); //添加节点
- objXml.save(szFile); //保存
-
- set objBook = NOTHING;
- set objTitle = NOTHING;
- set objXml = NOTHING;
- end;
- //更新某个节点值
- function UpdateXmlNode(szFile)
- OBJECT objXml;
- OBJECT objRoot,objNode;
- begin
- set objXml = CreateObject("MSXML.DOMDocument");//创建一个DOM对象
- if (IsObject(objXml) = FALSE ) then
- MessageBox("出错,系统不支持使用DOM对象",SEVERE);
- endif;
- objXml.async = FALSE;
- objXml.load(szFile);//加载原有XML文档
- set objRoot = objXml.documentElement; //取根节点
- //MessageBox(objRoot.xml,SEVERE); //输出所有节点测试
- set objNode = objRoot.selectSingleNode("BOOK/TITLE");//查找TITLE节点
- //MessageBox(objNode.text,SEVERE); //输出他的值
- objNode.text = "Hello";//改变值
- objXml.save(szFile); //保存
- set objNode = NOTHING;
- set objXml = NOTHING;
- end;
- //删除某个节点
- function DelteXmlNode(szFile)
- OBJECT objXml;
- OBJECT objRoot,objNode;
- begin
- set objXml = CreateObject("MSXML.DOMDocument");//创建一个DOM对象
- if (IsObject(objXml) = FALSE ) then
- MessageBox("出错,系统不支持使用DOM对象",SEVERE);
- endif;
- objXml.async = FALSE;
- objXml.load(szFile);//加载原有XML文档
- set objRoot = objXml.documentElement; //取根节点
- //MessageBox(objRoot.xml,SEVERE); //输出所有节点测试
- set objNode = objRoot.selectSingleNode("BOOK/TITLE");//查找TITLE节点
- //MessageBox(objNode.text,SEVERE); //输出他的值
- objNode.ParentNode.removeChild(objNode);//删除该节点
- objXml.save(szFile); //保存
- set objNode = NOTHING;
- set objXml = NOTHING;
- end;
- //一些操作INI文本文件的函数
- prototype CreateIni(STRING);
- prototype ReadIni(STRING);
- prototype SelectIni(STRING,STRING);
- prototype InsertIni(STRING,STRING);
- //创建INI配置文件
- function CreateIni(szFile)
- HWND file;//文件句柄
- begin
- OpenFileMode(FILE_MODE_APPEND); //打开方式 从末尾写入
- CreateFile(file,"C://",szFile); //创建文件
- WriteLine(file , "This is one line"); //写入一行
- WriteLine(file , "This is two line");
- CloseFile(file); //关闭文件
- end;
-
- //读取配置
- function ReadIni(szFile)
- HWND file;
- STRING szLine;
- begin
- OpenFileMode(FILE_MODE_NORMAL); //打开方式 读取从头开始
- OpenFile(file,"C://",szFile); //创建文件
- GetLine(file,szLine);
- MessageBox(szLine,SEVERE);
- CloseFile(file); //关闭文件
- end;
- //查找某行
- function SelectIni(szFile,Selectstr)
- STRING szLine;
- NUMBER szNum;
- begin
- OpenFileMode(FILE_MODE_NORMAL); //打开方式
- FileGrep(szFile,Selectstr,szLine,szNum,RESTART);
- //MessageBox(szLine,SEVERE);//弹出内容
- return szNum; //返回行号
- end;
- //插入一行
- function InsertIni(szFile,Selectstr)
- NUMBER szNum ;
- STRING str;
- begin
- szNum = SelectIni(szFile,Selectstr); //取行号
- NumToStr(str,szNum);
- MessageBox(str,SEVERE);//行号
- FileInsertLine(szFile,"The Free Line",szNum,AFTER);
- end;
- //////////////////////////////////////////////////////////
- //
- // 改写文件属性,去掉只读或隐藏属性!(这是别人写的一个函数 保存在此)
- //
- /////////////////////////////////////////////////////////////
- export prototype ChangefileInfo(STRING);
- function ChangefileInfo(FileNames)
- STRING szFiles,szPath,svResult;
- NUMBER nvResult;
- begin
-
- if (GetFileInfo(FileNames,FILE_ATTRIBUTE, nvResult, svResult)=0) then;
- if (nvResult = FILE_ATTR_NORMAL) then
- //do nothing;
- else
- if (FILE_ATTR_HIDDEN & nvResult) then
- SetFileInfo (FileNames,FILE_ATTRIBUTE,FILE_ATTR_NORMAL,"");
- endif;
- if (FILE_ATTR_READONLY & nvResult) then
- SetFileInfo (FileNames,FILE_ATTRIBUTE,FILE_ATTR_NORMAL,"");
- endif;
- endif;
- endif;
- end;
- <网上找的一段代码,很有用>
- InstallShield脚本中通常需要增加的内容
- 在开始复制文件之前的提示框里,显示给用户自己设置的内容以确认是一个不错的习惯。。。
- ListAddString(listStartCopy, "目标路径:" + INSTALLDIR, AFTER);
- ListAddString(listStartCopy, "", AFTER);
- ListAddString(listStartCopy, "您选择了以下组件:", AFTER);
- list = ListCreate(STRINGLIST);
- FeatureListItems(MEDIA, "Services", list);
- nResult = ListGetFirstString(list, svItem);
- while (nResult != END_OF_LIST)
- if FeatureIsItemSelected(MEDIA, svItem) then
- FeatureGetData (MEDIA, svItem, FEATURE_FIELD_DISPLAYNAME, nvResult, svResult);
- ListAddString(listStartCopy, " " + svResult, AFTER);
- endif;
- nResult = ListGetNextString(list, svItem);
- endwhile;
- ListDestroy(list);
复制代码
|