JS脚本使用RAR制作安装包
2013-04-10 15:09
716 查看
本文针对使用RAR自解压程序制作安装包:(只需将下面的代码保存成.js结尾的js脚本就可以使用了)
//<script language="JavaScript">
//创建ws对象 可以取得当前脚本所在路径,执行命令、程序等
var ws = new ActiveXObject("wscript.shell");
//创建fso对象 可以遍历目录、读写文件、复制移动文件等
var fso = new ActiveXObject("Scripting.FileSystemObject");
//创建seo对象 可以执行shellexecute函数
var seo = new ActiveXObject("Shell.Application");
//开始遍历脚本所在目录下的目录,每个目录代表一个安装包目录,这里遍历子目录可以批量生成安装包
var arrFolders = searchFolders(ws.currentdirectory);
for(x in arrFolders)
{
try{
//解析目录,判断目录是不是安装包目录
var strSetupName = parseFolder(arrFolders[x]);
if (strSetupName.length > 0) {
//如果该目录是安装包目录,就生成该目录的安装包,并将生成好的安装包strSetupName拷贝到ws.currentdirectory目录下
buildSetup(arrFolders[x], strSetupName, ws.currentdirectory);
}
} catch(err) {
;
}
}
arrFolders=null;
seo = null;
fso = null;
ws = null;
////////////////////////////////////////////////////////////////////////
function alert(message){
try{
ws.Popup(message);
} catch(err) {
;
}
}
////////////////////////////////////////////////////////////////////////
//遍历目录
function searchFolders(path){
var arr = new Array();
try{
var fsoFolder = fso.GetFolder(path);
var fsoFolderEnumerator = new Enumerator(fsoFolder.subfolders);
for (; !fsoFolderEnumerator.atEnd(); fsoFolderEnumerator.moveNext())
{
arr.push(fsoFolderEnumerator.item());
}
fsoFolderEnumerator = null;
fsoFolder = null;
} catch(err) {
;
}
return arr;
}
//解析目录是不是安装包目录,并返回将要生成的安装包的名称,如果path不是有效的安装包目录,返回空字符串
//这里可以自己根据自己的安装程序特定自己特殊处理
function parseFolder(path){
var strFile, txtFile, strText;
strFile = path + "\\QlSetup.ini";
//alert(strFile);
try{
txtFile = fso.OpenTextFile(strFile, 1);
strText = txtFile.ReadAll();
txtFile.Close();
} catch(err) {
;
}
//alert(strText);
var chFirst, chNext, ch;
chFirst = strText.indexOf("QSID=");
if (chFirst >= 0) {
chFirst += 5;
//过滤掉空格之类
for(ch = strText.charAt(chFirst); ch<'0' || ch>'9'; chFirst++, ch = strText.charAt(chFirst));
if (chFirst < strText.length) {
//找到QSID结尾
for(chNext = chFirst + 1, ch = strText.charAt(chNext); ch>='0' && ch<='9'; chNext++,ch = strText.charAt(chNext));
var strSetup;
strSetup = strText.substring(chFirst,chNext);
return strSetup;
}
}
return "";
}
//生成path安装包目录的安装包,安装包名字是setup,然后将安装包放到目标目录destination下,如果不指定destination,就直接放在path下
function buildSetup(path, setup, destination){
var strIcon, strSetup, strDestination;
var strcmd;
strIcon = path + "\\qlsetup.ico";
//alert(strIcon);
strSetup = path + "\\" + setup + ".exe";
//alert(strSetup);
if (destination.length>0) {
strDestination = destination + "\\" + setup + ".exe";
//alert(strDestination);
}
try{
fso.DeleteFile(strSetup, true);
} catch(err) {
;
}
//strcmd = 'a -mc -r -sfx -z..\\setup_c.txt -iicon"' + strIcon + '" ' + strSetup + '"';
strcmd = 'a -mc -r -sfx -iicon.\\qlsetup.ico -z..\\setup_c.txt ' + setup + '.exe';
//alert('rar ' + strcmd + ' ' + path);
try{
//seo.ShellExecute("winrar", strcmd, path, "", 1);
var runcmd = 'cmd /K CD "' + path + '"&&' + 'winrar ' + strcmd + '&&EXIT';
//alert(runcmd);
ws.Run(runcmd, 1, true);
if (strDestination.length>0) {
fso.MoveFile(strSetup, strDestination);
}
} catch(err) {
;
}
}
//</script>
//<script language="JavaScript">
//创建ws对象 可以取得当前脚本所在路径,执行命令、程序等
var ws = new ActiveXObject("wscript.shell");
//创建fso对象 可以遍历目录、读写文件、复制移动文件等
var fso = new ActiveXObject("Scripting.FileSystemObject");
//创建seo对象 可以执行shellexecute函数
var seo = new ActiveXObject("Shell.Application");
//开始遍历脚本所在目录下的目录,每个目录代表一个安装包目录,这里遍历子目录可以批量生成安装包
var arrFolders = searchFolders(ws.currentdirectory);
for(x in arrFolders)
{
try{
//解析目录,判断目录是不是安装包目录
var strSetupName = parseFolder(arrFolders[x]);
if (strSetupName.length > 0) {
//如果该目录是安装包目录,就生成该目录的安装包,并将生成好的安装包strSetupName拷贝到ws.currentdirectory目录下
buildSetup(arrFolders[x], strSetupName, ws.currentdirectory);
}
} catch(err) {
;
}
}
arrFolders=null;
seo = null;
fso = null;
ws = null;
////////////////////////////////////////////////////////////////////////
function alert(message){
try{
ws.Popup(message);
} catch(err) {
;
}
}
////////////////////////////////////////////////////////////////////////
//遍历目录
function searchFolders(path){
var arr = new Array();
try{
var fsoFolder = fso.GetFolder(path);
var fsoFolderEnumerator = new Enumerator(fsoFolder.subfolders);
for (; !fsoFolderEnumerator.atEnd(); fsoFolderEnumerator.moveNext())
{
arr.push(fsoFolderEnumerator.item());
}
fsoFolderEnumerator = null;
fsoFolder = null;
} catch(err) {
;
}
return arr;
}
//解析目录是不是安装包目录,并返回将要生成的安装包的名称,如果path不是有效的安装包目录,返回空字符串
//这里可以自己根据自己的安装程序特定自己特殊处理
function parseFolder(path){
var strFile, txtFile, strText;
strFile = path + "\\QlSetup.ini";
//alert(strFile);
try{
txtFile = fso.OpenTextFile(strFile, 1);
strText = txtFile.ReadAll();
txtFile.Close();
} catch(err) {
;
}
//alert(strText);
var chFirst, chNext, ch;
chFirst = strText.indexOf("QSID=");
if (chFirst >= 0) {
chFirst += 5;
//过滤掉空格之类
for(ch = strText.charAt(chFirst); ch<'0' || ch>'9'; chFirst++, ch = strText.charAt(chFirst));
if (chFirst < strText.length) {
//找到QSID结尾
for(chNext = chFirst + 1, ch = strText.charAt(chNext); ch>='0' && ch<='9'; chNext++,ch = strText.charAt(chNext));
var strSetup;
strSetup = strText.substring(chFirst,chNext);
return strSetup;
}
}
return "";
}
//生成path安装包目录的安装包,安装包名字是setup,然后将安装包放到目标目录destination下,如果不指定destination,就直接放在path下
function buildSetup(path, setup, destination){
var strIcon, strSetup, strDestination;
var strcmd;
strIcon = path + "\\qlsetup.ico";
//alert(strIcon);
strSetup = path + "\\" + setup + ".exe";
//alert(strSetup);
if (destination.length>0) {
strDestination = destination + "\\" + setup + ".exe";
//alert(strDestination);
}
try{
fso.DeleteFile(strSetup, true);
} catch(err) {
;
}
//strcmd = 'a -mc -r -sfx -z..\\setup_c.txt -iicon"' + strIcon + '" ' + strSetup + '"';
strcmd = 'a -mc -r -sfx -iicon.\\qlsetup.ico -z..\\setup_c.txt ' + setup + '.exe';
//alert('rar ' + strcmd + ' ' + path);
try{
//seo.ShellExecute("winrar", strcmd, path, "", 1);
var runcmd = 'cmd /K CD "' + path + '"&&' + 'winrar ' + strcmd + '&&EXIT';
//alert(runcmd);
ws.Run(runcmd, 1, true);
if (strDestination.length>0) {
fso.MoveFile(strSetup, strDestination);
}
} catch(err) {
;
}
}
//</script>
相关文章推荐
- 制作Linux下程序安装包——使用脚本打包bin、run等安装包
- 制作Linux下程序安装包——使用脚本打包bin、run等安装包
- 制作Linux下程序安装包——使用脚本打包bin、run等安装包
- 制作Linux下程序安装包——使用脚本打包bin、run等安装包
- 制作Linux下程序安装包――使用脚本打包bin、run等安装包
- 制作Linux下程序安装包——使用脚本打包bin、run等安装包
- 【Vegas原创】访问owa,图片和js脚本不能正常显示和使用的解决方法
- 对"使用Mono Runtime Bundle制作安装包让C#桌面应用程序脱离net framework"增加说明
- zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
- 使用WIX制作具有时间限制的安装包
- 如何使用shell 脚本手动制作nginx电子书
- 使用Node.js+socket.io制作服务端,unity+socket.io for unity 制作客户端 ,验证位置同步Demo
- Ecshop JS脚本引入方法insert_scripts函数使用和新增
- 看着使用three.js制作的网站效果自己用css3写了一个小demo
- 使用js脚本定时更新页面的方法
- 使用installShield制作一个含调用设置、服务注册及驱动程序的安装包
- 使用NSIS制作安装包(1)
- 使用installshield12制作的安装包在卸载时杀死正在运行的程序
- js特效功能脚本使用大全
- asp使用js脚本的技巧