forked from CastroFidel/winehelper
Compare commits
12 Commits
extract_ic
...
backup_upd
Author | SHA1 | Date | |
---|---|---|---|
ea621f0402 | |||
d65e4dc74d | |||
45062a252d | |||
978ef09597 | |||
5006817fed | |||
c781374979 | |||
2ff5056c8a | |||
6c0afe5dc7 | |||
5fac6c25c2 | |||
a1097b9ecc | |||
b122128b0b | |||
a6ee4a80ee |
@ -4,7 +4,7 @@ _winehelper_completions() {
|
||||
COMPREPLY=()
|
||||
cur="${COMP_WORDS[COMP_CWORD]}"
|
||||
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
||||
opts="--help --version --debug install installed -r -i remove-all --clear-pfx killall remove-prefix backup-prefix restore-prefix"
|
||||
opts="--help --version --debug install installed -r -i remove-all --clear-pfx killall remove-prefix backup-prefix restore-prefix --changelog changelog"
|
||||
wine_cmd="winecfg winereg winefile wineconsole winetricks desktop regedit explorer cmd run"
|
||||
|
||||
case "${prev}" in
|
||||
|
BIN
image/ais_lpu_client.png
Normal file
BIN
image/ais_lpu_client.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
97
image/gui/winehelper-devel.svg
Normal file
97
image/gui/winehelper-devel.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 109 KiB |
47
image/gui/winehelper-symbolic.svg
Normal file
47
image/gui/winehelper-symbolic.svg
Normal file
@ -0,0 +1,47 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
height="16px"
|
||||
viewBox="0 0 16 16"
|
||||
width="16px"
|
||||
version="1.1"
|
||||
id="svg4"
|
||||
sodipodi:docname="5-symbolic.svg"
|
||||
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
id="namedview4"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#eeeeee"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#505050"
|
||||
inkscape:zoom="38.448931"
|
||||
inkscape:cx="6.9702848"
|
||||
inkscape:cy="8.8949156"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1128"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="g3" />
|
||||
<g
|
||||
fill-rule="evenodd"
|
||||
id="g3">
|
||||
<path
|
||||
d="m 0.800781 0 c -0.429687 0 -0.800781 0.371094 -0.800781 0.800781 v 5.078125 c 0 0.429688 0.371094 0.800782 0.800781 0.800782 h 1.996094 v -1.121094 h -1.675781 v -4.4375 h 4.4375 v 1.675781 h 1.121094 v -1.996094 c 0 -0.429687 -0.371094 -0.800781 -0.800782 -0.800781 z m 9.328125 0 c -0.425781 0 -0.800781 0.371094 -0.800781 0.800781 v 1.996094 h 1.121094 v -1.675781 h 4.441406 v 4.4375 h -1.675781 v 1.121094 h 1.992187 c 0.429688 0 0.804688 -0.375 0.804688 -0.800782 v -5.078125 c 0 -0.429687 -0.375 -0.800781 -0.804688 -0.800781 z m -9.328125 9.328125 c -0.429687 0 -0.800781 0.371094 -0.800781 0.800781 v 5.082032 c 0 0.425781 0.371094 0.800781 0.800781 0.800781 h 5.078125 c 0.429688 0 0.800782 -0.375 0.800782 -0.800781 v -1.996094 h -1.121094 v 1.675781 h -4.4375 v -4.441406 h 1.675781 v -1.121094 z m 12.414063 0 v 1.121094 h 1.675781 v 4.441406 h -4.441406 v -1.675781 h -1.121094 v 1.996094 c 0 0.425781 0.375 0.800781 0.800781 0.800781 h 5.078125 c 0.429688 0 0.804688 -0.375 0.804688 -0.800781 v -5.082032 c 0 -0.429687 -0.375 -0.800781 -0.804688 -0.800781 z m 0 0"
|
||||
id="path1" />
|
||||
<path
|
||||
id="path2"
|
||||
d="M 7.9277344 4.515625 C 7.8097448 4.5185061 7.6899414 4.527832 7.5703125 4.5429688 C 5.6601565 4.7812497 4.3007808 6.527344 4.5429688 8.4375 C 4.7812497 10.351562 6.527344 11.710938 8.4375 11.46875 C 10.351562 11.230469 11.710938 9.4843755 11.46875 7.5703125 C 11.245362 5.7795413 9.6975779 4.4724088 7.9277344 4.515625 z M 8.0039062 6.3535156 C 8.9197403 6.3535156 9.6542969 7.0918241 9.6542969 8.0039062 C 9.6542969 8.9205649 8.920565 9.6542969 8.0039062 9.6542969 C 7.0918241 9.6542969 6.3535156 8.9197403 6.3535156 8.0039062 C 6.3535156 7.0926517 7.0926517 6.3535156 8.0039062 6.3535156 z " />
|
||||
<path
|
||||
d="m 6.765625 3.570312 l 1.265625 -0.164062 l 0.410156 1.664062 l -1.601562 0.246094 z m -2.773437 2.175782 l 0.78125 -1.011719 l 1.464843 0.890625 l -0.957031 1.304688 z m -0.421876 3.496094 l -0.164062 -1.261719 l 1.664062 -0.410157 l 0.246094 1.601563 z m 2.175782 2.773437 l -1.011719 -0.777344 l 0.890625 -1.464843 l 1.304688 0.957031 z m 3.496094 0.425781 l -1.261719 0.164063 l -0.410157 -1.664063 l 1.601563 -0.246094 z m 2.773437 -2.175781 l -0.777344 1.011719 l -1.464843 -0.890625 l 0.957031 -1.304688 z m 0.425781 -3.5 l 0.164063 1.265625 l -1.664063 0.410156 l -0.246094 -1.601562 z m -2.175781 -2.773437 l 1.011719 0.78125 l -0.890625 1.464843 l -1.304688 -0.957031 z m 0 0"
|
||||
id="path3" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.5 KiB |
47
image/gui/winehelper.svg
Normal file
47
image/gui/winehelper.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 55 KiB |
BIN
image/swnd.png
Normal file
BIN
image/swnd.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 21 KiB |
24
manualinstall/ais-lpu-client
Normal file
24
manualinstall/ais-lpu-client
Normal file
@ -0,0 +1,24 @@
|
||||
#!/usr/bin/env bash
|
||||
# info_ru: автоматизация установки МИС Витакарта (AIS LPU Client)
|
||||
########################################################################
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_i586"
|
||||
export WINEPREFIX="ais-lpu-client"
|
||||
export PROG_NAME="AIS LPU Client"
|
||||
export PROG_ICON="ais_lpu_client"
|
||||
export BASE_PFX="ais-lpu-client_pfx_x86_v01"
|
||||
export WH_WINDOWS_VER="7"
|
||||
export WINEARCH="win32"
|
||||
export INSTALL_DLL="dotnet40 dotnet20sp2 7zip vcrun2005 vcrun2008 mfc42"
|
||||
export WH_USE_EXTRA_FONTS="1"
|
||||
|
||||
if [[ -f "$2" ]] ; then
|
||||
prepair_wine
|
||||
|
||||
wine_run_install "$2" # /q
|
||||
|
||||
WIN_FILE_EXEC="$DRIVE_C/Program Files/Vitacore/AIS LPU Client/Update/AKUZ.UpdateUtility.exe"
|
||||
create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON"
|
||||
else
|
||||
fatal "Не найден файл установки для $PROG_NAME. Перезапустите по примеру:
|
||||
winehelper install $1 \"/путь/до/установочного_файла\""
|
||||
fi
|
@ -87,3 +87,7 @@ dfb44ce5e5af7dba1686932c63d6b05e5dd6919a21c78130a7d1d0271b93958e audiorecstatio
|
||||
# winetricks dotnet48 gdiplus vcrun6sp6 vcrun2005 vcrun2019 d3dx11_42 d3dx11_43 d3dx9 d3dcompiler_42 d3dcompiler_43 d3dcompiler_46 d3dcompiler_47 richtx32 riched30 riched20 msxml6 dotnet20
|
||||
# + addons with ODBC, SSH, *.reg
|
||||
0f4ef434df07bc338ae308af44330590eaa1d9c94b64850514e55b960642d0eb scadoffice_addons_v02.tar.xz
|
||||
|
||||
ef7e8f1ba785d48e4ea287feed5b79bd630d423e59efadb43da9653adefef218 ais-lpu-client_pfx_x86_v01.tar.xz
|
||||
# create with wine_x_tkg_10-0_i586 (universal user: xuser)
|
||||
# winetricks vcrun2005 vcrun2008 dotnet20sp2 dotnet40 mfc42 7zip
|
||||
|
21
testinstall/swnd
Normal file
21
testinstall/swnd
Normal file
@ -0,0 +1,21 @@
|
||||
#!/usr/bin/env bash
|
||||
# info_ru: Программный комплекс СуперОкна для фабрик по изготовлению окон и дверей.
|
||||
########################################################################
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export WINEPREFIX="swnd"
|
||||
export PROG_NAME="СуперОкна 8"
|
||||
export PROG_ICON="swnd"
|
||||
export WH_WINDOWS_VER="10"
|
||||
export WINEARCH="win32"
|
||||
# export INSTALL_DLL=""
|
||||
|
||||
AUTOINSTALL_EXE="${WH_TMP_DIR}/Swnd8_setup.exe"
|
||||
|
||||
prepair_wine
|
||||
if try_download "https://kctsoft.ru/download/superokna8/Swnd8_setup.exe" "${AUTOINSTALL_EXE}" ; then
|
||||
wine_run_install "${AUTOINSTALL_EXE}" /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-
|
||||
try_remove_file "$AUTOINSTALL_EXE"
|
||||
|
||||
WIN_FILE_EXEC="$DRIVE_C/Program Files/Kct/Swnd8/Swnd8.exe"
|
||||
create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON"
|
||||
fi
|
21
testinstall/swnd_x
Normal file
21
testinstall/swnd_x
Normal file
@ -0,0 +1,21 @@
|
||||
#!/usr/bin/env bash
|
||||
# info_ru: Бесплатная версия программы СуперОкна для небольших предприятий.
|
||||
########################################################################
|
||||
export WH_WINE_USE="wine_x_tkg_10-0_amd64"
|
||||
export WINEPREFIX="swnd"
|
||||
export PROG_NAME="СуперОкна 8 бесплатная"
|
||||
export PROG_ICON="swnd"
|
||||
export WH_WINDOWS_VER="10"
|
||||
export WINEARCH="win32"
|
||||
# export INSTALL_DLL=""
|
||||
|
||||
AUTOINSTALL_EXE="${WH_TMP_DIR}/Swnd8x_setup.exe"
|
||||
|
||||
prepair_wine
|
||||
if try_download "https://kctsoft.ru/download/superokna8/Swnd8x_setup.exe" "${AUTOINSTALL_EXE}" ; then
|
||||
wine_run_install "${AUTOINSTALL_EXE}" /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-
|
||||
try_remove_file "$AUTOINSTALL_EXE"
|
||||
|
||||
WIN_FILE_EXEC="$DRIVE_C/Program Files/Kct/Swnd8x/Swnd8x.exe"
|
||||
create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON"
|
||||
fi
|
96
winehelper
96
winehelper
@ -7,6 +7,8 @@ if [[ $(id -u) -eq 0 ]] ; then
|
||||
fi
|
||||
|
||||
##### DEFAULT PATH #####
|
||||
export SCRIPT_NAME USER_WORK_PATH RUN_SCRIPT DATA_PATH CHANGELOG_FILE WH_ICON_PATH LICENSE_FILE
|
||||
|
||||
SCRIPT_NAME="$(basename "$0")"
|
||||
if [[ "$(realpath "$0")" == "/usr/bin/$SCRIPT_NAME" ]] ; then
|
||||
# переменные для установленного WineHelper в систему
|
||||
@ -14,12 +16,16 @@ if [[ "$(realpath "$0")" == "/usr/bin/$SCRIPT_NAME" ]] ; then
|
||||
RUN_SCRIPT="/usr/bin/$SCRIPT_NAME"
|
||||
DATA_PATH="/usr/share/$SCRIPT_NAME"
|
||||
CHANGELOG_FILE="$(realpath "/usr/share/doc/winehelper"-*/CHANGELOG)"
|
||||
WH_ICON_PATH="$DATA_PATH/image/gui/winehelper.svg"
|
||||
LICENSE_FILE="$(realpath "/usr/share/doc/winehelper"-*/LICENSE)"
|
||||
else
|
||||
# переменные для тестового запуска WineHelper из репозитория
|
||||
USER_WORK_PATH="$HOME/test-$SCRIPT_NAME"
|
||||
RUN_SCRIPT="$(realpath "$0")"
|
||||
DATA_PATH="$(dirname "$RUN_SCRIPT")"
|
||||
CHANGELOG_FILE="$DATA_PATH/CHANGELOG"
|
||||
WH_ICON_PATH="$DATA_PATH/image/gui/winehelper-devel.svg"
|
||||
LICENSE_FILE="$DATA_PATH/LICENSE"
|
||||
|
||||
# минимальная проверка синтаксиса скриптов
|
||||
for self_check_script in "$RUN_SCRIPT" \
|
||||
@ -30,17 +36,33 @@ else
|
||||
done
|
||||
fi
|
||||
|
||||
if [[ $1 == "gui" ]] ; then
|
||||
export WH_USE_GUI="1"
|
||||
/usr/bin/env python3 "$DATA_PATH/winehelper_gui.py" &
|
||||
exit 0
|
||||
fi
|
||||
|
||||
##### MESSAGES FUNCTIONS #####
|
||||
print_error () { printf "\E[31m%s Ошибка: $@ %s\e[0m\n" ;}
|
||||
print_warning () { printf "\E[33m%s Предупреждение: $@ %s\e[0m\n" ;}
|
||||
print_info () { printf "\E[36m%s Информация: \"$@\" %s\e[0m\n" ;}
|
||||
print_ok () { printf "\E[35m%s Успех: $@ %s\e[0m\n" ;}
|
||||
if [[ $WH_USE_GUI != "1" ]] ; then
|
||||
print_error () { printf "\E[31m%s Ошибка: $@ %s\e[0m\n" ;}
|
||||
print_warning () { printf "\E[33m%s Предупреждение: $@ %s\e[0m\n" ;}
|
||||
print_info () { printf "\E[36m%s Информация: \"$@\" %s\e[0m\n" ;}
|
||||
print_ok () { printf "\E[35m%s Успех: $@ %s\e[0m\n" ;}
|
||||
else
|
||||
print_error () { echo -e "Ошибка: $@" ;}
|
||||
print_warning () { echo -e "Предупреждение: $@" ;}
|
||||
print_info () { echo -e "Информация: \"$@\"" ;}
|
||||
print_ok () { echo -e "Успех: $@" ;}
|
||||
fi
|
||||
|
||||
print_var () { for vp in $@ ; do echo "${vp}=${!vp}" ; done ;}
|
||||
|
||||
fatal () {
|
||||
print_error "$@"
|
||||
[[ -n "$WINESERVER" ]] && "$WINESERVER" -w
|
||||
exit 1
|
||||
}
|
||||
|
||||
print_confirmation () {
|
||||
local answer
|
||||
read -p "$@ (y/N): " answer
|
||||
@ -331,7 +353,7 @@ check_file_sum () {
|
||||
return 0
|
||||
else
|
||||
try_remove_file "$check_file_path"
|
||||
fatal "Хэш-сумма файла $check_file_name не совпадает!"
|
||||
fatal "Хэш-сумма файла $check_file_name не совпадает!\n Попробуйте перезапустить установку."
|
||||
fi
|
||||
}
|
||||
|
||||
@ -370,7 +392,11 @@ print_license_agreement () {
|
||||
}
|
||||
|
||||
try_download () {
|
||||
print_license_agreement
|
||||
if [[ $WH_USE_GUI == "1" ]] \
|
||||
&& [[ $(ps -o command= -p "$PPID" | awk '{print $2}') =~ "$DATA_PATH/winehelper_gui.py" ]]
|
||||
then print_ok "Соглашения приняты из графического интерфейса."
|
||||
else print_license_agreement
|
||||
fi
|
||||
local download_file_url output_file output_file_name
|
||||
download_file_url="${1// /%20}"
|
||||
output_file="$2"
|
||||
@ -1542,12 +1568,13 @@ backup_prefix() {
|
||||
export WINEPREFIX="$1"
|
||||
check_prefix_var
|
||||
|
||||
local backup_base_dir="$(xdg-user-dir DESKTOP)"
|
||||
local backup_archive_name="backup_${PREFIX_NAME}_$(date +%Y.%m.%d).whpack"
|
||||
local backup_dest_path="$backup_base_dir/$backup_archive_name"
|
||||
local temp_backup_dir="$WH_TMP_DIR/backup_${PREFIX_NAME}_$(date +%Y.%m.%d)"
|
||||
local temp_prefix_dir="$temp_backup_dir/prefixes/$PREFIX_NAME"
|
||||
local temp_users_dir="$temp_prefix_dir/drive_c/users"
|
||||
local backup_base_dir backup_archive_name backup_dest_path temp_backup_dir temp_prefix_dir temp_users_dir
|
||||
backup_base_dir="$(xdg-user-dir DESKTOP)"
|
||||
backup_archive_name="backup_${PREFIX_NAME}_$(date +%d.%m.%Y-%H.%M.%S).whpack"
|
||||
backup_dest_path="$backup_base_dir/$backup_archive_name"
|
||||
temp_backup_dir="$WH_TMP_DIR/backup_${PREFIX_NAME}_$(date +%d.%m.%Y-%H.%M.%S)"
|
||||
temp_prefix_dir="$temp_backup_dir/prefixes/$PREFIX_NAME"
|
||||
temp_users_dir="$temp_prefix_dir/drive_c/users"
|
||||
|
||||
print_info "Начало резервного копирования префикса: $PREFIX_NAME"
|
||||
create_new_dir "$temp_backup_dir"
|
||||
@ -1591,9 +1618,11 @@ backup_prefix() {
|
||||
fi
|
||||
fi
|
||||
|
||||
# Сохраняем метаданные внутри временной директории
|
||||
echo "$PREFIX_NAME" > "$temp_backup_dir/prefix_name.whmeta"
|
||||
|
||||
print_info "Создание squashfs архива..."
|
||||
if mksquashfs "$temp_backup_dir" "$backup_dest_path" -comp zstd ; then
|
||||
echo -e "\n# PREFIX_NAME=$PREFIX_NAME" >> "$backup_dest_path"
|
||||
print_ok "Архив префикса $PREFIX_NAME успешно создан по пути:\n$backup_dest_path"
|
||||
else
|
||||
print_error "Не удалось создать архив префикса $PREFIX_NAME."
|
||||
@ -1625,15 +1654,7 @@ restore_prefix() {
|
||||
|
||||
print_info "Восстановление из резервной копии: $backup_archive_path"
|
||||
|
||||
prefix_name="$(tail -n1 "$backup_archive_path" | sed -e 's/.*PREFIX_NAME=//')"
|
||||
|
||||
if [[ -d "$WH_PREFIXES_DIR/$prefix_name" ]] ; then
|
||||
fatal "Префикс $prefix_name уже существует!
|
||||
Удалите его, если действительно желаете восстановить префикс заново.
|
||||
Команда для удаления: $SCRIPT_NAME remove-prefix $prefix_name"
|
||||
fi
|
||||
|
||||
temp_extract_dir="$WH_TMP_DIR/restore_$(basename "$backup_archive_path" .whpack)"
|
||||
temp_extract_dir="$WH_TMP_DIR/restore_$(basename "$backup_archive_path" .whpack)_$$"
|
||||
create_new_dir "$temp_extract_dir"
|
||||
|
||||
print_info "Распаковка архива..."
|
||||
@ -1644,9 +1665,32 @@ restore_prefix() {
|
||||
fatal "Не удалось распаковать архив."
|
||||
fi
|
||||
|
||||
if [[ -d "$temp_extract_dir/prefixes" ]] ; then
|
||||
local prefix_name
|
||||
prefix_name="$(ls -1 "$temp_extract_dir/prefixes")"
|
||||
# Определяем имя префикса
|
||||
if [[ -f "$temp_extract_dir/prefix_name.whmeta" ]]; then
|
||||
prefix_name="$(cat "$temp_extract_dir/prefix_name.whmeta")"
|
||||
try_remove_file "$temp_extract_dir/prefix_name.whmeta"
|
||||
elif grep -q "PREFIX_NAME=" "$backup_archive_path" ; then
|
||||
# Обратная совместимость со старыми бэкапами (с приписанной строкой)
|
||||
prefix_name="$(tail -n1 "$backup_archive_path" | sed -e 's/.*PREFIX_NAME=//')"
|
||||
elif [[ -d "$temp_extract_dir/prefixes" ]] && [[ $(find "$temp_extract_dir/prefixes" -mindepth 1 -maxdepth 1 -type d | wc -l) -eq 1 ]]; then
|
||||
# Обратная совместимость со старыми бэкапами (по имени каталога)
|
||||
prefix_name="$(basename "$(find "$temp_extract_dir/prefixes" -mindepth 1 -maxdepth 1 -type d)")"
|
||||
else
|
||||
try_remove_dir "$temp_extract_dir"
|
||||
fatal "Не удалось определить имя префикса в архиве (метаданные не найдены)."
|
||||
fi
|
||||
|
||||
if [[ -z "$prefix_name" ]]; then
|
||||
try_remove_dir "$temp_extract_dir"
|
||||
fatal "Не удалось определить имя префикса в архиве."
|
||||
fi
|
||||
|
||||
if [[ -d "$WH_PREFIXES_DIR/$prefix_name" ]] ; then
|
||||
try_remove_dir "$temp_extract_dir"
|
||||
fatal "Префикс $prefix_name уже существует!\n Удалите его, если действительно желаете восстановить префикс заново.\n Команда для удаления: $SCRIPT_NAME remove-prefix $prefix_name"
|
||||
fi
|
||||
|
||||
if [[ -d "$temp_extract_dir/prefixes/$prefix_name" ]] ; then
|
||||
local prefix_dir="$temp_extract_dir/prefixes/$prefix_name"
|
||||
|
||||
print_info "Восстановление префикса: $prefix_name"
|
||||
@ -1685,7 +1729,7 @@ restore_prefix() {
|
||||
fi
|
||||
else
|
||||
try_remove_dir "$temp_extract_dir"
|
||||
fatal "Директория prefixes не найдена в архиве."
|
||||
fatal "Директория префикса '$prefix_name' не найдена в архиве."
|
||||
fi
|
||||
|
||||
try_remove_dir "$temp_extract_dir"
|
||||
|
Reference in New Issue
Block a user