Você está fornecendo um caminho absoluto estilo Linux para um executável do Windows que está sendo executado pelo Wine, não dando esse argumento de caminho para o próprio Wine. Portanto, você deve tratar cada argumento após o caminho para o argumento .exe
como um estilo do Windows (por exemplo, wine /home/$USER/.wine/drive_c/path/to/Windows/executable.exe [Windows Style Arguments]
).
Os caminhos de estilo Linux completos funcionam para notepad.exe
, mas considere que notepad.exe
provavelmente não é a versão do Windows do Notepad, está incluído na configuração do Wine e provavelmente está ajustado para aceitar Caminhos do Linux (como /tmp/test/O.pdf
).
A maioria dos aplicativos que wine
podem executar, no entanto, não possuem esses ajustes e, portanto, aceitam apenas caminhos no estilo do Windows. Então, você precisa dar a esses aplicativos um caminho no estilo do Windows, no formato como C:\Windows\System32\...
, mas com relação à localização real dos arquivos e com relação aos mapeamentos de unidade no Wine, levando em consideração o console do Bash / Linux interpretações de estilo * de caminhos.
Primeiro, encontre os mapeamentos de unidade e onde eles 'existem' na infra-estrutura de arquivos do Linux. Para fazer isso, carregue acima de winecfg
e, na janela de configuração do Wine, vá para " Drives "tab. Será algo parecido com isto:
Como você pode ver, eu tenho C:
, que está mapeado para o diretório Wine drive_c
, que nesta instância está em /home/teward/.wine
. Eu também tenho uma unidade M:
mapeada para meu diretório /mnt/
, o que é relevante porque tenho coisas referenciadas por M:\
nos aplicativos do Wine.
O que é mais relevante é o Z:
mapping, que mapeia para a partição root /
no meu ambiente Linux. Este geralmente é um mapeamento padrão, mas não necessariamente estará em seu ambiente (portanto, certifique-se de que esteja). Qualquer que seja a unidade Wine mapeada para /
, você precisará usar. E se não existir, você precisará adicionar um mapeamento de unidade que corresponda a /
ou ao diretório real em que seus dados estão, na verdade, que você está abrindo com o aplicativo do Windows. Tecnicamente, você poderia ter T:
mapeado para /tmp/
e, em seguida, T:
, mas não estou assumindo isso como resposta. Z:
.pdf
Assim, para os propósitos desta resposta, assumirei que /
está realmente mapeado para Z:\
e use isso a partir deste ponto em minha resposta.
Você precisa seguir o caminho do Linux e convertê-lo para o estilo Windows a partir da raiz da unidade /tmp/test/0.pdf
. Então, para 'Z:\tmp\test
no Linux, você vai realmente dar '
.pdf'/foo/bar/baz
(incluindo as citações únicas de :
para que o shell não atrapalhe a interpretação * do caminho). Dessa forma, o aplicativo no estilo do Windows está obtendo um caminho que pode ler e entender, não um caminho que não é possível.
Muito poucas aplicações do Wine são realmente capazes de entender os caminhos do estilo \
do Linux, e a maioria dos que foram modificados e instalados como parte da configuração do Wine para começar. Portanto, é melhor fornecer caminhos no estilo do Windows para aplicativos do Windows em execução no Wine, em vez de caminhos de estilo do Linux.
* Quando me refiro a 'interpretação', não me refiro ao \
, mas ao C:\Program Files\Foo\bar.exe
que está nos caminhos. E embora o seu caminho não contenha espaços, também me refiro a espaços. Na sintaxe Bash, o C:\Program\ Files\Foo\bar.exe
é usado como parte de um caractere de escape. Além disso, na linha de comando, os argumentos são delimitados por espaços, portanto, ele não sabe como processar espaços nos caminhos e, como tal, você teria que escapar deles com barras invertidas. Então, para o que seria '
, você precisaria colocar 'C:\Program Files\Foo\bar.exe'
no caminho. No entanto, com o shell Bash padrão, você pode negar essa má interpretação de barras e espaços envolvendo o caminho com aspas simples ( %code% ), que o trata como um argumento literal sendo passado, em sua totalidade, para que você possa fazer %code% sem ter que lidar com barras invertidas ou espaços vazios.