Giter Site home page Giter Site logo

just-install's Introduction

Just Install

The simple package installer for Windows

Build status License Semver


just-install is a simple program which automates software installation on Windows. It tries to do one simple thing and do it well: download a setup.exe and install it, silently.

⚠️ ⚠️ ⚠️ Maintenance Mode ⚠️ ⚠️ ⚠️

This project is no longer being actively developed. We suggest you to switch to Microsoft's winget.

Installation

For up-to-date install instructions, please visit https://just-install.github.io.

Quick start

To install a package, for example Firefox, run:

just-install firefox

There are also other commands and flags that are described in the output of just-install help.

Development

To contribute a new package, see here.

To work on just-install itself you will need Git, the Go compiler and the WiX Toolset. You can install them with just-install itself:

just-install git go wix

Credits

The cube icon is derived from the one available from Ionicons.

just-install's People

Contributors

ctjhoa avatar cyagon avatar demichiel avatar geek1011 avatar guiweber avatar infuriare avatar lv-develer avatar lvillani avatar maphew avatar matthew-davey avatar mimi89999 avatar mrchang1 avatar msumulong avatar naufraghi avatar pgaskin avatar schokobecher avatar thecyaneyed avatar vincecima avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

just-install's Issues

Full support for "installing" ZIP archives

ZIP archives just need to be extracted somewhere, possibly by specifying the destination directory as a value in the "options" dictionary in the registry.

The code to extract zip files is already there, since it's being used to support "wrapped installers" (see #9), it just needs to be used to support zip installers.

Progress bars

Investigate using the progressbar module to present a download progress bar to users.

Custom installation type

A new installation kind of type "custom" should be added to the catalog.

Using this type makes the "custom_args" key available to specify which arguments should be passed to the installer.

PATH Handling

Provide a new catalog entry so that just-install can manage the System path by appending entries to an AutoRun script for cmd.exe.

Do not edit the PATH environment variable as set in the Registry, just-install should not fiddle by itself with these settings. Leave the responsibility up to the package itself.

Reference: http://technet.microsoft.com/en-us/library/cc779439(v=ws.10).aspx

Remove dependency from Visual C++ 2008 Runtime

just-install currently requires the Visual C++ 2008 redist to be installed on the target system otherwise it won't run.

This is because just-install is written in Python 2.7 which, in turn, is built with Visual C++ 2008. This version of the VC++ runtime is difficult to bundle since it is part of the WinSxS mess. This means that even though PyInstaller bundles the DLL, users must have the redistributable package installed on their system.

Newer version of Python (e.g. 3.3 and 3.4) don't suffer from this problem because they use newer version of the Visual C++ runtime (Microsoft thankfully dropped the whole SxS mess for MSVCRT since Visual Studio 2010). However PyInstaller doesn't support Python 3 yet so we can't switch to it.

Split self-update functionality into a separate just-install-updater.exe executable.

The way just-install updates itself is sub-optimal: it involves sleeps, calling itself with "secret" command line flags, using win32process.DETACH, etc. Everything is very fragile.

Replace this mess with something simpler: a new updater program (just-install-updater.exe) to be made available through just-install's catalog itself which downloads and installs the latest version.

Multiarch support

Support downloading and installing architecture-dependent binaries.

Add support for:

  • x86
  • x86_64

Continuous Integration

Add a test pass over the registry file to ensure that all installers are still reachable

Change installation method

This is a breaking change that should be scheduled for just-install 3.0.0 to be released by the end of the year.

Some ideas:

  • just-install won't copy itself to %WinDir% anymore.
  • shims will be created in the same directory as just-install itself or a subdirectory, like bin
  • we may require exeproxy to be installed on the target system and attempt to install it automatically if missing

See also #51

Spawn subprocess in a minimal environment

This is to prevent a problem i.e. when installing python2.6-win32 because:

  • just-install is frozen by PyInstaller against Python 2.7
  • PyInstaller's boot loader mangles the environment so that the executable finds the Python interpreter (python27.dll)
  • If we launch pywin32 for Python 2.6 installer as-is it loads python27.dll from PyInstaller's temporary directory

At this point everything implodes and installation fails

Catalog versioning

Add a version key to the catalog so that just-install knows of unsupported catalog formats.

Executable icon

Since the rewrite, the just-install executable has lost its icon. Let's restore it.

Normalize SysWOW64 environment variables

just-install is compiled as a 32-bit binary for compatibility reason. Since we allow environment variables expansion in various places we should present users with stable environment variables they can rely upon. Currently %ProgramFiles% and %ProgramFiles(x86)% are the worst offenders here.

Here is what Windows does:

Environment Variable 32-bit Windows 64-bit Windows 32-bit exe on 64-bit Windows
%ProgramFiles% %SystemDrive%\Program Files %SystemDrive%\Program Files %SystemDrive%\Program Files (x86)
%ProgramFiles(x86)% Undefined %SystemDrive%\Program Files (x86) %SystemDrive%\Program Files (x86)

This is clearly suboptimal since we only want to distribute a 32-bit executable and want to provide a consistent worldview whenever environment variables are expanded.

Here's what should happen instead, regardless of whether just-install.exe is a 32-bit or 64-bit executable:

Environment Variable 32-bit Windows 64-bit Windows
%ProgramFiles% %SystemDrive%\Program Files %SystemDrive%\Program Files
%ProgramFiles(x86)% %SystemDrive%\Program Files %SystemDrive%\Program Files (x86)

That is, both %ProgramFiles% and %ProgramFiles(x86)% are defined and point to appropriate locations.

just-install should check whether it is running on 32-bit or 64-bit Windows (there's code to do that already) and export the environment variables accordingly.

Although there are ways to disable WOW64 file system redirection, Microsoft itself advises against doing so.

We use appropriate Win32 API functions to query the system for the real path to the "Program Files" directory. See the following sites for reference documentation:

The legacy SHGetFolderPath API call shall be used to support Windows XP clients. The rationale is that although the consumer edition of Windows XP is in EOL, there other editions of Windows XP still supported by Microsoft (Windows XP Embedded is supported until 2016 and Windows XP POSReady until 2019. See here for more details).

This is required to implement #7.

Qt 4.8.4 should be installed interactively

The Qt (NSIS) installer doesn't seem to run some post installation tasks when in silent mode. It is impossible to compile any Qt program if Qt was installed that way. 100% reproducible in a virtual machine. Installing manually seems to correct the problem.

Npackd

Hi,

Are you interested in some sort of collaboration?

--Tim

Error when installing Winscp

Hello,

First of all, I want to thank you for your great work! It's a wonderful App! :)

I have tried installing Winscp, but i got an error :
C:>just-install winscp
2014/08/24 16:53:49 x86_64 - http://winscp.net/download/files/201405031411c9de1a
51d9b2cdea0b1e5c2c4d4ad6d3/winscp553setup.exe
2014/08/24 16:53:49 Running C:\Users\Me~1\AppData\Local\Temp\99E61D4C.exe [/
norestart /sp- /verysilent]
2014/08/24 16:53:51 exit status 1

I have tried to update winspc to 5.5.5 also :
C:>just-install winscp5.5.5
2014/08/24 16:56:16 x86_64 - http://winscp.net/download/files/201408241444811783
1ee59f674c742ac5af60d59ea6/winscp555setup.exe
2014/08/24 16:56:16 Running C:\Users\Me~1\AppData\Local\Temp\84F4518B.exe [/
norestart /sp- /verysilent]
2014/08/24 16:56:18 exit status 1

I have the impression it doesn't download the file correctly.

I have another question too: May it be possilble to verify updates by searching the version on the official website? (like in Keratin). Thanks in advance.

Do not run installers/executables through %COMSPEC%

Executable files should be executed directly instead of using the shell.

This was done in the past to e.g. use explorer.exe to view .zip files (notably to install the Colemak keyboard layout - we simply "executed" the zip file via %COMSPEC% (that should be like using ShellExecute on the .zip file, but I'm a bit rusty with Win32 api to be certain).

Now that we have direct support for extracting zip files and unwrapping installers contained in zip archives, we can just execute downloaded installers directly.

MSI Installer (again)

Let's get back providing an MSI installer.

Advantages:

  • We don't have to tell users to place just-install under C:\Windows (or everywhere else on the system default path)
  • One command to install just-install and set-up the environment for all platforms (i.e.: Windows XP and up, which don't have PowerShell by default)

MSI Installer

Provide an MSI installer since it's the only sane way to let people install this program without having to manually download the installer or resort to some VBScript/PowerShell trickery (the former is cumbersome, the latter may not be available on all versions of Windows, plus it's goddamn slow, generally ugly, unnecessarily complicated and hard to memorize).

They will just have to run msiexec.exe /i http://somewhere/just-install.msi

Bonus points: WindowsInstaller is the official package manager on Windows, in a perfect world everyone would use it. Let's start by doing our part.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.