Вопрос или проблема
Я хочу открыть PDF файл с помощью PDF-XChange Viewer через WINE. Как мне указать имя PDF файла в строке “пользовательская команда”, чтобы я мог открыть PDF файл двойным щелчком? Я пытался использовать \”z:%f\” в соответствии с предложением здесь для использования Foxit Reader. Но мой PDF-XChange Viewer запускается только с пустым окном.
wine "c:/Program Files/Tracker Software/PDF Viewer/PDFXCview.exe" \"z:%f\"
Я использую Ubuntu 10.04 и WINE 1.2.2. Версия PDF-XChange Viewer 2.5.
Я нашел записи в блоге о той же проблеме для Foxit Reader и для PDF-XChange Viewer. Ни одно из них не сработало для меня. Поэтому я отредактировал их и получил вариант, подходящий для моего случая:
#!/bin/bash
Filename="z:${1//\//\\}"
wine "C:\Program Files\Tracker Software\PDF Viewer\PDFXCview.exe" $Filename
Сохраните этот bash скрипт и открывайте PDF с помощью этого скрипта. Теперь двойной щелчок по PDF-файлам будет открывать их с помощью PDF-XChange Viewer.
Если скрипт работает, то вы должны принять этот ответ, даже если он ваш собственный.
То, что работало здесь для других приложений в отношении пользовательской команды, было похоже на то, что вы пытались сделать, но с небольшими различиями.
wine "C:\Program Files\Tracker Software\PDF Viewer\PDFXCview.exe" Z:%f
Упомянуто здесь для фотошопа с дополнительной информацией о том, как изменить отображаемое имя, если это необходимо для использования по щелчку правой кнопкой мыши: https://ubuntuforums.org/showthread.php?t=1460914&p=9193687#post9193687
Это основано на отличном скрипте @Flint.
Сначала я пытался использовать "Z:"%U
переменную в конце файла.desktop в поле Exec=
для программ WINE. Это работало нормально, пока я не открыл программу без указанного файла. Программы WINE жаловались на отсутствующий файл, потому что строка Exec=
указывала на привязку Z:, которая явно не является файлом, а абсолютным путем к файлу. Появлялись сообщения Файл не найден: Z:
или подобные в программе WINE. Немного раздражает.
Проблема с "Z:"%U
в том, что это не условная переменная, если Z: используется там. Тем не менее, WINE абсолютно требует Z:, потому что иначе не может найти правильные пути к файлам.
Ваш скрипт делает всю штуку "Z:"%U
условным предложением. Скрипт выполняет свою работу ровно так, как я и хотел.
Тем не менее, скрипт должен учитывать все исполняемые файлы, написанные заглавными буквами. На данный момент он не может указать на файлы MS Office (docx, pptx…) для MS Office 2010, потому что все исполняемые файлы написаны как WINWORD.EXE
или POWERPNT.EXE
. Конечно, исполняемые файлы могут быть переименованы в нижний регистр, но я предпочитаю более универсальное решение, нежели переименовывать отдельные exe для каждой программы.
Неряшливое и универсальное решение – это изменить код скрипта следующим образом:
#!/bin/bash
allargs=("$@")
fixpath=0
for idx in "${!allargs[@]}"; do
arg="${allargs[$idx]}"
if [[ $fixpath -eq 0 ]]; then
# исправляем пути к файлам только после нахождения первого исполняемого файла в arg
if [[ "$arg" == *.exe ]]; then
fixpath=1
fi
if [[ "$arg" == *.EXE ]]; then
fixpath=1
fi
continue
elif [[ $fixpath -eq 1 ]]; then
# если arg начинается с "https://askubuntu.com/" и это путь, который существует на хосте
# предшествуем пути с привязкой 'Z:'
if [[ "${arg:0:1}" == "https://askubuntu.com/" && -e "$arg" ]]; then
allargs[$idx]="z:${arg//\//\\}"
fi
fi
done
exec env "${allargs[@]}"
Оператор or
почему-то не сработал. Я уверен, что есть более элегантный способ достичь того же результата, в любом случае.
Если эта программа уже установлена с помощью WINE, тогда я не думаю, что нужен абсолютный путь. Я думаю, что только
wine pdfxcview filename
откроет файл.
Ну, может быть, мой ответ глупый. Что на самом деле вы пытаетесь сделать? Вы пытаетесь исправить ошибку запуска программы?
Я понимаю, что это старый вопрос, но я хочу поделиться своим решением, которое я нашел после того, как начал использовать PDFXchangeEditor (преемник PDFXchangeViewer) и столкнулся с проблемой, чтобы он принимал несколько входных файлов из хост-ос. Прежде всего, принятый ответ и все другие ответы, которые были опубликованы, предполагают, что программа будет обрабатывать только один файл. На самом деле вы можете передать несколько аргументов файлов сразу, и она откроет их все нормально, с небольшим трюком.
Трюк заключается в использовании %F
кодовойexpansion в поле Exec
в .desktop запускателе приложения и предшествовании всем расширенным локальным файловым аргументам в этом поле с Z:
, что можно сделать с помощью следующего скрипта.
Назовите его wine-env
. Это помещается в /usr/local/bin
и убедитесь, что вы дали ему chmod +x
.
#!/bin/bash
allargs=("$@")
fixpath=0
for idx in "${!allargs[@]}"; do
arg="${allargs[$idx]}"
if [[ $fixpath -eq 0 ]]; then
# исправляем пути к файлам только после нахождения первого исполняемого файла в arg
if [[ "$arg" == *.exe ]]; then
fixpath=1
fi
continue
elif [[ $fixpath -eq 1 ]]; then
# если arg начинается с "https://askubuntu.com/" и это путь, который существует на хосте
# предшествуем пути с привязкой 'Z:'
if [[ "${arg:0:1}" == "https://askubuntu.com/" && -e "$arg" ]]; then
allargs[$idx]="Z:$arg"
fi
fi
done
exec env "${allargs[@]}"
А для файла .desktop приложения назвайте его pdfxce.desktop
и поместите его в ~/.local/share/applications/
, и его содержание должно выглядеть так:
[Desktop Entry]
Name=PDF-XChange Editor
Type=Application
Terminal=false
Exec=wine-env WINEDEBUG=-all WINEPREFIX=/home/<user>/.local/share/bottles/pdfxce wine PDFXEdit.exe %F
Icon=/home/<user>/.local/share/icons/bottles/pdfxce-pdfxedit.png
Path=/home/<user>/.local/share/bottles/pdfxce/drive_c/Program Files/Tracker Software/PDF Editor
StartupNotify=true
StartupWMClass=PDFXEdit.exe
Вам нужно изменить часть с вашим именем пользователя. Я храню все свои директории wineprefix в папке под названием “bottles”. Возможно, у вас есть свой способ организации ваших wineprefix, поэтому измените все части, которые содержат “bottles”, соответственно.
И последний шаг, назначьте PDF файлы на приложение как обычно (Щелчок правой кнопкой мыши на PDF -> Свойства
-> вкладка Открыть с
).
Источник: Спецификация десктоп-записей Freedesktop
Я следовал этой ссылке, чтобы установить 32-битный PDF XChange Viewer в Ubuntu 64 Bit 14.04. Затем ссылка показывает скрипт для открытия PDF XChange Viewer с именем файла в качестве аргумента. Я создал этот скрипт и сохранил его в /bin
.
Затем я отредактировал ~/.local/share/applications/wine-extension-pdf.desktop
следующим образом:
[Desktop Entry]
Type=Application
Name=PDF-XChangeViewer
MimeType=application/pdf;
Exec=PDFXCview %f
NoDisplay=true
StartupNotify=true
Мой скрипт был назван PDFXCview
.
Ответ или решение
Чтобы открыть PDF-документ с помощью PDF-XChange Viewer через WINE, необходимо правильно указать путь к файлу в командной строке. Я предложу одно из решений, которое должно работать на вашей системе.
Шаг 1: Создание Bash-скрипта
Сначала создадим Bash-скрипт, который будет обрабатывать ввод и передавать правильный путь к PDF-XChange Viewer.
-
Откройте терминал и создайте новый файл скрипта:
nano /usr/local/bin/pdfxcview
-
Вставьте следующий код в редактор:
#!/bin/bash # Преобразование пути из Unix в Windows Filename="z:${1//\//\\}" # Запуск PDF-XChange Viewer с указанным файлом wine "C:\\Program Files\\Tracker Software\\PDF Viewer\\PDFXCview.exe" "$Filename"
-
Сохраните файл и выйдите из редактора. Сделайте скрипт исполняемым:
chmod +x /usr/local/bin/pdfxcview
Шаг 2: Обновление .desktop файла
Теперь необходимо обновить или создать .desktop файл для вашего PDF-XChange Viewer, чтобы связать его с PDF-документами.
-
Создайте или откройте файл
~/.local/share/applications/wine-extension-pdf.desktop
:nano ~/.local/share/applications/wine-extension-pdf.desktop
-
Вставьте следующий контент:
[Desktop Entry] Type=Application Name=PDF-XChange Viewer MimeType=application/pdf; Exec=pdfxcview %f NoDisplay=false StartupNotify=true
-
Сохраните изменения и закройте редактор.
Шаг 3: Проверка MIME-типов
После внесения изменений необходимо обновить базу данных MIME, чтобы ваш новый .desktop файл распознавался:
update-desktop-database ~/.local/share/applications/
Шаг 4: Установка связей файлов
Теперь вам нужно установить PDF-XChange Viewer как программу для открытия PDF файлов. Для этого:
- Найдите PDF файл в файловом менеджере, щелкните правой кнопкой мыши и выберите "Свойства".
- Перейдите на вкладку "Открыть с".
- Найдите и выберите "PDF-XChange Viewer" из списка программ. Если его нет в списке, попробуйте обновить базу данных MIME ещё раз.
Заключение
Теперь, когда вы дважды щелкнете на PDF-файле, он должен открываться в PDF-XChange Viewer через WINE. Данная инструкция должна решить вашу проблему. Если у вас возникнут дополнительные вопросы или трудности, не стесняйтесь их задавать.