如何将接受许可证参数传递给 Apple iTMS Transporter 安装程序?

问题描述 投票:0回答:1

我正在尝试在 Linux 上下载并执行 iTMS Apple Transporter 安装程序 shell 脚本。系统提示我接受许可证,但我想将

--accept
参数传递给脚本,这样我就不需要手动接受。

我跑了

wget -O iTMSTransporter_installer_linux_3.2.sh "https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa/ra/resources/download/public/Transporter__Linux/bin"

然后

./iTMSTransporter_installer_linux_3.2.sh --accept

尽管通过了

--accept
参数,我仍然收到接受许可证的提示。

来自

./iTMSTransporter_installer_linux_3.2.sh
的源代码如下:

initargs="$@"

while true
do
    case "$1" in
    -h | --help)
    MS_Help
    exit 0
    ;;
    -q | --quiet)
    quiet=y
    noprogress=y
    shift
    ;;
    --accept)
    accept=y
    shift
    ;;
    --info)

然后在 PrintLicense() 方法中:


MS_PrintLicense()
{
  PAGER=${PAGER:=more}
  if test x"$licensetxt" != x; then
    PAGER_PATH=`exec <&- 2>&-; which $PAGER || command -v $PAGER || type $PAGER`
    if test -x "$PAGER_PATH"; then
      echo "$licensetxt" | $PAGER
    else
      echo "$licensetxt"
    fi
    if test x"$accept" != xy; then
      while true
      do
        MS_Printf "Please type y to accept, n otherwise: "
        read yn
        if test x"$yn" = xn; then
          keep=n
          eval $finish; exit 1
          break;
        elif test x"$yn" = xy; then
          break;
        fi
      done
sh itmstransporter
1个回答
0
投票

iTMSTransporter 由 makeself 打包 https://makeself.io/.

--accept 参数是同意许可证(如果它是 Makeself 的一部分)。然而,Apple 并未使用此功能。因此它只解压缩自解压脚本中的文件并运行其中的另一个脚本。

不幸的是,内部脚本不允许跳过许可证。内部脚本还有更多理论上可以解决的问题(跳过分页、从标准输入强制“是”等)。

出于我们的目的,我们更喜欢使用 Makeself 参数并解压存档。然后我们手动复制 itms 文件夹。我们在docker中使用这个方法。

curl -sSL "https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa/ra/resources/download/public/Transporter__Linux/bin" -o ~/installer_package.sh
chmod u+x ~/installer_package.sh
~/installer_package.sh --noexec --target ~/trasporter_install
rm ~/installer_package.sh
cp -r ~/trasporter_install/itms ~/itms
rm -rf ~/trasporter_install
chmod 555 ~/itms/bin/iTMSTransporter
© www.soinside.com 2019 - 2024. All rights reserved.