forked from CastroFidel/winehelper
Compare commits
11 Commits
remove_win
...
doptflex
Author | SHA1 | Date | |
---|---|---|---|
fbe8944a0f | |||
3ea9462025 | |||
8774a8b34d | |||
052a07a42b | |||
112933c7b1 | |||
de34f84e04 | |||
4310fe1e8c | |||
cd619bb9cc | |||
b319f4146c | |||
70b577dce5 | |||
388293e929 |
@ -1,5 +1,13 @@
|
||||
История изменений:
|
||||
|
||||
0.3.7:
|
||||
* обновлены функции создания desktop файлов (ярлыков) и категория WineHelper в меню
|
||||
* обновлен скрипт установки scadoffice
|
||||
* добавлена автоустановка:
|
||||
winehelper install zulugis - ZuluGIS 2021 Инженерные расчёты
|
||||
* добавлена функция полного удаления WineHelper
|
||||
* обновлена проверка на наличие noexec для /home (ALT bug: 54095)
|
||||
|
||||
0.3.6:
|
||||
* добавлена категория WineHelper для desktop файлов (ярлыков) в меню
|
||||
|
||||
|
67
autoinstall/t-flex-cad17-applications
Normal file
67
autoinstall/t-flex-cad17-applications
Normal file
@ -0,0 +1,67 @@
|
||||
#!/usr/bin/env bash
|
||||
# info_ru: Приложения для T-FLEX CAD 17 (T-FLEX Анализ 17, T-FLEX Динамика 17, T-FLEX Зубчатые передачи 17, T-FLEX ЧПУ 17, T-FLEX Раскрой 17, T-FLEX Электротехника 17, T-FLEX VR 17, T-FLEX Печатные платы 17)
|
||||
########################################################################
|
||||
export WH_WINDOWS_VER="10"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export BASE_PFX="tflex17_pfx_x64_v01"
|
||||
export WINEARCH="win64"
|
||||
export WINEPREFIX="tflex17"
|
||||
|
||||
BASE_URL="https://www.tflex.ru/downloads"
|
||||
FILES=(
|
||||
"T-FLEX Analysis 17.zip"
|
||||
"T-FLEX Dynamics 17.zip"
|
||||
"T-FLEX Gears 17.zip"
|
||||
"T-FLEX CAM 17.zip"
|
||||
"T-FLEX Nesting 17.zip"
|
||||
"T-FLEX Electrical 17.zip"
|
||||
"T-FLEX VR 17.zip"
|
||||
"T-FLEX Circuits 17.zip"
|
||||
)
|
||||
UNPACK_APP="${WH_TMP_DIR}/unpack_applications"
|
||||
|
||||
prepair_wine
|
||||
|
||||
# Функция для распаковки файла
|
||||
unpack_file() {
|
||||
local archive="$1"
|
||||
7z x -y "$archive" -o"${UNPACK_APP}"
|
||||
}
|
||||
|
||||
# Функция для установки .msi файлов
|
||||
install_msi_files() {
|
||||
for msi_file in "${UNPACK_APP}"/*/*.msi; do
|
||||
if [[ -f "$msi_file" ]]; then
|
||||
echo "Установка $msi_file ..."
|
||||
wine_run_install "$msi_file" /q
|
||||
else
|
||||
echo "Нет .msi файлов для установки в ${UNPACK_APP}/*."
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# Функция для кодирования URL
|
||||
encode_url() {
|
||||
local file_name="$1"
|
||||
echo "${file_name// /%20}" # Заменяем пробелы на %20
|
||||
}
|
||||
|
||||
# Скачивание всех файлов
|
||||
download_all() {
|
||||
for file_name in "${FILES[@]}"; do
|
||||
local file_url="$(encode_url "$file_name")"
|
||||
local output="${WH_TMP_DIR}/${file_name// /_}"
|
||||
|
||||
echo "Скачивание $file_name..."
|
||||
if try_download "$BASE_URL/$file_url" "$output"; then
|
||||
unpack_file "$output"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# Автоматически скачиваем и устанавливаем все файлы
|
||||
download_all
|
||||
install_msi_files
|
||||
|
||||
rm -f ${WH_TMP_DIR}/*.zip
|
||||
try_remove_dir "${UNPACK_APP}"
|
65
autoinstall/t-flex-cad17-resources
Normal file
65
autoinstall/t-flex-cad17-resources
Normal file
@ -0,0 +1,65 @@
|
||||
#!/usr/bin/env bash
|
||||
# info_ru: Обучающие материалы, примеры, бесплатные библиотеки для T-FLEX CAD 17 (Учебное пособие 17, Стандартные элементы 17, Элементы уплотнительной техники 17, Станочные приспособления 17, Детали штампов листовой штамповки 17, Детали пресс-форм 17, Примеры 17)
|
||||
########################################################################
|
||||
export WH_WINDOWS_VER="10"
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export BASE_PFX="tflex17_pfx_x64_v01"
|
||||
export WINEARCH="win64"
|
||||
export WINEPREFIX="tflex17"
|
||||
|
||||
BASE_URL="https://www.tflex.ru/downloads"
|
||||
FILES=(
|
||||
"T-FLEX Tutorial 17.zip"
|
||||
"Standard parts 17.zip"
|
||||
"Elements of sealing technology 17.zip"
|
||||
"Machine tools 17.zip"
|
||||
"Standard parts for sheet metal dies 17.zip"
|
||||
"Standard Mold Parts 17.zip"
|
||||
"Examples 17.zip"
|
||||
)
|
||||
UNPACK_RESOURCES="${WH_TMP_DIR}/unpack_resources"
|
||||
|
||||
prepair_wine
|
||||
# Функция для распаковки файла
|
||||
unpack_file() {
|
||||
local archive="$1"
|
||||
7z x -y "$archive" -o"${UNPACK_RESOURCES}"
|
||||
}
|
||||
|
||||
# Функция для установки .msi файлов
|
||||
install_msi_files() {
|
||||
for msi_file in "${UNPACK_RESOURCES}"/*/*.msi; do
|
||||
if [[ -f "$msi_file" ]]; then
|
||||
echo "Установка $msi_file ..."
|
||||
wine_run_install "$msi_file" /q
|
||||
else
|
||||
echo "Нет .msi файлов для установки в ${UNPACK_RESOURCES}/unpack_dop/*."
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# Функция для кодирования URL
|
||||
encode_url() {
|
||||
local file_name="$1"
|
||||
echo "${file_name// /%20}" # Заменяем пробелы на %20
|
||||
}
|
||||
|
||||
# Скачивание всех файлов
|
||||
download_all() {
|
||||
for file_name in "${FILES[@]}"; do
|
||||
local file_url="$(encode_url "$file_name")"
|
||||
local output="${WH_TMP_DIR}/${file_name// /_}"
|
||||
|
||||
echo "Скачивание $file_name..."
|
||||
if try_download "$BASE_URL/$file_url" "$output"; then
|
||||
unpack_file "$output"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# Автоматически скачиваем и устанавливаем все файлы
|
||||
download_all
|
||||
install_msi_files
|
||||
|
||||
rm -f ${WH_TMP_DIR}/*.zip
|
||||
try_remove_dir "${UNPACK_RESOURCES}"
|
21
autoinstall/zulugis
Normal file
21
autoinstall/zulugis
Normal file
@ -0,0 +1,21 @@
|
||||
#!/usr/bin/env bash
|
||||
# info_ru: ZuluGIS 2021 Инженерные расчёты (Полный) 64-бит. Включает ZuluGIS, пакеты расчетов ZuluThermo, ZuluHydro, ZuluDrain, ZuluGaz, ZuluSteam, библиотеки ZuluXTools и ZuluNetTools. Дополнительно в состав пакета входит Microsoft SQL Server Express LocalDB 2012.
|
||||
########################################################################
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export PROG_NAME="ZuluGIS 2021"
|
||||
export WINEPREFIX="zulugis"
|
||||
export PROG_ICON="zulugis"
|
||||
export WH_WINDOWS_VER="10"
|
||||
export BASE_PFX="none"
|
||||
export WINEARCH="win64"
|
||||
# export INSTALL_DLL="gdiplus"
|
||||
export AUTOINSTALL_EXE="${WH_TMP_DIR}/Zulu2021_x64_ru.exe"
|
||||
|
||||
prepair_wine
|
||||
if try_download "https://www.politerm.com/download/zulu/Zulu2021_x64_ru.exe" "${AUTOINSTALL_EXE}" ; then
|
||||
wine_run_install "${AUTOINSTALL_EXE}" /quiet /norestart
|
||||
try_remove_file "${AUTOINSTALL_EXE}"
|
||||
|
||||
WIN_FILE_EXEC="$DRIVE_C/Program Files/ZuluGIS/Zulu.exe"
|
||||
create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON"
|
||||
fi
|
BIN
image/zulugis.png
Normal file
BIN
image/zulugis.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 27 KiB |
162
winehelper
162
winehelper
@ -93,7 +93,7 @@ check_variables VKD3D_VER "1.1-2602"
|
||||
export CLOUD_URL="https://cloud.linux-gaming.ru/portproton"
|
||||
|
||||
##### CHECK NOEXEC FOR /HOME #####
|
||||
if grep "/home" /etc/fstab | grep -q "noexec" ; then
|
||||
if mount -l | grep -E "[[:space:]]/home[[:space:]]" | grep -q "noexec" ; then
|
||||
fatal "/home примонтирован в /etc/fstab с аргументом noexec.\nЗапуск портативной версии wine не возможен из домашнего каталога."
|
||||
fi
|
||||
|
||||
@ -388,7 +388,7 @@ create_desktop () {
|
||||
|
||||
[[ ! -f "$icon_file" ]] && icon_file=wine
|
||||
|
||||
# Создаем .desktop файл
|
||||
# создаем .desktop файл
|
||||
{
|
||||
echo "[Desktop Entry]"
|
||||
echo "Name=$name_desktop"
|
||||
@ -403,7 +403,14 @@ create_desktop () {
|
||||
|
||||
cp -f "$USER_WORK_PATH/$desktop_filename.desktop" "$WH_MENU_DIR/"
|
||||
|
||||
# Создаем файл категории для меню
|
||||
|
||||
# добавляем информацию о приложении в "$WINEPREFIX/desktop.list"
|
||||
if grep -qe "^${name_desktop}=" "$WINEPREFIX/desktop.list"
|
||||
then sed -i "/^$name_desktop=/d" "$WINEPREFIX/desktop.list"
|
||||
fi
|
||||
echo "$name_desktop=${exe_file//$WINEPREFIX/}" >> "$WINEPREFIX/desktop.list"
|
||||
|
||||
# создаем файл категории для меню
|
||||
create_new_dir "$HOME/.local/share/desktop-directories"
|
||||
if [[ ! -f "$WH_MENU_CATEGORY" ]] ; then
|
||||
cat > "$WH_MENU_CATEGORY" <<EOF
|
||||
@ -431,10 +438,6 @@ EOF
|
||||
</Menu>
|
||||
</Menu>
|
||||
EOF
|
||||
# Обновляем меню
|
||||
if check_command update-menus ; then
|
||||
update-menus
|
||||
fi
|
||||
fi
|
||||
|
||||
# Обновляем кэш desktop файлов
|
||||
@ -484,10 +487,6 @@ remove_desktop () {
|
||||
try_remove_dir "$WH_MENU_DIR"
|
||||
try_remove_file "$WH_MENU_CATEGORY"
|
||||
try_remove_file "$WH_MENU_CONFIG"
|
||||
# Обновляем меню
|
||||
if check_command update-menus ; then
|
||||
update-menus
|
||||
fi
|
||||
fi
|
||||
|
||||
# Обновляем кэш desktop файлов
|
||||
@ -745,14 +744,23 @@ get_and_set_reg_file () {
|
||||
|
||||
case $name_type_reg in
|
||||
REG_DWORD)
|
||||
name_for_find="\"$name_for_find\"=dword:"
|
||||
if [[ $name_for_find != '@=' ]]
|
||||
then name_for_find="\"$name_for_find\"=dword:"
|
||||
else name_for_find="@=dword:"
|
||||
fi
|
||||
name_for_set=$(convert_dec_and_hex --dec "$name_for_set") ;;
|
||||
REG_SZ)
|
||||
name_for_find="\"$name_for_find\"="
|
||||
if [[ $name_for_find != '@=' ]]
|
||||
then name_for_find="\"$name_for_find\"="
|
||||
else name_for_find="@="
|
||||
fi
|
||||
name_for_set="\"$name_for_set\"" ;;
|
||||
*)
|
||||
if [[ $name_add_or_del == --delete ]] ; then
|
||||
name_for_find="\"$name_for_find\""
|
||||
if [[ $name_for_find != '@=' ]]
|
||||
then name_for_find="\"$name_for_find\""
|
||||
else name_for_find="@="
|
||||
fi
|
||||
else
|
||||
print_error "не задан тип ветки реестра: $name_fatal"
|
||||
return 1
|
||||
@ -800,15 +808,15 @@ get_and_set_reg_file () {
|
||||
fi
|
||||
fi
|
||||
if [[ $find_check_file == 1 ]] ; then
|
||||
print_info "Меняем $name_for_find_old в файле реестра"
|
||||
print_info "Меняем $name_for_find_old в ветке реестра: $name_block"
|
||||
sed -i "${find_number_line}s|$name_for_find.*|$name_for_find$name_for_set|" "$find_file"
|
||||
else
|
||||
print_info "Добавляем $name_for_find_old в файл реестра"
|
||||
print_info "Добавляем $name_for_find_old в ветку реестра: $name_block"
|
||||
sed -i "$(( find_line + 1 ))a$name_for_find$name_for_set" "$find_file"
|
||||
fi
|
||||
elif [[ $name_add_or_del == --delete ]] ; then
|
||||
[[ $find_check_file != 1 ]] && return 0
|
||||
print_info "Удаляем $name_for_find_old из файла реестра"
|
||||
print_info "Удаляем $name_for_find_old из ветки реестра: $name_block"
|
||||
sed -i "${find_number_line}d" "$find_file"
|
||||
fi
|
||||
}
|
||||
@ -841,19 +849,47 @@ get_base_pfx () {
|
||||
fi
|
||||
}
|
||||
|
||||
init_wineprefix () {
|
||||
check_prefix_var () {
|
||||
if [[ -z "$WINEPREFIX" ]] ; then
|
||||
print_warning "Префикс не выбран, используйте пееременную: WINEPREFIX=имя_префикса"
|
||||
print_info "Список существующих префиксов:"
|
||||
ls -1 "$WH_PREFIXES_DIR"
|
||||
echo
|
||||
exit 1
|
||||
else
|
||||
if echo "$WINEPREFIX" | grep -v '/' ; then
|
||||
export WINEPREFIX="$WH_PREFIXES_DIR/$WINEPREFIX"
|
||||
print_warning "Префикс не выбран."
|
||||
|
||||
local prefixes=()
|
||||
local count=1
|
||||
print_info "Доступные префиксы WineHelper:"
|
||||
for prefix in "$WH_PREFIXES_DIR"/*; do
|
||||
if [[ -d "$prefix" ]]; then
|
||||
prefixes+=("$prefix")
|
||||
echo "$count. $(basename "$prefix")"
|
||||
((count++))
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ ${#prefixes[@]} -eq 0 ]]; then
|
||||
fatal "Не найдено ни одного префикса!"
|
||||
fi
|
||||
|
||||
local max_choice=${#prefixes[@]}
|
||||
read -p "Выберите префикс (1-$max_choice): " choice
|
||||
|
||||
if [[ "$choice" -ge 1 && "$choice" -le "$max_choice" ]]; then
|
||||
export WINEPREFIX="${prefixes[$choice-1]}"
|
||||
else
|
||||
fatal "Неверный выбор."
|
||||
fi
|
||||
|
||||
print_info "Выбран префикс: $WINEPREFIX"
|
||||
fi
|
||||
|
||||
if echo "$WINEPREFIX" | grep -v '/' ; then
|
||||
export WINEPREFIX="$WH_PREFIXES_DIR/$WINEPREFIX"
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
init_wineprefix () {
|
||||
check_prefix_var
|
||||
|
||||
if [[ "$WINEARCH" == "win32" ]]
|
||||
then check_variables BASE_PFX "defpfx_x86_v01"
|
||||
else check_variables BASE_PFX "defpfx_x64_v01"
|
||||
@ -910,6 +946,51 @@ init_wineprefix () {
|
||||
get_and_set_reg_file --delete 'Software\Wine\X11 Driver' 'UseXRandR'
|
||||
get_and_set_reg_file --delete 'Software\Wine\X11 Driver' 'UseXVidMode'
|
||||
fi
|
||||
|
||||
# добавление ассоциаций файлов для запуска нативного приложения из wine
|
||||
# пример переменной: WH_XDG_OPEN="txt doc pdf"
|
||||
check_variables WH_XDG_OPEN "0"
|
||||
local WRAPPER="${WH_TMP_DIR}/wh-xdg-open.sh"
|
||||
local XDG_OPEN_REG="Software\Classes\xdg-open\shell\open\command"
|
||||
if [[ $WH_XDG_OPEN != "0" ]] ; then
|
||||
# проверяем на наличие запрещённых расширений
|
||||
local forbidden_extensions="cpl dll exe lnk msi"
|
||||
for ext in $WH_XDG_OPEN; do
|
||||
if [[ "$forbidden_extensions" =~ $ext ]] ; then
|
||||
fatal "Расширение .$ext запрещено для добавления!"
|
||||
fi
|
||||
done
|
||||
|
||||
# создаем скрипт-обёртку
|
||||
{
|
||||
echo "#!/usr/bin/env bash"
|
||||
echo "unix_path=\$(\"$WINELOADER\" winepath -u \"\$*\")"
|
||||
echo "xdg-open \"\$unix_path\""
|
||||
} > "$WRAPPER"
|
||||
chmod +x "$WRAPPER"
|
||||
|
||||
# добавляем новую команду xdg-open в реестр
|
||||
get_and_set_reg_file --add "$XDG_OPEN_REG" '@=' 'REG_SZ' "$WRAPPER %1" "system"
|
||||
|
||||
# добавляем ассоциации файлов для запуска с помощью xdg-open
|
||||
for ext in $WH_XDG_OPEN ; do
|
||||
get_and_set_reg_file --add "Software\Classes\.$ext" '@=' 'REG_SZ' "xdg-open" "system"
|
||||
done
|
||||
print_info "Используется ассоциации с нативными приложениями для файлов: \"$WH_XDG_OPEN\""
|
||||
else
|
||||
# удаление команды xdg-open из реестра
|
||||
get_and_set_reg_file --delete "$XDG_OPEN_REG" '@='
|
||||
# удаяем скрипт-обёртку
|
||||
try_remove_file "$WRAPPER"
|
||||
fi
|
||||
|
||||
echo "# переменные последнего использования префикса:" > "$WINEPREFIX/last.conf"
|
||||
for var in WH_WINE_USE BASE_PFX WINEARCH WH_WINDOWS_VER WINEESYNC WINEFSYNC \
|
||||
STAGING_SHARED_MEMORY WINE_LARGE_ADDRESS_AWARE WH_USE_SHADER_CACHE WH_USE_WINE_DXGI \
|
||||
WINE_CPU_TOPOLOGY USE_RENDERER DXVK_VER VKD3D_VER
|
||||
do
|
||||
echo "export $var=\"${!var}\"" >> "$WINEPREFIX/last.conf"
|
||||
done
|
||||
}
|
||||
|
||||
##### KILL AUTOSTART AFTER INSTALLING #####
|
||||
@ -992,6 +1073,7 @@ kill_wine () {
|
||||
}
|
||||
|
||||
init_database () {
|
||||
WHDB_FILE="0"
|
||||
if [[ -f "$WIN_FILE_EXEC" ]] ; then
|
||||
WHDB="$(basename "$WIN_FILE_EXEC" .exe)"
|
||||
if [[ -f "$WIN_FILE_EXEC".whdb ]] ; then
|
||||
@ -1000,20 +1082,23 @@ init_database () {
|
||||
orig_IFS="$IFS"
|
||||
IFS=$'\n'
|
||||
WH_FIND_DB_FILE="$(grep -ilw "#$WHDB.exe" "$WH_DB_DIR"/* )"
|
||||
if [[ $(echo "$WH_FIND_DB_FILE" | wc -l) -gt 1 ]] ; then
|
||||
print_error "Найдено более одного файла настроек: $WHDB.exe"
|
||||
WHDB_FILE="$(echo "$WH_FIND_DB_FILE" | head -n1)"
|
||||
else
|
||||
if [[ $(echo "$WH_FIND_DB_FILE" | wc -l) -eq 1 ]] ; then
|
||||
WHDB_FILE="$WH_FIND_DB_FILE"
|
||||
fi
|
||||
IFS="$orig_IFS"
|
||||
fi
|
||||
if [[ "$WHDB_FILE" ]] ; then
|
||||
print_info "Используется файл настроек: $WHDB_FILE"
|
||||
. "$WHDB_FILE"
|
||||
else
|
||||
print_warning "Файл настроек не найден. Пропускаем."
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "$WHDB_FILE" != "0" ]] ; then
|
||||
print_info "Используется файл настроек: $WHDB_FILE"
|
||||
. "$WHDB_FILE"
|
||||
elif check_prefix_var && [[ -f "$WINEPREFIX/last.conf" ]] ; then
|
||||
print_info "Найдены настройки из предыдущего использования префикса."
|
||||
echo "$WINEPREFIX/last.conf"
|
||||
cat "$WINEPREFIX/last.conf"
|
||||
. "$WINEPREFIX/last.conf"
|
||||
else
|
||||
print_warning "Файл настроек не найден. Пропускаем."
|
||||
fi
|
||||
}
|
||||
|
||||
@ -1039,7 +1124,10 @@ prepair_wine () {
|
||||
|
||||
var_winedlloverride_update "winemenubuilder.exe=d"
|
||||
|
||||
init_database
|
||||
if [[ -n "$INSTALL_SCRIPT_NAME" ]]
|
||||
then print_info "Используются настройки из скрипта установки: $INSTALL_SCRIPT_NAME"
|
||||
else init_database
|
||||
fi
|
||||
init_wine_ver
|
||||
init_wineprefix
|
||||
use_winetricks
|
||||
|
Reference in New Issue
Block a user