Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Windows 8: .phar files, how do you want to open

I'm trying to run composer on windows with wamp. I installed composer using the cmd prompt, and now I'm trying to run "composer update" for an SDK. However, when I type in "composer.phar update," windows asks what app I want to use to run this program. I want the command prompt to deal with it! How do I just run it through cmd, without this "what app" window coming up?

like image 796
John Doe Avatar asked Oct 16 '13 20:10

John Doe


People also ask

How do I open a .PHAR file?

How to open PHAR files. You need a suitable software like PHP from The PHP Group to open a PHAR file. Without proper software you will receive a Windows message "How do you want to open this file?" or "Windows cannot open this file" or a similar Mac/iPhone/Android alert.


2 Answers

You have to set php.exe as your default application for phar files.

like image 172
Johni Avatar answered Sep 29 '22 11:09

Johni


.phar stands for PHP Archive

Usually .phars take some arguments, so they are intended to be run from command prompt. Linux/BSD/OS X shell or Windows command prompt.

Linux .phar use case scenarios assume .phars are copied to some /bin and renamed to be without .phar extension, so you can use a php archive as if you would use any other linux command. So I recommend following way of doing the same thing with Windows:

  1. Put all your .phar files to one directory like C:\php\phars
  2. Add C:\php\phars to system environment variables (right-click my Computer -> Properties -> Advanced System Settings -> Environment variables)
  3. Start the elevated command prompt (find command prompt in start menu then right-click and select Run as Administrator)
  4. Type the following commands, replacing the path C:\phpdev\php\php542\php.exe with full path to your PHP executable:
ftype PHARFile=C:\phpdev\php\php542\php.exe "%1" %*
assoc .phar=PHARFile
set PATHEXT=%PATHEXT%;.PHAR

Next time your should be able just to run Windows console (keyboard Win+R and type cmd.exe) and type any of your .phar's like apigen.phar followed by any command and it will work

C:\Users\acosonic>apigen.phar help
Usage:
...

Arguments:
 command        The command to execute
 command_name   The command name (default: "help")

Options:
 --xml          To output help as XML
 --format       To output help in other formats (default: "txt")
 --raw          To output raw command help
 --help (-h)    Display this help message.
 --quiet (-q)   Do not output any message.
 --version (-V) Display this application version.

Help:
 The help command displays help for a given command:

   php C:\phpdev\phars\apigen.phar help list

 You can also output the help in other formats by using the --format option:

   php C:\phpdev\phars\apigen.phar help --format=xml list

 To display the list of available commands, please use the list command.

C:\Users\acosonic>

So this way lets you run .phar archives in a directory where you need to work, for example generating documentation in C:\myproject\controller without specifying full path to .phar as if you would if it's run without adding it to Windows path.

To explain what commands in step 4 did:

  1. Created mapping HKCR.phar → HKCR\PHARFile
  2. Created HKCR\PHARFile\shell\open\command = 'php.exe "%1" %*' [REG_EXPAND_SZ]
  3. Extended HKCU\Environment\PATHEXT = '%PATHEXT%;.PHAR' [REG_EXPAND_SZ]

*.phar gets treated like binary/script, and *.phar execution works as long as a *.phar file is located anywhere in %PATH%.

like image 41
Aleksandar Pavić Avatar answered Sep 29 '22 12:09

Aleksandar Pavić