web-dev-qa-db-fra.com

Ouvrir le fichier en utilisant la commande personnalisée: comment spécifier le fichier en ligne de commande?

Je souhaite ouvrir PDF à l'aide de PDF-XChange Viewer via WINE. Comment spécifier le nom de fichier pdf dans la ligne "commande personnalisée" pour pouvoir ouvrir un fichier PDF à l'aide de PDF-XChange Viewer en double-cliquant dessus? J'ai essayé d'utiliser le\"z:% f \" en suivant la suggestion ici pour utiliser le lecteur Foxit. Mais mon PDF-XChange Viewer ne commence que par une fenêtre vide.

wine "c:/Program Files/Tracker Software/PDF Viewer/PDFXCview.exe" \"z:%f\"

J'utilise Ubuntu 10.04 et WINE 1.2.2. PDF-XChange Viewer version 2.5.

4
HongboZhu

Vous avez trouvé des entrées de blog concernant le même problème pour Foxit Reader et pour PDF-XChange Viewer . Aucun d'entre eux n'a fonctionné pour moi. Alors je les ai éditées et j'en ai eu une adaptée à mon cas:

#!/bin/bash  
Filename="z:${1//\//\\}"
wine "C:\Program Files\Tracker Software\PDF Viewer\PDFXCview.exe" $Filename

Sauvegardez ce script bash et ouvrez le pdf en utilisant ce script. Maintenant, double-cliquez sur les fichiers pdf pour les ouvrir à l’aide de PDF-XChange Viewer.

3
HongboZhu

Si le script fonctionne, alors vous devriez accepter cette réponse même si c'était la vôtre.

Ce qui a fonctionné ici pour d’autres applications dans la mesure où une commande personnalisée était proche de ce que vous essayiez, à quelques petites différences.

wine "C:\Program Files\Tracker Software\PDF Viewer\PDFXCview.exe" Z:%f

Référencé ici pour photoshop avec add. informations sur la modification du nom d'affichage si vous le souhaitez pour un clic droit - http://ubuntuforums.org/showpost.php?p=9193687&postcount=9

2
doug

Ceci est basé sur l'excellent script de @ Flint.

Au début, j'ai essayé la variable "Z:"%U à la fin du fichier de bureau Exec= pour les programmes Wine. Cela a bien fonctionné jusqu'à ce que j'ouvre un programme sans fichier spécifié. Les programmes Wine se sont plaints du fichier manquant car la ligne Exec= désignait le lecteur Z: il ne s'agit clairement pas d'un fichier, mais d'un chemin d'accès absolu. File not found: Z: ou des messages similaires sont apparus dans un programme Wine. Peu ennuyeux.

Le problème avec "Z:"%U est que ce n'est pas une variable conditionnelle si Z: est utilisé ici. Cependant, Wine requiert absolument Z: car il ne peut pas trouver les chemins de fichiers corrects autrement.

Votre script transforme la chose "Z:"%U entière en une clause conditionnelle. Le script fait le travail exactement comme je le souhaitais.

Cependant, le script doit également prendre en compte tous les fichiers exe écrits en majuscules. Il ne peut désormais pointer aucun fichier MS Office (docx, pptx ...) vers MS Office 2010 car tous les exécutables du programme sont écrits comme WINWORD.EXE ou POWERPNT.EXE. Bien sûr, les exécutables pourraient être renommés en minuscule, mais je préfère une solution plus universelle plutôt que de renommer des exécutables uniques pour chaque programme.

La solution sale et universelle consiste à modifier le code du script comme suit:

#!/bin/bash

allargs=("$@")

fixpath=0
for idx in "${!allargs[@]}"; do
    arg="${allargs[$idx]}"

    if [[ $fixpath -eq 0 ]]; then
        # fix file paths only after the first executable is found in arg
        if [[ "$arg" == *.exe ]]; then
            fixpath=1
        fi
        if [[ "$arg" == *.EXE ]]; then
            fixpath=1
        fi
        continue
    Elif [[ $fixpath -eq 1 ]]; then
        # if arg starts with '/' and it's a path that exists on Host
        # precede the path with drive 'Z:'
        if [[ "${arg:0:1}" == '/' && -e "$arg" ]]; then
            allargs[$idx]="z:${arg//\//\\}"
        fi
    fi
done

exec env "${allargs[@]}"

L'opérateur or n'a pas fonctionné pour une raison quelconque. De toute façon, je suis sûr qu'il existe un moyen plus élégant d'obtenir le même résultat.

1
Fincer

Je me rends compte que c’est une vieille question, mais je souhaite partager ma solution, que j’ai figurée après avoir commencé à utiliser PDFXchangeEditor (successeur de PDFXchangeViewer), puis être tombée dans le problème pour lui faire accepter plusieurs fichiers d’entrée de Host os. Tout d’abord, la réponse acceptée et toutes les autres réponses postées supposent que le programme ne gérera qu’un seul fichier. Vous pouvez réellement lancer plusieurs fichiers en même temps et cela les ouvrira bien, avec un petit truc.

L'astuce consiste à utiliser le code %F dans le champ Exec du lanceur .desktop de l'application et à faire précéder tous les arguments de fichiers locaux développés dans le champ avec Z:, à l'aide du script suivant.

Appelez-le wine-env. Cela va dans /usr/local/bin et assurez-vous de le donner chmod +x

#!/bin/bash

allargs=("$@")

fixpath=0
for idx in "${!allargs[@]}"; do
    arg="${allargs[$idx]}"

    if [[ $fixpath -eq 0 ]]; then
        # fix file paths only after the first executable is found in arg
        if [[ "$arg" == *.exe ]]; then
            fixpath=1
        fi
        continue
    Elif [[ $fixpath -eq 1 ]]; then
        # if arg starts with '/' and it's a path that exists on Host
        # precede the path with drive 'Z:'
        if [[ "${arg:0:1}" == '/' && -e "$arg" ]]; then
            allargs[$idx]="Z:$arg"
        fi
    fi
done

exec env "${allargs[@]}"

Et pour le fichier .desktop de l'application, appelez-le pdfxce.desktop et mettez-le dans ~/.local/share/applications/ et son contenu devrait ressembler à ceci

[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

Vous devez changer la pièce avec votre propre nom d'utilisateur. Je garde tous mes répertoires de préfixes wine dans un dossier appelé "bouteilles". Vous pouvez avoir votre propre façon d’organiser vos préfixes de vin, alors changez toutes les parties qui contiennent des "bouteilles" en conséquence.

Et dernière étape, attribuez les fichiers PDF à l'application comme d'habitude (clic droit sur pdf -> Properties -> Open With tab)

Référence: spécification d'entrée de bureau de Freedesktop

0
Flint

J'ai suivi ce lien pour installer le visualiseur PDF32 bits _ 32 bits dans Ubuntu 64 bits 14.04. Le lien affiche ensuite un script permettant d'ouvrir le visualiseur PDF Xchange avec le nom du fichier comme argument. J'ai fait ce script et l'ai gardé dans /bin

Puis j'ai édité le ~/.local/share/applications/wine-extension-pdf.desktop à ceci:

[Desktop Entry]
Type=Application
Name=PDF-XChangeViewer
MimeType=application/pdf;
Exec=PDFXCview %f
NoDisplay=true
StartupNotify=true

Mon script s'appelait PDFXCview

0
soham

Si ce programme est déjà installé avec Wine, je ne pense pas qu'il ait besoin d'un chemin absolu. Je pense seulement

 wine pdfxcview filename

ouvrira le fichier.

Ok peut-être que ma réponse est stupide. Qu'est-ce que vous essayez réellement de faire? essayez-vous de corriger l'erreur de lancement du programme?

0
Curious Apprentice