Skip to content

Commit

Permalink
Merge pull request #184 from Alia5/update_docs_add_installer
Browse files Browse the repository at this point in the history
Update docs / add installer
  • Loading branch information
Alia5 authored Oct 2, 2022
2 parents 4aef461 + e7a0e35 commit 5fceb7f
Show file tree
Hide file tree
Showing 18 changed files with 371 additions and 227 deletions.
195 changes: 195 additions & 0 deletions Installer/Installer.nsi
Original file line number Diff line number Diff line change
@@ -0,0 +1,195 @@


!define APP_NAME "GlosSI"
!define COMP_NAME "Peter Repukat - Flatspotsoftware"
!define WEB_SITE "https://glossi.flatspot.pictures/"
!define VERSION "0.0.9.1-48-geb4ae9c"
!define COPYRIGHT "Peter Repukat - FlatspotSoftware © 2017-2022"
!define DESCRIPTION "SteamInput compatibility tool"
!define INSTALLER_NAME "GlosSI-Installer.exe"
!define MAIN_APP_EXE "GlosSIConfig.exe"
!define INSTALL_TYPE "SetShellVarContext all"
!define REG_ROOT "HKLM"
!define REG_APP_PATH "Software\Microsoft\Windows\CurrentVersion\App Paths\${MAIN_APP_EXE}"
!define UNINSTALL_PATH "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}"

!define PROD_NAME "GlosSI"
!define PROD_PUBLISHER "Peter Repukat - FLatspotSoftware"
!define PROD_WEB_ADDRESS "https://glossi.flatspot.pictures/"
!define PROD_WEB_ADDRESS_SUPP "https://glossi.flatspot.pictures/"

!define REG_START_MENU "Start Menu Folder"

!define TARGET_APP_EXE "GlosSITarget.exe"

var SM_Folder

######################################################################

VIProductVersion "${VERSION}"
VIAddVersionKey "ProductName" "${APP_NAME}"
VIAddVersionKey "CompanyName" "${COMP_NAME}"
VIAddVersionKey "LegalCopyright" "${COPYRIGHT}"
VIAddVersionKey "FileDescription" "${DESCRIPTION}"
VIAddVersionKey "FileVersion" "${VERSION}"

######################################################################

SetCompressor ZLIB
Name "${APP_NAME}"
Caption "${APP_NAME}"
OutFile "${INSTALLER_NAME}"
BrandingText "${APP_NAME}"
XPStyle on
InstallDirRegKey "${REG_ROOT}" "${REG_APP_PATH}" ""
InstallDir "$PROGRAMFILES64\GlosSI"

######################################################################

Unicode true

SetCompressor lzma
SetDateSave off

;--------------------------------
;Include Modern UI

!include "MUI2.nsh"


!define MUI_WELCOMEPAGE_TITLE "GlosSI Installer"
!define MUI_WELCOMEPAGE_TEXT "Welcome to the GlosSI Installer!"
;Extra space for the title area
;!insertmacro MUI_WELCOMEPAGE_TITLE_3LINES


!insertmacro MUI_PAGE_WELCOME

!insertmacro MUI_PAGE_LICENSE "../LICENSE"
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY

!ifdef REG_START_MENU
!define MUI_STARTMENUPAGE_DEFAULTFOLDER "GlosSI"
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "${REG_ROOT}"
!define MUI_STARTMENUPAGE_REGISTRY_KEY "${UNINSTALL_PATH}"
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "${REG_START_MENU}"
!insertmacro MUI_PAGE_STARTMENU Application $SM_Folder
!endif



!insertmacro MUI_PAGE_INSTFILES


Function finishpageaction
CreateShortCut "$DESKTOP\${APP_NAME}.lnk" "$INSTDIR\${MAIN_APP_EXE}"
FunctionEnd

!define MUI_FINISHPAGE_SHOWREADME ""
!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
!define MUI_FINISHPAGE_SHOWREADME_TEXT "Create Desktop Shortcut"
!define MUI_FINISHPAGE_SHOWREADME_FUNCTION finishpageaction

!define MUI_FINISHPAGE_RUN "$INSTDIR\${MAIN_APP_EXE}"
!insertmacro MUI_PAGE_FINISH

!insertmacro MUI_UNPAGE_WELCOME
!insertmacro MUI_UNPAGE_CONFIRM

!insertmacro MUI_UNPAGE_INSTFILES

!insertmacro MUI_UNPAGE_FINISH

!insertmacro MUI_LANGUAGE "English"


Section "GlosSI" -MainProgram
SectionIn RO

${INSTALL_TYPE}
SetOverwrite ifnewer
SetOutPath "$INSTDIR"

File /r /x "GlosSI*.zip" "..\x64\Release\*"

SectionEnd

Section "Visual Studio Runtime"
SetOutPath "$INSTDIR"
File "..\x64\Release\vc_redist.x64.exe"
ExecWait '"$INSTDIR\vcredist_x64.exe" /quiet'
SectionEnd

Section "ViGEmBus Driver"
SetOutPath "$INSTDIR"
File "..\x64\Release\ViGEmBusSetup_x64.exe"
ExecWait '"$INSTDIR\ViGEmBusSetup_x64.exe"'
SectionEnd

Section "HidHide Driver"
SetOutPath "$INSTDIR"
File "..\x64\Release\HidHideSetup.exe"
ExecWait '"$INSTDIR\HidHideSetup.exe"'
SectionEnd


Section -Icons_Reg


SetOutPath "$INSTDIR"
WriteUninstaller "$INSTDIR\uninstall.exe"


!ifdef REG_START_MENU
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
CreateDirectory "$SMPROGRAMS\$SM_Folder"
CreateShortCut "$SMPROGRAMS\$SM_Folder\${APP_NAME}.lnk" "$INSTDIR\${MAIN_APP_EXE}"
CreateShortCut "$SMPROGRAMS\$SM_Folder\${APP_NAME}-Target.lnk" "$INSTDIR\${TARGET_APP_EXE}"
!insertmacro MUI_STARTMENU_WRITE_END
!endif

!ifndef REG_START_MENU
CreateDirectory "$SMPROGRAMS\GlosSI"
CreateShortCut "$SMPROGRAMS\GlosSI\${APP_NAME}.lnk" "$INSTDIR\${MAIN_APP_EXE}"
!endif

WriteRegStr ${REG_ROOT} "${REG_APP_PATH}" "" "$INSTDIR\${MAIN_APP_EXE}"
WriteRegStr ${REG_ROOT} "${UNINSTALL_PATH}" "DisplayName" "${APP_NAME}"
WriteRegStr ${REG_ROOT} "${UNINSTALL_PATH}" "UninstallString" "$INSTDIR\uninstall.exe"
WriteRegStr ${REG_ROOT} "${UNINSTALL_PATH}" "DisplayIcon" "$INSTDIR\${MAIN_APP_EXE}"
WriteRegStr ${REG_ROOT} "${UNINSTALL_PATH}" "DisplayVersion" "${VERSION}"
WriteRegStr ${REG_ROOT} "${UNINSTALL_PATH}" "Publisher" "${COMP_NAME}"

!ifdef WEB_SITE
WriteRegStr ${REG_ROOT} "${UNINSTALL_PATH}" "URLInfoAbout" "${WEB_SITE}"
!endif
SectionEnd


Section Uninstall
${INSTALL_TYPE}
RmDir /r "$INSTDIR"

!ifdef REG_START_MENU
!insertmacro MUI_STARTMENU_GETFOLDER "Application" $SM_Folder
Delete "$SMPROGRAMS\$SM_Folder\${APP_NAME}.lnk"
Delete "$SMPROGRAMS\$SM_Folder\${APP_NAME}-Target.lnk"
Delete "$DESKTOP\${APP_NAME}.lnk"

RmDir "$SMPROGRAMS\$SM_Folder"
!endif

!ifndef REG_START_MENU
Delete "$SMPROGRAMS\GlosSI\${APP_NAME}.lnk"
Delete "$DESKTOP\${APP_NAME}.lnk"

RmDir "$SMPROGRAMS\GlosSI"
!endif

DeleteRegKey ${REG_ROOT} "${REG_APP_PATH}"
DeleteRegKey ${REG_ROOT} "${UNINSTALL_PATH}"
SectionEnd



3 changes: 3 additions & 0 deletions Installer/buildInstaller.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
$env:Path += ';C:\Program Files (x86)\NSIS\Bin'

makensis.exe Installer.nsi
64 changes: 27 additions & 37 deletions Readme.md
Original file line number Diff line number Diff line change
@@ -1,72 +1,62 @@
[![Build status](https://ci.appveyor.com/api/projects/status/l9hq9qglvn6q5wdg/branch/main?svg=true)](https://ci.appveyor.com/project/Alia5/glossi/branch/main) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![Github All Releases](https://img.shields.io/github/downloads/Alia5/GloSC/total.svg)]() [![Discord](https://img.shields.io/discord/368823110817808384.svg)](https://discord.gg/T9b4D5y)
[![Build status](https://ci.appveyor.com/api/projects/status/l9hq9qglvn6q5wdg/branch/main?svg=true)](https://ci.appveyor.com/project/Alia5/glossi/branch/main) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![Discord](https://img.shields.io/discord/368823110817808384.svg)](https://discord.gg/T9b4D5y) ![version](https://img.shields.io/github/v/tag/alia5/glossi?label=version) [![WebsiteAndDownloads](https://img.shields.io/website?label=Website%20%26%20downloads&url=https%3A%2F%2Fglossi.flatspot.pictures)](https://glossi.flatspot.pictures)

TODO: Logo
<!-- ![GloSC logo](https://github.com/Alia5/GloSC/blob/master/GloSC_Icon_small.png?raw=true "GloSC logo") -->
<div style="display: flex; align-items: center">
<h1> <img align="center" src="https://github.com/Alia5/GlosSI/blob/main/GlosSI_Logo_512.png?raw=true" width="256" height="256" alt="GlosSI Logo" /> GlosSI - Global (systemwide) Steam Input</h1>
</div>

# ATTENTION: GloSC is currently being rewritten, and renamed to GlosSI ([Glo]bal ([s]ystemwide) [S]team [I]nput)
GlosSI formerly knows as GloSC (Global Steam Controller), is a tool that allows one to use Steam-Input controller rebinding at a system-level alongside a system wide (borderless window) Steam overlay

No ETA when it's done
No support until then.
The primary use case of GlosSI is to use SteamInput (required for SteamController / SteamDeck-buttons) with incompatible Games such as Windows-Store titles or Emulators.

**Looking for contributors!**
As the past has shown, I have way to less time on hand too maintain such a project.
Reach out via Discord/E-Mail (But get to the point right away, please, I get way too much spam)

See: [BUILDING.md](./docs/BUILDING.md),[CONTRIBUTING.md](./CONTRIBUTING.md)

Snapshot builds can always be found [-> here <-](https://1-3-3-7.dev/u/glossisnapshot)

# GlosSI

GlosSI or [Glo]bal ([s]ystemwide) [S]team [I]nput, formerly knows as GloSC (Global Steam Controller), is a tool that allows one to use Steam-Input controller rebinding at a system-level alongside a system wide (borderless window) Steam overlay
All complete with **per application bindings and working rumble emulation.**
GlosSI can, but isn't required to, launch any of your favorite games or applications and directly add them to Steam, be it Win32 or Windows Store (UWP)!
It is **the tool** to enjoy any game that has trouble with Steam and/or *add extra functionality* to your Steam-Input needs

*Windows Store*, *Reshade / SweetFX*, *Origin*, *Uplay*, *Emulators* and *more* with **no hassle**

---

## How does it work? / What does it do?

GlosSI creates and adds a (or multiple) non-Steam shortcuts to Steam. When one of those is launched, a transparent, borderless window appears in which you can use the Steam-overlay. You also get access to touch- and radial-menus and other functionality normally only present in Games
GlosSI provides a target application that can be added as a "Non-Steam Game" to Steam.
When launched, it redirects all configured controller inputs to a virtual system-level XBox360 controller.

In addition to that, Gamecontroller-inputs are redirected to the whole operating system, so that they will work with any game or application
Real Gamecontrollers are hidden from other applications, so that they can't interfere with your game.
Additionally, it provides the Steam Overlay in an (always on top) transparent window.

This brings full Steam-Input functionality to the desktop and any other application Steam-Input might not have worked before
As a result, this brings full Steam-Input functionality to the desktop and any other application Steam-Input might not have worked before.

Games do not need to be launched using GlosSI.
If the "Start Application" option does not work, launch any GlosSI-Shortcut from Steam, followed by a game or application.
However, to ease managing multiple GlosSI shortcuts, there is also a GlosSI-Config application included.
It allows one to create individual GlosSITarget configurations which can launch games for you, and easily add or remove them from Steam.

## What this is not
## What GlosSI is not

<div style="background: #5f000090; padding: 1em 0 0.5em 1em; border-radius: 2em; box-shadow: 0 8px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)!important;">

- a replacement for Steams controller configuration tool.
- a Steam remote play / steam game streaming solution. (That being said, it **can** work, but is not guaranteed to.)
- Old versions (GloSC, Global [S]team[C]ontroller) where never designed to be used with anything other than said controller, GlosSI can be used with any controller.
- a Steam remote play / steam game streaming solution. (That being said, it **can** work, but is not guaranteed to.)
The experience when doing this is most likeley miserable; Thus there is **no support for this use case**.
- Old versions (GloSC, Global [S]team[C]ontroller) were never designed to be used with anything other than said controller, GlosSI can be used with any controller.
</div>

---
## Help and Support

Join the GlosSI discord here: [https://discord.gg/T9b4D5y](https://discord.gg/T9b4D5y)
If you're looking for a tutorial on how to use GlosSI check out the [usage section](https://glossi.flatspot.pictures/#usage) on the [GlosSI website](https://glossi.flatspot.pictures/) or check the [usage.md document](./docs/Usage.md)

---

## GlosSI consists of
**Get in touch on Discord!**
Lots of kind and helpful people can be found there, happy to have a quick chat or answer support-requests
[![Discord](https://img.shields.io/discord/368823110817808384.svg)](https://discord.gg/T9b4D5y)

- The "GlosSITarget" which does most of the magic - Showing the overlay to the user as well as talking to the ViGEm-driver for system wide Controller emulation
- A config application ("GlosSIConfig") handling shortcut ("GlosSITarget") creation and their addition to Steam.

---
## Other

Like my stuff? Hit me up [on twitter](https://twitter.com/Flatspotpics) or consider donating to my [PayPal](https://www.paypal.me/Flatspotpics)

GloSC got mentioned from Valve in the [Steam client beta change log on the 9. of January](https://twitter.com/flatspotpics/status/818697837055770624)
GloSC got mentioned from Valve in the [Steam client beta change log on the 9. of January 2017](https://twitter.com/flatspotpics/status/818697837055770624)

GloSC/GlosSI is not affiliated with Valve, Steam, or any of their partners.

---

GlosSI is built using [Qt 6.2](https://www.qt.io/) and a fork of [SFML](http://www.sfml-dev.org/) for drawing the overlay
GlosSI is built using [Qt 6.X](https://www.qt.io/) and a fork of [SFML](http://www.sfml-dev.org/) for drawing the overlay

The system wide Xbox-Controller works via [ViGEm](https://vigem.org/projects/ViGEm/)
Device Hiding via [HidHide](https://vigem.org/projects/HidHide/)
Expand Down
4 changes: 0 additions & 4 deletions docs/.gitignore

This file was deleted.

1 change: 0 additions & 1 deletion docs/.ruby-version

This file was deleted.

25 changes: 15 additions & 10 deletions docs/BUILDING.md
Original file line number Diff line number Diff line change
@@ -1,35 +1,40 @@
---
---

# Building GlosSI

## Windows

Requirements:

- git
- Visual Studio 2022 (Community edition is fine)
- Qt 6.2.X (GlosSIConfig only)
- Qt Visual Studio addin (GlosSIConfig only)
- [Qt 6.X](https://www.qt.io/download-qt-installer) (GlosSIConfig only)
- [Qt Visual Studio addin](https://marketplace.visualstudio.com/items?itemName=TheQtCompany.QtVisualStudioTools2022) (GlosSIConfig only)

In a "Developer Powershell for VS 2022" run:

```powershell
git submodule init
git submodule update --recursive
.\prebuild.ps1
# Open GlosSI.sln and hit build!
Invoke-Item GlosSI.sln
```

(Note: It can be the case that the first build fails as there are versioning files created when building. Just hit build again and you should be good to go!)

In addition to the above, you will need to install the required drivers:
`ViGEmBusSetup_x64.msi` and `HidHideMSI.msi`
Both of which can be downloed from [ViGEm's website](https://vigem.org/Downloads/) or by use of the `download_release_deps.ps1` script.
`ViGEmBusSetup_x64.exe` and `HidHideMSI.exe`
Both of these can be downloaded from [ViGEm's website](https://vigem.org/Downloads/) or by use of the `download_release_deps.ps1` script.

---

## Linux

Linux support is currently not really implemented.
No guarantees that the build will even work. (It's probably broken)
That said, very limited linux support is planned for the future.
No Guarantees that the build works out!

Building should be as easy as:

**GlosSITarget:**

```shell
Expand Down
2 changes: 0 additions & 2 deletions docs/Gemfile

This file was deleted.

16 changes: 0 additions & 16 deletions docs/Overlay.md

This file was deleted.

Loading

0 comments on commit 5fceb7f

Please sign in to comment.