一、powershell自动化构建window程序安装包
- 安装advanceinstall程序,构建项目aip文件
- 构建aip文件完成后,书写powershell脚本操作advanceinstall
二、步骤:
- 获取advanceinstall操作对象: ``$advcinst = New-Object -ComObject
AdvancedInstaller
- 加载aip项目
$project = $advcinst.LoadProject("aip文件路径")
- 获取aip项目版本发布者等信息
$prodDetails = $project.ProductDetails
- 输出aip项目作者版本等信息
prodDetails.Name #输出项目名称 $prodDetails.Publisher #输出发布者 $prodDetails.Version #输出版本号
11.修改版本号等信息
$prodDetails.Version = "版本号" $prodDetails.Publisher = "发布者"
- 保存aip信息
$project.SaveAs("aip项目路径")
- 再次加载项目
$project = $advcinst.LoadProject("aip文件路径")
- 获取文件操作对象
$fileComponent = $project.FilesComponent
- 获取安装包根目录下文件夹
$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() #构建
}