advanceinstall打包自动化

239 阅读1分钟

一、powershell自动化构建window程序安装包

  1. 安装advanceinstall程序,构建项目aip文件
  2. 构建aip文件完成后,书写powershell脚本操作advanceinstall

二、步骤:

  1. 获取advanceinstall操作对象: ``$advcinst = New-Object -ComObject AdvancedInstaller
  2. 加载aip项目 $project = $advcinst.LoadProject("aip文件路径")
  3. 获取aip项目版本发布者等信息 $prodDetails = $project.ProductDetails
  4. 输出aip项目作者版本等信息 prodDetails.Name #输出项目名称 $prodDetails.Publisher #输出发布者 $prodDetails.Version #输出版本号 11.修改版本号等信息 $prodDetails.Version = "版本号" $prodDetails.Publisher = "发布者"
  5. 保存aip信息 $project.SaveAs("aip项目路径")
  6. 再次加载项目 $project = $advcinst.LoadProject("aip文件路径")
  7. 获取文件操作对象 $fileComponent = $project.FilesComponent
  8. 获取安装包根目录下文件夹 $appdir = $project.PredefinedFolders.ApplicationFolder

案例操作

$advcinst = New-Object -ComObject AdvancedInstaller #获取advanceInstll操作对象
$project = $advcinst.LoadProject("aip文件路径") #加载aip项目
$prodDetails = $project.ProductDetails  #获取打包程序的版本详情对象
$prodDetails.Name   #输出项目名称
$prodDetails.Publisher  #输出发布者
$prodDetails.Version  #输出版本号
$prodDetails.Version = "10.2.1001"  #修改版本号
$prodDetails.Version   #输出修改后版本号
$project.SaveAs("aip路径") #保存aip文件
$project = $advcinst.LoadProject("aip文件路径")
$appdir = $project.PredefinedFolders.ApplicationFolder  #获取安装包根目录
$appdir.Folders.count  #输出根目录下的文件夹个数
$appdir.Folders[0].name = "app-10.2.1001"   #将根目录下的第1个文件夹重名命为app-10.2.1001
$appdir.Folders[0].name   #输出重名命后文件夹名称
$fileComponent = $project.FilesComponent  #获取操作文件对象
if(!$fileComponent){  #判断操作文件对象是否为null
    echo "fileComponent is null"
}
else{
    $appFolder = $appdir.Folders[0]  #获取安装包根目录下文件夹对象
    $appFile = $appFolder.Files    #获取文件夹下所有文件
    if($appFile.count -ne 0){  #判断文件夹下是否为空 不为空则删除文件
        $appFile.DeleteFile()
    }
    $folderComponent = $project.FoldersComponent #获取文件夹操作对象
    $packageFolder = $folderComponent.FindFolderByPath($appFolder.FullPath +"\Packages") #根据路径查找对应文件夹
    $packageFile = $packageFolder.Files  #获取对应文件夹下的文件
    if($packageFile.count -ne 0){  #判断文件夹是否为空 不为空则删除文件
        $packageFile.DeleteFile()    
    }
    $addstartFiles = $fileComponent.AddFolderContentS("APPDIR","C:\Release\New folder")  #添加New Folder文件夹下文件添加到APPDIR
	$addAppFlies = $fileComponent.AddFolderContentS("APPDIR\app-10.2.1001","C:\Release\Release")  #将文件夹下Relese的文件添加到APPDIR\app-10.2.1001
	$addPackageFiles = $fileComponent.AddFolderContentS("APPDIR\app-10.2.1001\Packages","C:\packages-10.2.1001") #将package-10.2.1001文件夹下文件添加到APPDIR\app-10.2.1001\Packages
	$project.SaveAs("aip路径") #保存aip文件
    $project.Build()  #构建

}