# aardio 范例: 自动安装软件



```aardio
import process.cache;

//用下面的方法可以搜索运行或 AppPath 注册过的程序，找不到再查找快捷方式
var blenderPath = process.cache.find("blender-launcher.exe");
if(io.exist(blenderPath)){
	return print("已安装:",blenderPath) //获取已安装的路径，已验证可用
}

import inet.installer;
import web.rest.htmlClient;

var downloadBlender
var http = web.rest.htmlClient();
var htmlDoc,err = http.get("https://www.blender.org/download/");
if(htmlDoc){ 
	var linkEle = htmlDoc.queryEle(href="blender[^\n]+windows[^\n]+\.msi/?");
	if(linkEle){ //获取下载链接，已验证可用 
	
		// The button is a landing page, not the MSI..
    	htmlDoc,err=..web.rest.htmlClient.get(linkEle.href);
    	if(!htmlDoc) return print("解析 Blender 下载地址失败");
    	
    	linkEle =   htmlDoc.queryEle(tagName="a";href=`blender[^\n]+windows[^\n]+\.msi$`);
    	if(!linkEle) return print("获取最终 Blender 下载地址失败");

		//以进程默认权限自动安装 MSI ，改为 inet.installer 则以管理权限安装 MSI 文件
		if( inet.installer.asInvoker("Blender",linkEle.href) ){
			return print("安装成功");
		}
		else{
			return print("安装失败");
		}
	}
	else{
		print("未找到安装地址")
	}
}
else{
	print(err)
}
 

```

