Как связать все типы файлов в Wine с соответствующим родным приложением?

Существует программа командной строки, которая может конвертировать между всеми поддерживаемыми форматами open / libre office под названием unoconv, поэтому, если вам нужно пакетное преобразование со сценарием, это пригодится.

sudo apt-get install unoconv
Домашняя страница Unoconv
1
задан 13 April 2017 в 15:24

2 ответа

EDIT:

Существует ошибка вина об этом - это скорее улучшение, чем ошибка. Дело в том, что ShellExecute вызывает xdg-open, а если не найден, найдите значения gnome и kde. Вы должны иметь возможность применять патч и, наконец, иметь магию :-).

Чтобы быть более полным, вот как ошибка вина об этом .

] EDIT:

Я обновляю винный реестр скриптом ниже, чтобы добавить список распространенных типов файлов. Вы можете расширить список, чтобы добавить больше типов. Он использует /usr/bin/gnome-open в файле gstart.exe, поэтому он не будет работать для настольных компьютеров без gnome, как есть.

Поместите это в conf_wine.sh:

#!/bin/bash

SRC=~
WINE=~/.wine
REG=$WINE/system.reg
GSTART=gstart.exe
GSTART_TARGET=$WINE/drive_c
EXE_TARGET=$WINE/drive_c/windows
FNKEY=/tmp/"key"$(date +%F_%H-%M-%S)".reg"

[ -e $FNKEY ] && { echo "temporary key file exists..try again"; exit 1; }

echo "copying gstart.exe"
cp $SRC/$GSTART $GSTART_TARGET
chmod +x $GSTART_TARGET

echo "backing up the registry"
cp $REG $REG.$(date +%F_%H-%M-%S).old

echo "setting new wine registry keys"
for i in http doc docx ppt pptx xls xlsx odt ods xml txt pdf odt svg zip ; do {
    echo "setting $i"
key='[HKEY_CLASSES_ROOT\.'$i']
@="'$i'file"
"Content Type"="application/'$i'"
[HKEY_CLASSES_ROOT\'$i'file\Shell\Open\command]
@="C:\\gstart.exe \"%1\""'
    echo "$key" > $FNKEY
    regedit $FNKEY
}
done

echo "done"
[d14 ] [F8] является скриптом bash ... и является мостом для обоих миров:

#!/bin/bash

OPEN_HANDLER=/usr/bin/gnome-open
# logging, optional
LOG=$HOME/.wine/gstart.exe-log.$(id -u -n)
echo "[ $(date) ] $# argument(s) received: '$@'" > $LOG

# convert the path
RESULT=$(winepath "$@" 2> /dev/null)
echo "$OPEN_HANDLER $RESULT" >> $LOG
TMP=$TMPDIR
TEMP=$TMPDIR

# finally open the file
$OPEN_HANDLER "$RESULT"

не будет работать для настольных компьютеров без gnome, как [!d15 ] скопируйте gstart.exe в текущий рабочий каталог перед запуском conf_wine.sh, когда он скопирует его в папку .wine. расположение папок может быть изменено, например. gstart.exe не нужно сидеть в c:\. не делает магии: новые типы должны добавляться вручную. Вы можете улучшить его, чтобы читать файлы Linux (mimeapps.list, ..) и обновлять реестр вин, если это необходимо. проверено на работу, по крайней мере, в вине1.4.

Часто задаваемые вопросы по вину: как мне связать собственную программу с типом файла в Wine?

1
ответ дан 25 May 2018 в 20:00
  • 1
    +1 для усилий, но это вряд ли решает мою проблему. Во-первых, мало смысла использовать gnome-open над xdg-open, о котором я уже упоминал в вопросе, и гораздо более переносим. Во-вторых, hardcoding для нескольких расширений файлов недостаточно для меня: как я уже сказал, «Мне нужна ассоциация файлов, чтобы почтить любое собственное приложение в настоящее время. И я хочу, чтобы это было сделано для всех типов файлов, настроенных в моей системе. & Quot; И я знаю, что это сложно. Это «магия». вы упомянули в своей заметке № 3, что меня интересует;) – MestreLion 8 October 2012 в 06:13
  • 2
    Думаю, я сначала прочитал ваш вопрос слишком быстро. Я видел, что вы используете xdg-open, и я изменю его в своих сценариях. О магии: один из способов - прочитать итерацию по всем элементам в файлах mime вместо того, чтобы иметь. Но тогда вам придется запускать его каждый раз, когда вы обновляете свою систему, поскольку новые расширения могут быть добавлены. Однако этого не происходит каждый день. – rosch 8 October 2012 в 22:41
  • 3
    Или даже зверски настроили cronjob для обновления реестра ... только изменив реестр, если мимы были обновлены. – rosch 8 October 2012 в 22:49
  • 4
    Сложная часть не , когда обновляет реестр, но как , или, точнее, обновляет, для каких расширений файлов? Я не знаю, как последовательно анализировать базу данных mime для извлечения всех расширений , которые имеют установленное по умолчанию, установленное приложение . Или, как вы сказали: как читать итерировать все элементы в файлах mime ? В моем mimeapps.lst есть некоторые типы mime, которые я не установил здесь, и некоторые указывают на приложение Wine (что вызовет бесконечные циклы) – MestreLion 9 October 2012 в 03:13
  • 5
    Извините за ошибки на английском языке в моем первом комментарии, я отредактировал его, и он немного испортился. Пожалуйста, прочтите мой EDIT в ответе, там у вас есть волшебство, так как все файлы позаботятся. – rosch 9 October 2012 в 13:03

Я собрал Info повсюду и нашел следующее:

Я создал файл с именем ~ / .wine / drive_c / gstart.exe

с следующее:

#!/bin/bash
OPEN_HANDLER=/usr/bin/xdg-open
# logging, optional
LOG=$HOME/.wine/gstart.exe-log.$(id -u -n)
echo "[ $(date) ] $# argument(s) received: '$@'" > $LOG
# convert the path
RESULT=$(winepath "$@" 2> /dev/null)
echo "$OPEN_HANDLER $RESULT" >> $LOG
TMP=$TMPDIR
TEMP=$TMPDIR
# finally open the file
$OPEN_HANDLER "$RESULT"

Затем: Создал файл с именем linuxnative.reg в моей ~ / bin

со следующим:

REGEDIT4
[HKEY_CLASSES_ROOT\.doc]
@="linuxnative"
"Content Type"="application/linuxnative"
[HKEY_CLASSES_ROOT\.rtf]
@="linuxnative"
"Content Type"="application/linuxnative"
[HKEY_CLASSES_ROOT\.odt]
@="linuxnative"
"Content Type"="application/linuxnative"
[HKEY_CLASSES_ROOT\.pdf]
@="linuxnative"
"Content Type"="application/linuxnative"
[HKEY_CLASSES_ROOT\.tif]
@="linuxnative"
"Content Type"="application/linuxnative"
[HKEY_CLASSES_ROOT\.doc]
@="linuxnative"
"Content Type"="application/linuxnative"
[HKEY_CLASSES_ROOT\.docx]
@="linuxnative"
"Content Type"="application/linuxnative"
[HKEY_CLASSES_ROOT\.jpg]
@="linuxnative"
"Content Type"="application/linuxnative"
[HKEY_CLASSES_ROOT\linuxnative]
[HKEY_CLASSES_ROOT\linuxnative\shell]
[HKEY_CLASSES_ROOT\linuxnative\shell\open]
[HKEY_CLASSES_ROOT\linuxnative\shell\open\command]
@="c:\\gstart.exe \"%1\""

, тогда вы do

regedit linuxnative.reg

Надеюсь, это поможет.

0
ответ дан 25 May 2018 в 20:00
  • 1
    Спасибо, что пытались помочь! Но жесткий список нескольких известных расширений не решает мою проблему. Кроме того, «информация, которую вы собрали со всего места» , по-видимому, представляет собой ту же самую информацию, уже опубликованную мной и rosch, включая копию и вставку его сценария gstart.exe. – MestreLion 4 August 2014 в 03:36

Другие вопросы по тегам:

Похожие вопросы: