diff --git a/README.md b/README.md index c3957ca..08d2621 100644 --- a/README.md +++ b/README.md @@ -443,6 +443,31 @@ AUTOPAUSE_TIME="300" # DEFAULT VALUE: '' (BLANK) # VALID VALUES: The command required to run FreeRDPv3 on your system (e.g., 'xfreerdp', 'xfreerdp3', etc.). FREERDP_COMMAND="" + +# [TIMEOUTS] +# NOTES: +# - These settings control various timeout durations within the WinApps setup. +# - Increasing the timeouts is only necessary if the corresponding errors occur. +# - Ensure you have followed all the Troubleshooting Tips in the error message first. + +# PORT CHECK +# - The maximum time (in seconds) to wait when checking if the RDP port on Windows is open. +# - Corresponding error: "NETWORK CONFIGURATION ERROR" (exit status 13). +# DEFAULT VALUE: '5' +PORT_TIMEOUT="5" + +# RDP CONNECTION TEST +# - The maximum time (in seconds) to wait when testing the initial RDP connection to Windows. +# - Corresponding error: "REMOTE DESKTOP PROTOCOL FAILURE" (exit status 14). +# DEFAULT VALUE: '30' +RDP_TIMEOUT="30" + +# APPLICATION SCAN +# - The maximum time (in seconds) to wait for the script that scans for installed applications on Windows to complete. +# - Corresponding error: "APPLICATION QUERY FAILURE" (exit status 15). +# DEFAULT VALUE: '60' +APP_SCAN_TIMEOUT="60" + ``` > [!IMPORTANT] diff --git a/packages/winapps/default.nix b/packages/winapps/default.nix index 185c340..2d17b96 100644 --- a/packages/winapps/default.nix +++ b/packages/winapps/default.nix @@ -11,12 +11,12 @@ ... }: let - rev = "885d02079a36aa9696de46440c5b29b95278f904"; - hash = "sha256-hkD1siuwlRNOnXpDETZEQlIb/j91hkCspAUl/m5BB6g="; + rev = "2b2f4cea698096829fbd1c3c15970034a6f53261"; + hash = "sha256-km8q3IL5sETbFsscNy4dDxYTytuKPJQJY81p7tSk63A="; in stdenv.mkDerivation rec { pname = "winapps"; - version = "0-unstable-2025-05-26"; + version = "0-unstable-2025-06-05"; src = fetchFromGitHub { owner = "winapps-org"; diff --git a/setup.sh b/setup.sh index 0e6087e..919feb6 100755 --- a/setup.sh +++ b/setup.sh @@ -95,6 +95,10 @@ RDP_FLAGS="" # Imported variable. DEBUG="true" # Imported variable. FREERDP_COMMAND="" # Imported variable. +PORT_TIMEOUT=5 # Default port check timeout. +RDP_TIMEOUT=30 # Default RDP connection test timeout. +APP_SCAN_TIMEOUT=60 # Default application scan timeout. + # PERMISSIONS AND DIRECTORIES SUDO="" # Set to "sudo" if the user specifies '--system', or "" if the user specifies '--user'. BIN_PATH="" # Set to $SYS_BIN_PATH if the user specifies '--system', or $USER_BIN_PATH if the user specifies '--user'. @@ -986,7 +990,7 @@ function waCheckPortOpen() { fi # Check for an open RDP port. - if ! timeout 5 nc -z "$RDP_IP" "$RDP_PORT" &>/dev/null; then + if ! timeout "$PORT_TIMEOUT" nc -z "$RDP_IP" "$RDP_PORT" &>/dev/null; then # Complete the previous line. echo -e "${FAIL_TEXT}Failed!${CLEAR_TEXT}\n" @@ -999,6 +1003,7 @@ function waCheckPortOpen() { # Display the suggested action(s). echo "--------------------------------------------------------------------------------" echo "Please ensure Remote Desktop is configured on Windows as per the WinApps README." + echo -e "Then you can try increasing the ${COMMAND_TEXT}PORT_TIMEOUT${CLEAR_TEXT} in ${COMMAND_TEXT}${CONFIG_PATH}${CLEAR_TEXT}." echo "--------------------------------------------------------------------------------" # Terminate the script. @@ -1050,8 +1055,8 @@ function waCheckRDPAccess() { # Initialise the time counter. ELAPSED_TIME=0 - # Wait a maximum of 30 seconds for the background process to complete. - while [ "$ELAPSED_TIME" -lt 30 ]; do + # Wait a maximum of $RDP_TIMEOUT seconds for the background process to complete. + while [ "$ELAPSED_TIME" -lt "$RDP_TIMEOUT" ]; do # Check if the FreeRDP process is complete or if the test file exists. if ! ps -p "$FREERDP_PROC" &>/dev/null || [ -f "$TEST_PATH" ]; then break @@ -1086,6 +1091,7 @@ function waCheckRDPAccess() { echo " - Ensure the user is logged out of Windows prior to initiating the WinApps installation." echo " - Ensure the credentials within the WinApps configuration file are correct." echo -e " - Utilise a new certificate by removing relevant certificate(s) in ${COMMAND_TEXT}${HOME}/.config/freerdp/server${CLEAR_TEXT}." + echo -e " - Try increasing the ${COMMAND_TEXT}RDP_TIMEOUT${CLEAR_TEXT} in ${COMMAND_TEXT}${CONFIG_PATH}${CLEAR_TEXT}." echo " - If using 'libvirt', ensure the Windows VM is correctly named as specified within the README." echo " - If using 'libvirt', ensure 'Remote Desktop' is enabled within the Windows VM." echo " - If using 'libvirt', ensure you have merged 'RDPApps.reg' into the Windows VM's registry." @@ -1176,8 +1182,8 @@ function waFindInstalled() { # Initialise the time counter. ELAPSED_TIME=0 - # Wait a maximum of 60 seconds for the batch script to finish running. - while [ $ELAPSED_TIME -lt 60 ]; do + # Wait a maximum of $APP_SCAN_TIMEOUT seconds for the batch script to finish running. + while [ $ELAPSED_TIME -lt "$APP_SCAN_TIMEOUT" ]; do # Check if the FreeRDP process is complete or if the 'installed' file exists. if ! ps -p "$FREERDP_PROC" &>/dev/null || [ -f "$INST_FILE_PATH" ]; then break @@ -1208,6 +1214,7 @@ function waFindInstalled() { # Display the suggested action(s). echo "--------------------------------------------------------------------------------" echo -e "Please view the log at ${COMMAND_TEXT}${FREERDP_LOG}${CLEAR_TEXT}." + echo -e "You can try increasing the ${COMMAND_TEXT}APP_SCAN_TIMEOUT${CLEAR_TEXT} in ${COMMAND_TEXT}${CONFIG_PATH}${CLEAR_TEXT}." echo "--------------------------------------------------------------------------------" # Terminate the script.