@ -433,10 +433,13 @@ var_ld_library_path_update () {
}
create_desktop () {
local name_desktop="$1"
local exe_file ="$2 "
local desktop_filename="$(basename "$exe_file" .exe | sed "s| |_|") "
local icon_file
local name_desktop exe_file desktop_filename icon_file desktop_path
name_desktop ="$1 "
exe_file="$2 "
if [[ -n $4 ]] && [[ $4 != "nocopy" ]];
then desktop_filename="$4"
else desktop_filename="$(basename "$exe_file" .exe | sed "s| |_|")"
fi
if [[ "$RESTORE_FROM_BACKUP" == "1" ]] && [[ -f "$3" ]]
then icon_file="$3"
elif [[ -f "$WH_IMAGE_PATH/$3.png" ]]
@ -493,7 +496,6 @@ create_desktop () {
echo "$name_desktop=${exe_file//$WINEPREFIX/}=$(basename "$icon_file")" >> "$WINEPREFIX/desktop.list"
fi
# создаем файл категории для меню
create_new_dir "$HOME/.local/share/desktop-directories"
if [[ ! -f "$WH_MENU_CATEGORY" ]] ; then
@ -528,14 +530,8 @@ EOF
update-desktop-database "$HOME/.local/share/applications"
if [[ $4 != "nocopy" ]] ; then
if [[ -n $4 ]] ; then
local desktop_path="$(xdg-user-dir DESKTOP)/$4 "
create_new_dir "$desktop_path"
print_info "В меню создан $desktop_filename.desktop и скопирован на рабочий стол в каталог $4"
else
local desktop_path="$(xdg-user-dir DESKTOP)"
print_info "В меню и на рабочем столе создан $desktop_filename.desktop"
fi
desktop_path="$(xdg-user-dir DESKTOP)"
print_info "В меню и на рабочем столе создан $desktop_filename.desktop "
cp -f "$USER_WORK_PATH/$desktop_filename.desktop" "$desktop_path"
else
print_info "В меню создан $desktop_filename.desktop"
@ -589,7 +585,7 @@ check_installed_programs () {
print_info "Список установленных программ:"
check_installed_programs
exit 1
elif [[ "$EXE_PATH " =~ ${2}$ ]] ; then
elif [[ "$desktop_file " =~ ${2}.desktop ]] ; then
export EXE_PATH
return 0
fi
@ -597,7 +593,8 @@ check_installed_programs () {
*)
if [[ -f "$EXE_PATH.whdb" ]] ; then
WH_INFO_RU="$(grep "info_ru:" "$EXE_PATH.whdb" | awk -F"info_ru: " '{print $2}')"
printf "\E[36m%s $SCRIPT_NAME run $(basename "$EXE_PATH") - $(basename "$desktop_file") %s\e[0m\n "
WH_PROG_NAME="$(grep "PROG_NAME" "$EXE_PATH.whdb" | awk -F"=" '{print $2}') "
printf "\E[36m%s $SCRIPT_NAME run $(basename "$desktop_file" .desktop) %s\e[0m- $WH_PROG_NAME\n"
echo -e "$WH_INFO_RU\n"
fi
;;
@ -942,6 +939,7 @@ init_wineprefix () {
fi
export DRIVE_C="$WINEPREFIX/drive_c"
export XUSER_PATH="$DRIVE_C/users/xuser"
if [[ ! -f "$WINEPREFIX/.firstboot" ]] ; then
create_new_dir "$WINEPREFIX"
@ -971,10 +969,10 @@ init_wineprefix () {
print_info "Windows версия изменена на win${WH_WINDOWS_VER}"
fi
if [[ -d "$DRIVE_C/users/xuser " ]] && [[ ! -d "$DRIVE_C/users/$USER" ]]
then try_force_link_dir "$DRIVE_C/users/xuser " "$DRIVE_C/users/$USER"
elif [[ ! -d "$DRIVE_C/users/xuser " ]] && [[ -d "$DRIVE_C/users/$USER" ]]
then try_force_link_dir "$DRIVE_C/users/$USER" "$DRIVE_C/users/xuser "
if [[ -d "$XUSER_PATH " ]] && [[ ! -d "$DRIVE_C/users/$USER" ]]
then try_force_link_dir "$XUSER_PATH " "$DRIVE_C/users/$USER"
elif [[ ! -d "$XUSER_PATH " ]] && [[ -d "$DRIVE_C/users/$USER" ]]
then try_force_link_dir "$DRIVE_C/users/$USER" "$XUSER_PATH "
fi
if [[ ! -f "$WINEPREFIX/.update-timestamp" ]] ; then
@ -983,12 +981,15 @@ init_wineprefix () {
wait_wineserver
fi
if [[ -L "$XUSER_PATH/Desktop" ]]
then rm -f "$XUSER_PATH/Desktop"
fi
create_new_dir "$XUSER_PATH/Desktop"
if [[ ! -L "$WINEPREFIX/dosdevices/h:" ]]
then try_force_link_dir "$HOME" "$WINEPREFIX/dosdevices/h:"
fi
try_remove_file "$DRIVE_C/windows/system32/winemenubuilder.exe"
if [[ $WH_USE_MESA_GL_OVERRIDE == "1" ]] \
&& ! lspci | grep -i nvidia > /dev/null ; then
export MESA_GL_VERSION_OVERRIDE="3.3"
@ -1280,21 +1281,35 @@ run_autoinstall () {
export INSTALL_SCRIPT INSTALL_MODE
if [[ $INSTALL_SCRIPT_NAME == "list" ]] || [[ -z "$INSTALL_SCRIPT_NAME" ]] ; then
print_info "Список программ с возможностью автоматической установки:"
for list in $(ls "$WH_AUTOINSTALL_DIR") ; do
AI_INFO="$(grep "info_ru:" "$WH_AUTOINSTALL_DIR/$list" | awk -F"info_ru: " '{print $2}') "
AI_PROGNAME="$(grep "PROG_NAME=" "$WH_AUTOINSTALL_DIR/$list" | awk -F"PROG_NAME=" '{print $2}') "
echo -e "\n$list - $AI_PROGNAME"
echo "$AI_INFO"
done
list_ install_scripts() {
local dir="$1 "
local title="$2 "
[[ ! -d "$dir" ]] || [[ -z "$(ls -A "$dir" 2>/dev/null)" ]] && return
print_info "$title"
awk '
FNR==1 {
if (progname) {
printf "\n%s - %s\n%s\n", filename, progname, info
}
progname=""; info=""; filename=FILENAME
sub(".*/", "", filename)
}
/info_ru:/ { sub(/.*info_ru: /, ""); info=$0 }
/PROG_NAME=/ { sub(/.*PROG_NAME=/, ""); progname=$0 }
END {
if (progname) {
printf "\n%s - %s\n%s\n", filename, progname, info
}
}
' "$dir"/*
}
list_install_scripts "$WH_AUTOINSTALL_DIR" "Список программ с возможностью автоматической установки:"
echo
print_info "Список программ с возможностью установки из существующего дистрибутива:"
for list in $(ls "$WH_MANUALINSTALL_DIR") ; do
AI_INFO="$(grep "info_ru:" "$WH_MANUALINSTALL_DIR/$list" | awk -F"info_ru: " '{print $2}')"
AI_PROGNAME="$(grep "PROG_NAME=" "$WH_MANUALINSTALL_DIR/$list" | awk -F"PROG_NAME=" '{print $2}')"
echo -e "\n$list - $AI_PROGNAME"
echo "$AI_INFO"
done
list_install_scripts "$WH_MANUALINSTALL_DIR" "Список программ с возможностью установки из существующего дистрибутива:"
elif [[ "$INSTALL_SCRIPT" != "0" ]] ; then
source "$INSTALL_SCRIPT" "$@"
print_info "Завершена установка $INSTALL_SCRIPT_NAME"
@ -1407,12 +1422,14 @@ create_base_pfx () {
export WINEPREFIX="$1"
check_prefix_var
local prefix_dir="$WINEPREFIX"
local drive_c_dir="$prefix_dir/drive_c "
local users_dir="$drive_c_dir/users "
local archive_path="$WH_TMP_DIR/pfx/new_${PREFIX_NAME}.tar.xz "
local prefix_dir drive_c_dir users_dir archive_path
prefix_dir="$WINEPREFIX "
drive_c_dir="$prefix_dir/drive_c "
users_dir="$drive_c_dir/users "
archive_path="$WH_TMP_DIR/pfx/new_${PREFIX_NAME}.tar.xz"
try_copy_dir "$prefix_dir" "${prefix_dir}_bak"
create_new_dir "$WH_TMP_DIR/pfx/"
for wtlog in workaround isolate internal winxp win2 win7 win10
do sed -i "/$wtlog/d" "$prefix_dir/winetricks.log"
@ -1616,7 +1633,7 @@ wh_info () {
install [скрипт] --clear-pfx не использовать готовый префикс для установки ПО
installed список установленных программ
run [программа.exe] запуск программы (отладка)
run [программа] запуск программы (отладка)
remove-all удалить WineHelper и все связанные данные
remove-prefix [имя_пр е фикс а ] удалить префикс и все связанные данные
backup-prefix [имя_пр е фикс а ] создать резерную копию префикса