Lança o programa do Windows com uma variável de ambiente personalizada

14

Meu JAVA_HOME na minha máquina dev - que é o Windows 7 Pro 64 Bit - aponta para um Java de 64 bits, e tudo bem em geral. No entanto, acabei de instalar um programa - a saber, o FlashDeveloper IDE - para o qual essa configuração não está bem: um Java de 32 bits é necessário e a configuração JAVA_HOME impede que o Java de 32 bits seja selecionado. / p>

Então, eu gostaria de desfazer JAVA_HOME antes de iniciar o IDE do Flash.

Uma maneira de conseguir isso seria por meio de um script em lote.

Mas não há uma maneira melhor? Eu procurei nas várias guias da janela Propriedades do Atalho do Windows por essa opção, mas parece não haver nenhuma. (Eu descobri, no entanto, uma caixa de seleção para executar o programa através do atalho como Administrator .) Alguma sugestão?

Atualização: solução que funcionou para mim

:: type "C:\Program Files (x86)\FlashDevelop\FlashDevelop.bat"
@ECHO OFF
SETLOCAL
REM Prevent wrong 64-bit JVM from being picked up:
SET JAVA_HOME=
CALL "%~dpn0.exe"

Isso abrirá um prompt de comando que eu só posso fechar. Você pode fazer com que o atalho tenha o ícone do executável que você está chamando no prompt de comando, instruindo o shell por meio das propriedades de atalho para procurar um ícone dentro do executável real.

Eu não consegui fazer com que as soluções que envolvem START funcionassem, o que abre uma nova janela cmd.exe em minha máquina quando ela passa o seguinte (não sei por quê):

start "C:\Program Files (x86)\FlashDevelop\FlashDevelop.exe"

Devo dizer que meu cmd.exe é ajustado - que pode ter uma influência aqui e ali.

Atualização sobre o start issue: Como pode ser aprendido seguindo o link nos comentários, o comando start usa os primeiros argumentos em aspas como o < em> title das janelas a serem criadas ... Assim, quando você passar um caminho entre aspas, será interpretado como o título da nova janela. A solução alternativa é fornecer um título explícito como primeiro argumento, que também pode estar vazio ( start "" "some path\with spaces" ).

    
por Lumi 13.05.2012 / 16:29

3 respostas

3

Desculpe por recuperar um thread antigo, mas imaginei que isso provavelmente ajudaria as pessoas que procuravam uma solução para esse problema:

Você pode substituir seu caminho JAVA_HOME diretamente em seu FlexSDK. Para fazer isso, navegue até a pasta 'bin /' do seu SDK (deve estar em 'C: \ Arquivos de Programas (x86) \ FlashDevelop \ Tools \ flexsdk \' se você permitir que o instalador do FD configure isso para você, caso contrário você provavelmente sabe onde está) e abra 'jvm.config'.

    
por 09.11.2012 / 16:40
11

Acho que você não acha que pode fazer isso no próprio atalho, portanto, o atalho precisa apontar para algo que define a variável e, em seguida, inicia seu programa. Claro, existem infinitas maneiras de fazer isso, mas o script de comando é provavelmente o mais simples.

Se você usar start command.exe em seu arquivo bat, você verá uma janela de comando piscando, mas ela não ficará ativa.

Atualização: na verdade, funciona para colocar isso como um alvo de atalho.

C:\Windows\System32\cmd.exe /c "set HOME=c:\ && start C:\Windows\System32\notepad.exe"

Atualização 2: Isso não funcionou com um espaço no caminho do comando. Mas isso acontece!

C:\Windows\System32\cmd.exe /c "set HOME=c:\ && path %path%;C:\Program Files (x86)\VideoLAN\VLC && start vlc.exe"
    
por 13.05.2012 / 16:37
2

Observe que set é apenas temporário, portanto, basta colocar o seguinte em um lote:

set JAVA_HOME=
program.exe
    
por 13.05.2012 / 16:42