New simplified installation procedure on Windows

Today, we are proud to announce that we have deployed a new and easier procedure for finding and installing Windows binaries and we plan to make it even easier going forward.

Background

None of the current maintainers of Graphviz are experienced Windows users and the process of finding and installing Windows binaries has been very complicated for a long time :cold_sweat:. In this article we provide detailed instructions for how to download and install Graphviz for Windows 10 for both advanced users and users with less experience. The instructions will probably be incorporated into the official documentation in some form or another at a later stage.

Feedback. Please! :pray:

Please help us improve the new installation procedure and the instructions in this article by providing feedback as comments below. Most important is of course if something is wrong or missing, but even if it just works without any problems for you, this is good information for us and for other users. Please state which operating system and which web browser you use and also which versions they have if you know how to find out.

We are particularly interested to know if this is working well also for Windows versions other than Windows 10 and if and how the procedure differs.

If you find a bug or want to suggest an enhancement to the software, please report it as a GitLab issue.

Installation instructions :grin:

Below are three sections that are intended for users with different levels of experience. The first two are the same procedure and will give you the exact same result, but differs in how much guidance they provide. Chose the first if you have no prior experience with installing software on Windows and the second if you feel comfortable with this and want a quick and easy installation procedure. Chose the third if you are an advanced user and want to be able select between all the options.

Installation instructions with detailed guidance (recommended for users without installation experience) :thinking:

These instructions provides screenshots for every step in the installation process, but does not show all available options. If you donā€™t need this guidance, you can jump to the abbreviated section for quicker installation. If you need more options, jump to the advanced section.

The screenshots are from a Windows 10 installation. If you are using another Windows version they may look slightly different. If you are having problems or find significant differences, please ask questions and provide feedback as comments below.

  1. Select if you want to install the 32-bit or 64-bit version of Graphviz.

    • We recommend you to install the 64-bit version unless you have a 32-bit computer.
    • If you donā€™t know and your computer isnā€™t very old, itā€™s probably a 64-bit computer and we recommend you to try the 64-bit version and as a fallback if this doesnā€™t work, instead install the 32-bit version which should always work.
    • Check this article if you want to learn how to determine which kind of computer you have.
  2. Visit the download location

  3. Download the 32-bit or 64-bit exe file.

  4. If you get a question whether to run or save the file, choose Run, otherwise save it and then run it by clicking or double-clicking on it.

  5. Click More info if you see this dialog:
    image

  6. Click Run anyway if you see this dialog:

  7. Click Yes if you see this dialog:

  8. Click Next > in this dialog:
    image

  9. Click I agree in this dialog:
    image

  10. Select Add Graphviz to the system PATH for current user in this dialog:

  11. Click Next > in the dialog above.

  12. Click Next > in this dialog:
    image

  13. Click Install in this dialog:
    image

  14. When the installation is finished; Click Finish in this dialog:
    image

  15. Restart any applications or Command prompts where you want to use Graphviz.

Congratulations! You have now successfully installed Graphviz. :muscle:

Try restarting your computer if you still have problems running Graphviz.

Abbreviated installation instructions (recommended for users with installation experience) :cowboy_hat_face:

These instructions do not show every detailed step and do not show all available options. If you find them hard to follow, jump to the detailed guidance section. If you want more options, jump to the advanced section.

  1. Visit the download location
  2. Download and run the 32-bit or 64-bit exe file.
  3. Ignore any security warnings you might get.
  4. During the installation, make sure you select Add Graphviz top the system PATH for current user.
  5. When the installation is finished, start CMD as an administrator
  6. Restart any applications or Command prompts where you want to use Graphviz.

Try restarting your computer if you still have problems starting Graphviz.

Installation instructions for custom installations (recommended for advanced users) :nerd_face:

If you find these instructions hard to follow, jump to the detailed guidance section.

Download

Download location

Graphviz binaries for all operating systems are available at:

Selecting what to download

CMake or MSBuild

We have two different build variants:

  • CMake (recommended for most users). Offers 32-bit and 64-bit release builds and comes with a GUI installer.
  • MSBuild (for advanced users requiring a debug build). Offers 32-bit debug and release builds and is provided as a .zip archive only.
32-bit or 64-bit

32-bit downloads are available both for CMake and MSBuild, while 64-bit downloads are available only for CMake.

Release or Debug

Release builds are available both for CMake and MSBuild, while Debug builds are available only for MSBuild and only for 32-bit

Installation of CMake binaries

Just run the installer as an administrator. We recommend you select Add Graphviz top the system PATH for current user during the installation to avoid having to do this manually.

Installation of MSBuild binaries

Unzip the .zip archive to a location of your choice and add that location followed by \Graphviz\Bin to the PATH environment variable.

Direct links to all possible Windows downloads

Build Stable
CMake MSBuild
32-bit release yes yes
32-bit debug yes yes
64-bit release yes no
64-bit debug yes no

Uninstalling Graphviz

  1. Open the Control Panel
  2. Click on Uninstall a program
  3. Click on the Graphviz version you want to uninstall
  4. Click on Uninstall/Change
  5. Click on Yes
  6. Click on Uninstall
  7. When the uninstallation is complete, click on Close

Known issues

These issues are already known to us and will be addressed as soon as we are able:

2 Likes

Excellent! This has been one of the biggest problems for years (on the Graphviz site and on stackoverflow). And extra courage points for non-Windows developers to do this!
OK:
OS Name: Microsoft Windows 10 Home
OS Version: 10.0.18363 N/A Build 18363
Browser: Firefox 78.0
User level, Windows user for many years, a Linux developer, but not a Windows developer

I installed 64-bit, mostly following instructions (they were very clear & detailed, but Iā€™ve been installing programs on Windows for decades). The installation was straight-forward with no surprises - except:

  • neato, gvpr, fdp and some others were not part of the installation (if you need a list, Iā€™ll provide) This was a surprise. If it was intentional, the documentation should call it out.

One other suggestion, my old version (Graphviz2.38) was left untouched. This is fine with me, but the installation instructions might mention how to remove old versions if so desired.

All-in-all clean-and-tidy! Good work!

p.s. running systeminfo in the cmd window gives the desired OS info

2 Likes

Thank you so much for the detailed review and the kind words.

It was a surprise to me too. None of us current maintainers know the intentions of the current state.

I filed an issue about it. You are welcome to fill in with the complete list and other info that you might have.

Good point. In the future we might have an installer that does this, but Iā€™ve added it to the instructions now.

Thanks, that was new to me. I think however that users needing instructions for this are better served by the article I linked so Iā€™ll leave the instructions as they are.

Thatā€™s really cool, things keep improving. Although I use linux a lot, I always need Windows.
As a developper, I cannot judge how hard is the install for unexprienced users, but I do have questions, or feedbacks, comments.

  • Is it possible to have a windows standalone zip binary ? In other words, is the install really necessary. Iā€™m no expert in installs, I think itā€™s mainly needed for registry update and licensing checks, open source sw have the luxury to be able to avoid that.

  • Is there any interest in Docker ? where dot would be provided as a service through a port ? less efficient when on the same machine indeed, but might allow different deployment and usage models.

  • Here now a bit more of imagination. What is still the difference between the installable binaries and the wasm port of them ? Iā€™ve seen that node-graphviz also needs graphviz to be installed, maybe in the future wasm will come to node and weā€™d solve all those install steps.

1 Like

I think this is what is described here, but if you mean something else, please clarify.

We currently use Docker containers with installed prerequisites when building for Linux and plan to create Docker images for Windows too at a later stage, but havenā€™t thought of providing Docker images including Graphviz.

Installable binaries run natively on the computer while WASM runs in a browser (at least this is the primary purpose).

Thanks for the answers,
I got confused about the binaries, and checked only the first that had an installer, but itā€™s actually the MSBuild that is a standalone zip install. Then everything is perfect.

Creating a docker image with graphviz is trivial for advanced docker users. This point might be relevant only in case it would be planned to support a sort of server service with a rest API on top of dot binary. Iā€™ve seen this done once, maybe I can prototype that in the near future. I admit that given the high portability of Graphviz, it is less interesting to call it through a rest API hosted on another server, as a usage model as it can easily be included in every server or even web page. Here I might refer to the http://www.plantuml.com/plantuml/ service as example, it makes integration easier in code editors plugins, but I also donā€™t like much the runtime dependency to an external server, so this point is not of much relevance.

The difference between WASM and a native binary is clear. I had doubts if the WASM port would produce any different result or would have any limitation in terms of features or options, but given the answers I assume that results produced by both are either binary identical or at least very similar within the computation precision variations of each platform.

Thanks a gain and keep up the good work.

@magjac
Iā€™m going to ask the simple question of the command line argument switches for a silent install of the cmake version? This is for the Chocolatey package.
Example: C:\installer.exe /silent
Thanks for any help in this matter.

In PowerShell you can do this with something like:

graphviz-install.exe /S /D=$env:graphviz_install_dir | Out-Null

CMD does not have the Out-Null, but otherwise it should be similar.

We use this in our CI pipeline configuration file where there also are some comments that might be useful:

Install using installer and add bin directory to path. Piping the output of the installer to Out-Null, makes the script wait for the .exe to exit, instead continuing to the next command (which will then fail because the install hasnā€™t finished)

1 Like

Powershell doesnā€™t wait for commands to exit? Thatā€™s pretty wildā€¦

1 Like

I really donā€™t know. I inherited this from the Appveyor config. I guess I should have tried it before blindly copying it.

That said; itā€™s not at all wild compared to other things that PowerShell does. The review comments of this MR contains links to many PowerShell absurdnesses that are far worse. My favorite is this comment that leads to this issue which could be a nice read on a rainy day as an alternative to watching a horror movie.

Iā€™m just driving-by, I havenā€™t actually tried running this, but I think that comment might be mistaken, from looking at some docs

It sounds like ā€œ| Out-Nullā€ is the equivalent of ā€œ> /dev/nullā€.

I think powershell commands wait for the previous command to finish (I donā€™t believe powershell executes commands automatically in parallel - how would ā€˜cdā€™ work if it does?).

I think perhaps when running

./graphviz-install.exe /S /D=$env:graphviz_install_dir | Out-Null;

I think the Out-Null just makes it so the console output of graphviz-install.exe doesnā€™t show up on screen?

1 Like

Just sent https://gitlab.com/graphviz/graphviz/-/merge_requests/1558 to see if the CI will pass without that ā€œOut-Nullā€.

1 Like

I was wrong: the Out-Null is required (thank you Matthew!). graphical .exes arenā€™t waited on, but normal console commands like ā€œout-nullā€ are waited on. What a wild system.

1 Like

I recently learned that if a Powershell script accepts parameters, then param(...) must be the absolute first line of the script. It canā€™t be the second line, following a comment or anything else. Powershell has some other surprises. I get the idea they did not spend enough talking with other people that had written shell interpreters. Given they were starting with a blank slate, they could have made some things simpler. I actually donā€™t fully understand its model where both strings and structured objects seem to be lurking under the surface.

2 Likes

I am trying to download from your website, but it is not exactly straight forward! Above is what I am seeing.