Azure devops Chocolate无法在Azure管道上安装Inno安装程序

Azure devops Chocolate无法在Azure管道上安装Inno安装程序,azure-devops,inno-setup,azure-pipelines,chocolatey,Azure Devops,Inno Setup,Azure Pipelines,Chocolatey,我正在尝试在Azure Devops上的内置VS2017代理上为我的一个构建管道安装Inno Setup 5,但我在标准输出中得到以下两行代码,但它退出时代码为1,日志文件中没有任何内容。我的问题: Inno是否支持以这种方式安装 我做错了什么 巧克力需要在登录GUI的机器上运行吗 以下是我认为最重要的两行来自stdout的内容 innosetup not installed. An error occurred during installation: The proces

我正在尝试在Azure Devops上的内置VS2017代理上为我的一个构建管道安装
Inno Setup 5
,但我在标准输出中得到以下两行代码,但它退出时代码为1,日志文件中没有任何内容。我的问题:

  • Inno是否支持以这种方式安装
  • 我做错了什么
  • 巧克力需要在登录GUI的机器上运行吗
以下是我认为最重要的两行来自stdout的内容

    innosetup not installed. An error occurred during installation:
    The process cannot access the file '...\.chocolateyPending' because it is being used by another process.
以下是我在Azure Devops上的构建管道:

我的安装程序脚本是用javascript编写的,并在安装依赖项后通过npm脚本执行

const-utils=require('./utils');
常数fs=要求('fs');
const path=require('path');
const spawn=require('child_process')。spawn;
const命令='cmd/c choco install innosetup--yes--force--no progress-ia\'/VERYSILENT\';
const logDirectory=path.join('C:','ProgramData','chocolate','logs');
函数安装(){
返回新承诺(解决=>{
const cmd=command.split(“”).filter((x,i)=>i==0.join(“”);
常量args=command.split(“”).filter((x,i)=>i!==0);
var sqlcmd=spawn(cmd,args);
sqlcmd.stdout.on('data',data=>{
console.log(data.toString().replace(/\r\n$/gmi,');
} )
sqlcmd.stderr.on('data',data=>{
console.error('error',data.toString());
过程。退出(1);
} )
sqlcmd.on('exit',code=>{
解析(代码);
} )
});
}
(异步()=>{
utils.header('installing Inno Setup');
const installExitCode=等待安装();
utils.header('Log directory:',logDirectory);
console.log('*',fs.readdirSync(logDirectory).join('\r\n*');
utils.header('chocolate.log');
createReadStream(path.join(logDirectory,'chocolate.log')).pipe(process.stdout);
utils.header('choco.summary.log');
createReadStream(path.join(logDirectory'choco.summary.log')).pipe(process.stdout);
如果(installExitCode!==0){
log('installer已退出,错误代码为',installExitCode);
进程。退出(installExitCode);
}
})();
以下是我从失败的Azure Devops构建中获得的标准输出:

2019-01-22T18:34:19.0336866Z ########################################
2019-01-22T18:34:19.0337014Z 
2019-01-22T18:34:19.0337191Z   installing Inno Setup
2019-01-22T18:34:19.0337335Z 
2019-01-22T18:34:19.0337513Z Chocolatey v0.10.11
2019-01-22T18:34:19.0337798Z Installing the following packages:
2019-01-22T18:34:19.0338258Z innosetup
2019-01-22T18:34:19.0338554Z By installing you accept licenses for the packages.
2019-01-22T18:34:19.0338705Z 
2019-01-22T18:34:19.0338856Z InnoSetup v5.6.1 (forced) [Approved]
2019-01-22T18:34:19.0339051Z innosetup package files install completed. Performing other installation steps.
2019-01-22T18:34:19.0339266Z innosetup not installed. An error occurred during installation:
2019-01-22T18:34:19.0339462Z  Item has already been added. Key in dictionary: 'NPM_CONFIG_CACHE'  Key being added: 'npm_config_cache'
2019-01-22T18:34:19.0339703Z The process cannot access the file 'C:\ProgramData\chocolatey\lib\InnoSetup\.chocolateyPending' because it is being used by another process.
2019-01-22T18:34:19.0339890Z 
2019-01-22T18:34:19.0340054Z ########################################
2019-01-22T18:34:19.0340204Z 
2019-01-22T18:34:19.0340364Z   Log directory: C:\ProgramData\chocolatey\logs
2019-01-22T18:34:19.0340513Z 
2019-01-22T18:34:19.0340775Z   * choco.summary.log
2019-01-22T18:34:19.0342937Z   * chocolatey.log
2019-01-22T18:34:19.0343090Z 
2019-01-22T18:34:19.0343282Z ########################################
2019-01-22T18:34:19.0343425Z 
2019-01-22T18:34:19.0343598Z   chocolatey.log
2019-01-22T18:34:19.0343738Z 
2019-01-22T18:34:19.0344018Z 
2019-01-22T18:34:19.0344255Z ########################################
2019-01-22T18:34:19.0344406Z 
2019-01-22T18:34:19.0344582Z   choco.summary.log
2019-01-22T18:34:19.0344722Z 
2019-01-22T18:34:19.0344902Z installer exited with error code: 1

要回答您的一些直接问题

Inno是否支持以这种方式安装

是的,innosetup支持以这种方式安装。您可以在packages页面上看到这一点。页面顶部的绿色灯泡表示此软件包版本已通过Chocolate的自动化流程正确安装,从而验证软件包安装是否正确

巧克力需要在登录GUI的机器上运行吗

不,这在大多数情况下是不必要的。有些巧克力包不是静默安装的,用于安装这些软件包的机制“可能”要求安装在实际用户进程中运行,但大多数软件包不需要这样做

我做错了什么

我怀疑在通过npm运行时,以及在承诺范围内安装时,“某物”无法正常工作。查看日志,似乎有以下条目:

2019-01-22T18:34:19.0339462Z项已添加。字典中的键:“NPM\U配置\U缓存”正在添加的键:“NPM\U配置\U缓存”

在巧克力原木的中间,这对我来说毫无意义


我最好的建议是在这个问题上使用独立的Chocolate任务(注意:完全公开,我是这个扩展的作者),或者,尝试在npm之外进行安装,可能直接使用PowerShell任务。

当您在自己的机器上安装该软件包时,该软件包可以工作吗?你试过使用巧克力分机吗?在我的Win10电脑上运行良好。我没有尝试过该扩展,因为代理上安装了Chocolate。名单上的第一项。@GaryEwanPark市场上的扩展似乎与制作包装或在缺少巧克力的机器上安装巧克力有关。我能够很好地执行choco-v,它运行的版本与我在PCN上的版本相同,但我不确定你指的是什么。我链接到的扩展处理以下命令:apikey、config、feature、install、pack、push、source、upgrade,以及执行直接支持的自定义命令的能力。作为第一步,我建议使用该任务执行,删除在执行npm时可能发生的任何“有趣”的事情。@GaryEwanPark我错过了可以安装它的机会。我认为这更多的是关于发布你自己的软件包。它确实有效。不确定运行cli命令的目的是什么,但它可以工作。