簡體   English   中英

控制台模式下InstallAnywhere的交互式Shell腳本

[英]interactive shell script from InstallAnywhere in console mode

我在Linux的控制台模式下使用InstallAnywhere進行安裝,並希望在完成安裝后運行一些交互式Shell腳本。 “交互式”是指腳本應提出一些問題並接受用戶輸入。

我嘗試使用“執行目標文件”操作來運行它,但是腳本未將任何內容打印到控制台(由於將調試信息打印到輸出文件,因此該腳本確實執行了)。 我還嘗試使用“ fg%1”(這是InstallAnywhere中的最后一個命令)將腳本放到前台,但是它也無法正常工作。

有什么方法可以通過InstallAnywhere在控制台模式下執行交互式腳本嗎?

與其使用Shell腳本進行用戶交互,不如利用IA收集所需的答案,將其填充到IA變量中,然后在一個或多個“ Execute Script / Batch file”操作中使用這些變量來完成安裝后的工作。

假設您要收集名字,姓氏和電話,然后將其寫入安裝目錄中的文件中(我知道,是有希望的,但希望能得到示范)。

  1. 添加跳轉標簽,並將其命名為“獲取用戶信息”
  2. 添加控制台操作“獲取用戶輸入”以讀取名字。 將結果分配給$FIRST_NAME$
  3. 添加控制台操作“獲取用戶輸入”以讀取姓氏。 將結果分配給$LAST_NAME$
  4. 添加控制台操作“獲取用戶輸入”以讀取電話號碼。 將結果分配給$PHONE_NUMBER$
  5. 添加“跳轉到目標”操作和“獲取用戶信息”(上面的#1)的下一個跳轉操作。 添加規則以驗證這三個變量,以使結果為TRUE將執行跳轉到“獲取用戶信息”的操作。 換句話說,BAD名或BAD姓或BAD電話號碼應評估為TRUE 這會將用戶發送回“獲取用戶信息”目標標簽。 三個有效值應評估為false,從而不執行跳轉。 我知道。 有點奇怪。
  6. 最后,為每個目標安裝平台添加所需數量的“執行腳本/批處理文件”操作。 對於這些操作中的每一個,添加一條規則,以限制該操作在特定平台上的執行。 對於Unix / Linux操作,請確保選中“不要替換未知變量”復選框,否則IA將用空格替換您的腳本變量。 (警告:使用完整的變量名格式${MY_VARIABLE_NAME}可以幫助IA區分您的變量和它自己的變量)。

Unix / Linux版本可能如下所示:

#!/bin/sh
echo <<EOF
Name: $FIRST_NAME$ $LAST_NAME$
Phone: $PHONE_NUMBER$
EOF > $USER_INSTALL_FOLDER$$/$userName.txt

Windows版本類似於:

echo "Name: $FIRST_NAME$ $LAST_NAME$" > $USER_INSTALL_FOLDER$$/$userName.txt
echo "Phone: $PHONE_NUMBER$" >> $USER_INSTALL_FOLDER$$/$userName.txt

請注意$/$的使用,IA會將其轉換為當前平台的適當路徑分隔符。

在“執行腳本/批處理文件”操作之后,您可以添加步驟以評估腳本/批處理文件的成功。 在“跳轉到目標”操作上添加規則,以評估$EXECUTE_EXITCODE$的值。 $EXECUTE_EXITCODE$是默認變量,通過“執行腳本/批處理文件”操作在其中存儲進程的退出代碼。

實際的安裝腳本可能比這更復雜。 您可以收集任意數量的變量,並在任意數量的安裝后腳本中使用它們。 這些腳本然后專注於完成工作,而不是與用戶交談。 那應該是IA的工作。

兩個分開的想法:

首先,同樣的技術也可以與GUI安裝程序一起使用。 實際上,在同一項目中混合使用GUI和控制台輸入操作會將您的安裝程序擴展到圖形和控制台目標平台。 無論您如何收集輸入,安裝后腳本均保持不變。

最后,您應該在預安裝過程中提出您的問題(如果可能)。 這樣,用戶可以決定是否能夠回答或不回答問題。 如果不願意或無法提供所需的信息,則在安裝后提出問題可能會使安裝掛起,或者迫使用戶回退。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM