Browse Source

Initial Move from NP

reviewable/pr190/r1
Samuel Attard 7 years ago
parent
commit
0569c1cebe
  1. BIN
      .cert.pfx
  2. 11
      .codeclimate.yml
  3. 2
      .eslintignore
  4. 265
      .eslintrc
  5. 66
      .gitignore
  6. 19
      .travis.yml
  7. 161
      CONTRIBUTING.md
  8. 30
      Google Play Music.Bootstrapper/Bundle.wxs
  9. 77
      Google Play Music.Bootstrapper/Google Play Music.Bootstrapper.wixproj
  10. BIN
      Google Play Music.Bootstrapper/icon.png
  11. BIN
      Google Play Music.Bootstrapper/vcredist_x64.exe
  12. BIN
      Google Play Music.Bootstrapper/vcredist_x86.exe
  13. 23
      Google Play Music.Installer/Common.wxi
  14. 176
      Google Play Music.Installer/Feature.Core.wxs
  15. 105
      Google Play Music.Installer/Google Play Music.Installer.wixproj
  16. 96
      Google Play Music.Installer/Product.wxs
  17. 8
      Google Play Music.Installer/Resources/Lang/en-us/EULA_en-us.rtf
  18. 78
      Google Play Music.Installer/Resources/Lang/en-us/GPMDStrings.en-us.wxl
  19. 60
      Google Play Music.Installer/UI/GPMD_BaseUI.wxs
  20. 21
      Google Play Music.Installer/UI/GPMD_DependenciesDlg.wxs
  21. 29
      Google Play Music.Installer/UI/GPMD_ExitDlg.wxs
  22. 25
      Google Play Music.Installer/UI/GPMD_InstallDirDlg.wxs
  23. 30
      Google Play Music.Installer/UI/GPMD_LicenseAgreementDlg.wxs
  24. 8
      Google Play Music.Installer/license.rtf
  25. 85
      Google Play Music.sln
  26. 70
      Google Play Music/App.config
  27. 52
      Google Play Music/App_Build/grunt.targets
  28. 17
      Google Play Music/App_Build/node.targets
  29. 20
      Google Play Music/CEF Modules/DragHandler.cs
  30. 33
      Google Play Music/CEF Modules/MenuHandler.cs
  31. 77
      Google Play Music/CEF Modules/ResourceHandlerFactory.cs
  32. 430
      Google Play Music/ColorWheel.cs
  33. 88
      Google Play Music/CoreMusicApp.CEF.cs
  34. 57
      Google Play Music/CoreMusicApp.Designer.cs
  35. 99
      Google Play Music/CoreMusicApp.Hooks.cs
  36. 111
      Google Play Music/CoreMusicApp.States.cs
  37. 48
      Google Play Music/CoreMusicApp.UpdateChecker.cs
  38. 365
      Google Play Music/CoreMusicApp.cs
  39. 6293
      Google Play Music/CoreMusicApp.resx
  40. 380
      Google Play Music/Google Play Music.csproj
  41. BIN
      Google Play Music/Google Play Music_TemporaryKey.pfx
  42. 36
      Google Play Music/Gruntfile.js
  43. 228
      Google Play Music/JSBound.cs
  44. 189
      Google Play Music/LastFM.Intergration.cs
  45. 93
      Google Play Music/PlaybackAPI.cs
  46. 53
      Google Play Music/Program.cs
  47. 36
      Google Play Music/Properties/AssemblyInfo.cs
  48. 196
      Google Play Music/Properties/Resources.Designer.cs
  49. 160
      Google Play Music/Properties/Resources.resx
  50. 182
      Google Play Music/Properties/Settings.Designer.cs
  51. 45
      Google Play Music/Properties/Settings.settings
  52. 70
      Google Play Music/Properties/app.manifest
  53. 1
      Google Play Music/README.md
  54. BIN
      Google Play Music/Resources/Icons/Icon1.ico
  55. BIN
      Google Play Music/Resources/Icons/NextTrack.ico
  56. BIN
      Google Play Music/Resources/Icons/Pause.ico
  57. BIN
      Google Play Music/Resources/Icons/Play.ico
  58. BIN
      Google Play Music/Resources/Icons/PrevTrack.ico
  59. 92
      Google Play Music/Resources/JS/custom-interface.js
  60. BIN
      Google Play Music/Resources/Splash/Splash.png
  61. BIN
      Google Play Music/Resources/Splash/SplashDark.png
  62. BIN
      Google Play Music/Resources/pepflashplayer32_20_0_0_267.dll
  63. BIN
      Google Play Music/Resources/pepflashplayer64_20_0_0_267.dll
  64. 308
      Google Play Music/SettingsDialog.Designer.cs
  65. 255
      Google Play Music/SettingsDialog.cs
  66. 6293
      Google Play Music/SettingsDialog.resx
  67. 155
      Google Play Music/SongAlert.cs
  68. 70
      Google Play Music/SplashScreen.Designer.cs
  69. 16
      Google Play Music/SplashScreen.cs
  70. 120
      Google Play Music/SplashScreen.resx
  71. 139
      Google Play Music/UpdateDialog.cs
  72. 120
      Google Play Music/UpdateDialog.resx
  73. 135
      Google Play Music/Utilities/ColorMath.cs
  74. 49
      Google Play Music/Utilities/HslColor.cs
  75. 243
      Google Play Music/Utilities/Updater.cs
  76. 164
      Google Play Music/Utilities/Version.cs
  77. 3
      Google Play Music/grunt.cmd
  78. BIN
      Google Play Music/img/icon.ico
  79. 3
      Google Play Music/node.cmd
  80. 3
      Google Play Music/npm.cmd
  81. 26
      Google Play Music/package.json
  82. 21
      Google Play Music/packages.config
  83. 41
      Gruntfile.js
  84. 12
      Material Skin/Animations/AnimationDirection.cs
  85. 366
      Material Skin/Animations/AnimationManager.cs
  86. 53
      Material Skin/Animations/Animations.cs
  87. 349
      Material Skin/ColorScheme.cs
  88. 258
      Material Skin/Controls/MaterialCheckbox.cs
  89. 195
      Material Skin/Controls/MaterialContextMenuStrip.cs
  90. 22
      Material Skin/Controls/MaterialDivider.cs
  91. 141
      Material Skin/Controls/MaterialFlatButton.cs
  92. 653
      Material Skin/Controls/MaterialForm.cs
  93. 24
      Material Skin/Controls/MaterialLabel.cs
  94. 126
      Material Skin/Controls/MaterialListView.cs
  95. 140
      Material Skin/Controls/MaterialMenuStrip.cs
  96. 211
      Material Skin/Controls/MaterialRadioButton.cs
  97. 78
      Material Skin/Controls/MaterialRaisedButton.cs
  98. 1170
      Material Skin/Controls/MaterialSingleLineTextField.cs
  99. 22
      Material Skin/Controls/MaterialTabControl.cs
  100. 180
      Material Skin/Controls/MaterialTabSelector.cs

BIN
.cert.pfx

Binary file not shown.

11
.codeclimate.yml

@ -1,11 +0,0 @@
---
engines:
eslint:
enabled: true
fixme:
enabled: true
ratings:
paths:
- "**.js"
- "**.jsx"
exclude_paths: []

2
.eslintignore

@ -0,0 +1,2 @@
build/
node_modules/

265
.eslintrc

@ -1,251 +1,14 @@
ecmaFeatures: {}
env:
browser: true
globals:
csharpinterface: true
rules:
no-alert: 0
no-array-constructor: 0
no-bitwise: 0
no-caller: 0
no-catch-shadow: 0
no-class-assign: 0
no-cond-assign: 2
no-console: 2
no-const-assign: 0
no-constant-condition: 2
no-continue: 0
no-control-regex: 2
no-debugger: 2
no-delete-var: 2
no-div-regex: 0
no-dupe-keys: 2
no-dupe-args: 2
no-duplicate-case: 2
no-else-return: 0
no-empty: 2
no-empty-character-class: 2
no-empty-label: 0
no-eq-null: 0
no-eval: 0
no-ex-assign: 2
no-extend-native: 0
no-extra-bind: 0
no-extra-boolean-cast: 2
no-extra-parens: 0
no-extra-semi: 2
no-fallthrough: 2
no-floating-decimal: 0
no-func-assign: 2
no-implicit-coercion: 0
no-implied-eval: 0
no-inline-comments: 0
no-inner-declarations:
- 2
- functions
no-invalid-regexp: 2
no-invalid-this: 0
no-irregular-whitespace: 2
no-iterator: 0
no-label-var: 0
no-labels: 0
no-lone-blocks: 0
no-lonely-if: 0
no-loop-func: 0
no-mixed-requires:
- 0
- false
no-mixed-spaces-and-tabs:
- 2
- false
linebreak-style:
- 0
- unix
no-multi-spaces: 0
no-multi-str: 0
no-multiple-empty-lines:
- 0
- max: 2
no-native-reassign: 0
no-negated-in-lhs: 2
no-nested-ternary: 0
no-new: 0
no-new-func: 0
no-new-object: 0
no-new-require: 0
no-new-wrappers: 0
no-obj-calls: 2
no-octal: 2
no-octal-escape: 0
no-param-reassign: 0
no-path-concat: 0
no-plusplus: 0
no-process-env: 0
no-process-exit: 0
no-proto: 0
no-redeclare: 2
no-regex-spaces: 2
no-reserved-keys: 0
no-restricted-modules: 0
no-return-assign: 0
no-script-url: 0
no-self-compare: 0
no-sequences: 0
no-shadow: 0
no-shadow-restricted-names: 0
no-spaced-func: 0
no-sparse-arrays: 2
no-sync: 0
no-ternary: 0
no-trailing-spaces: 0
no-this-before-super: 0
no-throw-literal: 0
no-undef: 2
no-undef-init: 0
no-undefined: 0
no-unexpected-multiline: 0
no-underscore-dangle: 0
no-unneeded-ternary: 0
no-unreachable: 2
no-unused-expressions: 0
no-unused-vars:
- 2
- vars: all
args: after-used
no-use-before-define: 0
no-useless-call: 0
no-void: 0
no-var: 0
no-warning-comments:
- 0
- terms:
- todo
- fixme
- xxx
location: start
no-with: 0
array-bracket-spacing:
- 0
- never
arrow-parens: 0
arrow-spacing: 0
accessor-pairs: 0
block-scoped-var: 0
brace-style:
- 0
- 1tbs
callback-return: 0
camelcase: 0
comma-dangle:
- 2
- never
comma-spacing: 0
comma-style: 0
complexity:
- 2
- 11
computed-property-spacing:
- 0
- never
consistent-return: 0
consistent-this:
- 0
- that
constructor-super: 0
curly:
- 0
- all
default-case: 0
dot-location: 0
dot-notation:
- 0
- allowKeywords: true
eol-last: 0
eqeqeq: 0
func-names: 0
func-style:
- 0
- declaration
generator-star-spacing: 0
guard-for-in: 0
handle-callback-err: 0
indent: 0
init-declarations: 0
key-spacing:
- 0
- beforeColon: false
afterColon: true
lines-around-comment: 0
max-depth:
- 0
- 4
max-len:
- 0
- 80
- 4
max-nested-callbacks:
- 0
- 2
max-params:
- 0
- 3
max-statements:
- 0
- 10
new-cap: 0
new-parens: 0
newline-after-var: 0
object-curly-spacing:
- 0
- never
object-shorthand: 0
one-var: 0
operator-assignment:
- 0
- always
operator-linebreak: 0
padded-blocks: 0
prefer-const: 0
prefer-spread: 0
prefer-reflect: 0
quote-props: 0
quotes:
- 0
- double
radix: 0
require-yield: 0
semi: 0
semi-spacing:
- 0
- before: false
after: true
sort-vars: 0
space-after-keywords:
- 0
- always
space-before-blocks:
- 0
- always
space-before-function-paren:
- 0
- always
space-in-parens:
- 0
- never
space-infix-ops: 0
space-return-throw-case: 0
space-unary-ops:
- 0
- words: true
nonwords: false
spaced-comment: 0
strict: 0
use-isnan: 2
valid-jsdoc: 0
valid-typeof: 2
vars-on-top: 0
wrap-iife: 0
wrap-regex: 0
yoda:
- 0
- never
{
"extends": "airbnb/base",
"globals": {
"Logger": true,
"Settings": true,
"Emitter": true,
"WindowManager": true,
"GPM": true,
"$": true
},
"env": {
"mocha": true
}
}

66
.gitignore

@ -1,62 +1,4 @@
#OS junk files
[Tt]humbs.db
*.DS_Store
#Visual Studio files
*.[Oo]bj
*.user
*.aps
*.pch
*.vspscc
*.vssscc
*_i.c
*_p.c
*.ncb
*.suo
*.tlb
*.tlh
*.bak
*.[Cc]ache
*.ilk
*.log
*.lib
*.sbr
*.sdf
*.opensdf
*.unsuccessfulbuild
ipch/
obj/
Google Play Music/bin/
[Dd]ebug*/
[Rr]elease*/
Ankh.NoLoad
#MonoDevelop
*.pidb
*.userprefs
#Tooling
_ReSharper*/
*.resharper
[Tt]est[Rr]esult*
#Project files
[Bb]uild/
#Subversion files
.svn
# Office Temp Files
~$*
#NuGet
packages/
#ncrunch
*ncrunch*
*crunch*.local.xml
.vs/
Google Play Music/node_modules/
Google Play Music/Resources/JS/gmusic.min.js
Google Play Music/Resources/JS/gmusic-theme.min.js
Google Play Music/Resources/JS/gmusic-mini-player.min.js
node_modules/
build/
dist/
.settings.json

19
.travis.yml

@ -0,0 +1,19 @@
os:
- osx
cache:
directories:
- node_modules
- $HOME/.electron
install:
- curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.30.1/install.sh | bash
- source ~/.bashrc
- nvm install 4.2.2
- nvm use 4.2.2
- npm install
script:
- npm run test
- npm run package:darwin
- npm run release:darwin

161
CONTRIBUTING.md

@ -1,161 +0,0 @@
# Contributing to Google Play Music Desktop Player
♥ Google Play Music Desktop Player](https://github.com/MarshallOfSound/Google-Play-Music-Desktop-Player-UNOFFICIAL-) and want to get involved?
Thanks! There are plenty of ways you can help!
Please take a moment to review this document in order to make the contribution
process easy and effective for everyone involved.
Following these guidelines helps to communicate that you respect the time of
the developers managing and developing this open source project. In return,
they should reciprocate that respect in addressing your issue or assessing
patches and features.
## Using the issue tracker
The [issue tracker](https://github.com/MarshallOfSound/Google-Play-Music-Desktop-Player-UNOFFICIAL-/issues) is
the preferred channel for [bug reports](#bugs), [features requests](#features)
and [submitting pull requests](#pull-requests), but please respect the following
restrictions:
* Please **do not** use the issue tracker for personal support requests (use
[Gitter](https://gitter.im/MarshallOfSound/Google-Play-Music-Desktop-Player-UNOFFICIAL-)).
* Please **do not** derail or troll issues. Keep the discussion on topic and
respect the opinions of others.
<a name="bugs"></a>
## Bug reports
A bug is a _demonstrable problem_ that is caused by the code in the repository.
Good bug reports are extremely helpful - thank you!
Guidelines for bug reports:
1. **Use the GitHub issue search** &mdash; check if the issue has already been
reported
2. **Check if the issue has been fixed** &mdash; try to reproduce it using the
latest commits on `master` in the repository.
3. **Isolate the problem** &mdash; try determine the cause or probable cause
of the bug and maybe even include a reference to a line in the code.
A good bug report shouldn't leave others needing to chase you up for more
information. Please try to be as detailed as possible in your report. What is
your environment? What steps will reproduce the issue? What browser(s) and OS
experience the problem? What would you expect to be the outcome? All these
details will help people to fix any potential bugs.
You should always include your system information in a bug report so developers
can easily reproduce the bug in a similar environment
Example:
> Short and descriptive example bug report title
>
> OS: [Your OS here]
> Application Version: [The version of GPMDP you are running]
>
> A summary of the issue. If
> suitable, include the steps required to reproduce the bug.
>
> 1. This is the first step
> 2. This is the second step
> 3. Further steps, etc.
>
> Any other information you want to share that is relevant to the issue being
> reported. This might include the lines of code that you have identified as
> causing the bug, and potential solutions (and your opinions on their
> merits).
<a name="features"></a>
## Feature requests
Feature requests are welcome. But take a moment to find out whether your idea
fits with the scope and aims of the project. It's up to *you* to make a strong
case to convince the project's developers of the merits of this feature. Please
provide as much detail and context as possible.
Any Feature Request for "Chromecast Integration" will be immediately closed as
a duplicate unless it brings something new to the discussion such as a code
example or theory of how to implement such a feature. This does not mean
Chromecast Integeration won't happen, but for now it is too complex for me to
handle.
<a name="pull-requests"></a>
## Pull requests
Good pull requests - patches, improvements, new features - are a fantastic
help. They should remain focused in scope and avoid containing unrelated
commits.
**Please ask first** before embarking on any significant pull request (e.g.
implementing features, refactoring code, porting to a different language),
otherwise you risk spending a lot of time working on something that the
project's developers might not want to merge into the project.
Please adhere to the coding conventions used throughout a project (indentation,
accurate comments, etc.) and any other requirements (such as test coverage).
Adhering to the following process is the best way to get your work
included in the project:
1. [Fork](https://help.github.com/articles/fork-a-repo/) the project, clone your
fork, and configure the remotes:
```bash
# Clone your fork of the repo into the current directory
git clone https://github.com/<your-username>/Google-Play-Music-Desktop-Player-UNOFFICIAL-.git
# Navigate to the newly cloned directory
cd Google-Play-Music-Desktop-Player-UNOFFICIAL-
# Assign the original repo to a remote called "upstream"
git remote add upstream https://github.com/MarshallOfSound/Google-Play-Music-Desktop-Player-UNOFFICIAL-.git
```
2. If you cloned a while ago, get the latest changes from upstream:
```bash
git checkout master
git pull upstream master
```
3. Create a new topic branch (off the main project development branch) to
contain your feature, change, or fix:
This branch should be in the style
* `feature/feature-info`
* `bugfix/bugfix-info`
* `dev/generic-info`
* `upgrade/[dependency]-upgrade-[version]` *only use this when upgrading a major internal dependency such as CEF*
```bash
git checkout -b <branch-name>
```
4. Commit your changes in logical chunks. If you are making a single feature or single bugfix there should only be
one commit in the PR, if your commit has to include multiple features then you can have one commit per feature.
Before making a PR please squash your commits into these logical chunks
5. Locally rebase the upstream development branch into your topic branch:
**merging upstream master into your branch will be rejected**
```bash
git pull [--rebase] upstream master
```
6. Push your topic branch up to your fork:
```bash
git push origin <topic-branch-name>
```
7. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/)
with a clear title and description. Pull Requests are reviewed on [http://reviewable.io](http://reviewable.io)
**IMPORTANT**: By submitting a patch, you agree to allow the project
owners to license your work under the terms of the [MIT License](LICENSE.txt).

30
Google Play Music.Bootstrapper/Bundle.wxs

@ -1,30 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
<Bundle Name="Google Play Music Desktop Player" Version="2.1.1" Manufacturer="MarshallOfSound"
UpgradeCode="cd40bffe-ea0f-4e9b-aeaf-2416f44ad40f" Compressed="yes" DisableModify="yes"
IconSourceFile="..\Google Play Music\Resources\Icons\Icon1.ico"
HelpUrl="https://github.com/MarshallOfSound/Google-Play-Music-Desktop-Player-UNOFFICIAL-/issues" DisableRepair="yes">
<OptionalUpdateRegistration />
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense">
<bal:WixStandardBootstrapperApplication LicenseUrl="" SuppressOptionsUI="yes" ShowVersion="yes"
LogoFile="icon.png" SuppressRepair="yes" />
</BootstrapperApplicationRef>
<Chain>
<PackageGroupRef Id="NetFx40Web"/>
<RollbackBoundary />
<?if $(var.Platform)=x86 ?>
<ExePackage SourceFile="vcredist_x86.exe" InstallCommand="/install /quiet" RepairCommand="/repair /quiet" UninstallCommand="/uninstall /quiet" Compressed="yes" />
<?endif?>
<?if $(var.Platform)=x64 ?>
<ExePackage SourceFile="vcredist_x64.exe" InstallCommand="/install /quiet" RepairCommand="/repair /quiet" UninstallCommand="/uninstall /quiet" Compressed="yes" />
<?endif?>
<RollbackBoundary />
<MsiPackage Id="CoreApplication" SourceFile="$(var.Google Play Music.Installer.TargetPath)" DisplayInternalUI="yes" Compressed="yes" />
</Chain>
</Bundle>
</Wix>

77
Google Play Music.Bootstrapper/Google Play Music.Bootstrapper.wixproj

@ -1,77 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProductVersion>3.10</ProductVersion>
<ProjectGuid>cd40bffe-ea0f-4e9b-aeaf-2416f44ad40f</ProjectGuid>
<SchemaVersion>2.0</SchemaVersion>
<OutputName>Google Play Music Desktop Player $(Platform)</OutputName>
<OutputType>Bundle</OutputType>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
<SignOutput>true</SignOutput>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<OutputPath>bin\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
<DefineConstants>Debug</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
<DefineConstants>Debug</DefineConstants>
<OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Platform)\$(Configuration)\</IntermediateOutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
<OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Platform)\$(Configuration)\</IntermediateOutputPath>
</PropertyGroup>
<ItemGroup>
<Compile Include="Bundle.wxs" />
</ItemGroup>
<ItemGroup>
<WixExtension Include="WixNetFxExtension">
<HintPath>$(WixExtDir)\WixNetFxExtension.dll</HintPath>
<Name>WixNetFxExtension</Name>
</WixExtension>
<WixExtension Include="WixBalExtension">
<HintPath>$(WixExtDir)\WixBalExtension.dll</HintPath>
<Name>WixBalExtension</Name>
</WixExtension>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Google Play Music.Installer\Google Play Music.Installer.wixproj">
<Name>Google Play Music.Installer</Name>
<Project>{84b8a8ad-df49-4ded-a3a3-0bed80054d6e}</Project>
<Private>True</Private>
<DoNotHarvest>True</DoNotHarvest>
<RefProjectOutputGroups>Binaries;Content;Satellites</RefProjectOutputGroups>
<RefTargetDir>INSTALLFOLDER</RefTargetDir>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Content Include="info.rtf" />
</ItemGroup>
<Import Project="$(WixTargetsPath)" />
<!--
To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Wix.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
<Target Name="SignBundleEngine">
<Exec Command="Signtool.exe sign /a /t http://timestamp.verisign.com/scripts/timstamp.dll &quot;@(SignBundleEngine)&quot;" IgnoreExitCode="true" />
</Target>
<Target Name="SignBundle">
<Exec Command="Signtool.exe sign /a /t http://timestamp.verisign.com/scripts/timstamp.dll &quot;@(SignBundle)&quot;" IgnoreExitCode="true" />
</Target>
<Target Name="AfterBuild">
<Exec Command="Signtool.exe sign /a /t http://timestamp.verisign.com/scripts/timstamp.dll &quot;$(ProjectDir)bin\$(Platform)\$(Configuration)\$(TargetFileName)&quot;" IgnoreExitCode="true" />
</Target>
</Project>

BIN
Google Play Music.Bootstrapper/icon.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

BIN
Google Play Music.Bootstrapper/vcredist_x64.exe

Binary file not shown.

BIN
Google Play Music.Bootstrapper/vcredist_x86.exe

Binary file not shown.

23
Google Play Music.Installer/Common.wxi

@ -1,23 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Include>
<?define SourcePathx86="..\Google Play Music\bin\x86\Release"?>
<?define SourcePathx64="..\Google Play Music\bin\x64\Release"?>
<?if $(var.Platform)=x86 ?>
<?define Is64=no ?>
<?define SourcePath=$(var.SourcePathx86)?>
<?define InstallDirectory=INSTALLFOLDER?>
<?define Suffix ?>
<?define GuidSuffix=A?>
<?define locales=locales?>
<?define resources=resources?>
<?else?>
<?define Is64=yes ?>
<?define SourcePath=$(var.SourcePathx64)?>
<?define InstallDirectory=INSTALLFOLDER_X64?>
<?define locales=locales_X64?>
<?define resources=resources_X64?>
<?define Suffix=_X64 ?>
<?define GuidSuffix=B?>
<?endif?>
</Include>

176
Google Play Music.Installer/Feature.Core.wxs

@ -1,176 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Fragment>
<?include Common.wxi ?>
<ComponentGroup Id="Google_Play_Music_Core" Directory="$(var.InstallDirectory)" >
<Component Guid="{B1BA5B97-6759-46B3-92A5-B457B2593C62}" Id="Google_Play_Music">
<File Id="mainapp.exe" KeyPath="yes" Source="$(var.SourcePath)\$(var.Google Play Music.TargetFileName)" />
<File Source="$(var.SourcePath)\Google Play Music.exe.config" />
<RemoveFolder Id='RemoveProgramMenuDir' Directory='Google_Play_Music' On='uninstall' />
<util:RemoveFolderEx On="both" Property="INSTALLFOLDER" />
</Component>
<Component Guid="{28C8EB78-B96F-4C60-84C9-F6D14A5EEF93}" Id="MaterialSkin">
<File KeyPath="yes" Source="$(var.SourcePath)\$(var.MaterialSkin.TargetFileName)" />
</Component>
<ComponentRef Id="ApplicationShortcut"/>
<ComponentRef Id="RemoveOldStartShortcutComponent"/>
</ComponentGroup>
<DirectoryRef Id="Google_Play_Music">
<Component Id="ApplicationShortcut" Guid="{AB0DD132-6F84-4FC0-9D41-90BAD7A414C5}">
<Shortcut Id="ApplicationStartMenuShortcut"
Name="Google Play Music Desktop Player"
Description="Google Play Music Desktop Player"
Target="[#mainapp.exe]"
WorkingDirectory="$(var.InstallDirectory)"/>
<RegistryValue Root="HKCU" Key="Software\Microsoft\GPMDP" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
</Component>
</DirectoryRef>
<DirectoryRef Id="StartMenuAppData">
<Component Id="RemoveOldStartShortcutComponent" Guid="{2E0F60E9-2AA2-4EFD-BBAE-39ABECC993FD}">
<RemoveFolder Id="RemoveMicrosoftAppData" Directory="MicrosoftAppData" On="both" />
<RemoveFolder Id="RemoveStartMenuAppData" Directory="StartMenuAppData" On="both" />
<RemoveFolder Id="RemoveWindowsAppData" Directory="WindowsAppData" On="both" />
<RemoveFile Id='RemoveOldStartShortcut' On='both' Name='*Google Play Music*' />
<RegistryValue Root="HKCU" Key="Software\Microsoft\GPMDP" Name="oldstart" Type="integer" Value="1" KeyPath="yes"/>
</Component>
</DirectoryRef>
<ComponentGroup Id="Locales" Directory="$(var.locales)">
<Component Guid="{0F8F4110-BEC1-49EE-92F2-E7E58EA162AA}" Id="PAKs">
<File KeyPath="yes" Source="$(var.SourcePath)\locales\am.pak" />
<File Source="$(var.SourcePath)\locales\ar.pak" />
<File Source="$(var.SourcePath)\locales\bg.pak" />
<File Source="$(var.SourcePath)\locales\bn.pak" />
<File Source="$(var.SourcePath)\locales\ca.pak" />
<File Source="$(var.SourcePath)\locales\cs.pak" />
<File Source="$(var.SourcePath)\locales\da.pak" />
<File Source="$(var.SourcePath)\locales\de.pak" />
<File Source="$(var.SourcePath)\locales\el.pak" />
<File Source="$(var.SourcePath)\locales\en-GB.pak" />
<File Source="$(var.SourcePath)\locales\en-US.pak" />
<File Source="$(var.SourcePath)\locales\es.pak" />
<File Source="$(var.SourcePath)\locales\es-419.pak" />
<File Source="$(var.SourcePath)\locales\et.pak" />
<File Source="$(var.SourcePath)\locales\fa.pak" />
<File Source="$(var.SourcePath)\locales\fi.pak" />
<File Source="$(var.SourcePath)\locales\fil.pak" />
<File Source="$(var.SourcePath)\locales\fr.pak" />
<File Source="$(var.SourcePath)\locales\gu.pak" />
<File Source="$(var.SourcePath)\locales\he.pak" />
<File Source="$(var.SourcePath)\locales\hi.pak" />
<File Source="$(var.SourcePath)\locales\hr.pak" />
<File Source="$(var.SourcePath)\locales\hu.pak" />
<File Source="$(var.SourcePath)\locales\id.pak" />
<File Source="$(var.SourcePath)\locales\it.pak" />
<File Source="$(var.SourcePath)\locales\ja.pak" />
<File Source="$(var.SourcePath)\locales\kn.pak" />
<File Source="$(var.SourcePath)\locales\ko.pak" />
<File Source="$(var.SourcePath)\locales\lt.pak" />
<File Source="$(var.SourcePath)\locales\lv.pak" />
<File Source="$(var.SourcePath)\locales\ml.pak" />
<File Source="$(var.SourcePath)\locales\mr.pak" />
<File Source="$(var.SourcePath)\locales\ms.pak" />
<File Source="$(var.SourcePath)\locales\nb.pak" />
<File Source="$(var.SourcePath)\locales\nl.pak" />
<File Source="$(var.SourcePath)\locales\pl.pak" />
<File Source="$(var.SourcePath)\locales\pt-BR.pak" />
<File Source="$(var.SourcePath)\locales\pt-PT.pak" />
<File Source="$(var.SourcePath)\locales\ro.pak" />
<File Source="$(var.SourcePath)\locales\ru.pak" />
<File Source="$(var.SourcePath)\locales\sk.pak" />
<File Source="$(var.SourcePath)\locales\sl.pak" />
<File Source="$(var.SourcePath)\locales\sr.pak" />
<File Source="$(var.SourcePath)\locales\sv.pak" />
<File Source="$(var.SourcePath)\locales\sw.pak" />
<File Source="$(var.SourcePath)\locales\ta.pak" />
<File Source="$(var.SourcePath)\locales\te.pak" />
<File Source="$(var.SourcePath)\locales\th.pak" />
<File Source="$(var.SourcePath)\locales\tr.pak" />
<File Source="$(var.SourcePath)\locales\uk.pak" />
<File Source="$(var.SourcePath)\locales\vi.pak" />
<File Source="$(var.SourcePath)\locales\zh-CN.pak" />
<File Source="$(var.SourcePath)\locales\zh-TW.pak" />
</Component>
</ComponentGroup>
<ComponentGroup Id="Resources" Directory="$(var.resources)">
<Component Id="FlashDLL" Guid="{69C124BF-B9BD-404C-BACF-CEFC7665A02B}">
<?if $(var.Platform)=x86 ?>
<File KeyPath="yes" Source="$(var.SourcePath)\Resources\pepflashplayer32_20_0_0_267.dll" Compressed="yes" />
<?endif?>
<?if $(var.Platform)=x64 ?>
<File KeyPath="yes" Source="$(var.SourcePath)\Resources\pepflashplayer64_20_0_0_267.dll" Compressed="yes" />
<?endif?>
</Component>
</ComponentGroup>
<ComponentGroup Id="Dependencies" Directory="$(var.InstallDirectory)">
<Component Guid="{719FFB2C-14DD-464C-A88A-0615EFF75DAE}" Id="CefSharp_Common">
<File KeyPath="yes" Source="$(var.SourcePath)\CefSharp.dll" />
<File Source="$(var.SourcePath)\CefSharp.BrowserSubprocess.exe" />
<File Source="$(var.SourcePath)\CefSharp.BrowserSubprocess.Core.dll" />
<File Source="$(var.SourcePath)\CefSharp.Core.dll" />
<File Source="$(var.SourcePath)\cef.pak" />
<File Source="$(var.SourcePath)\cef_100_percent.pak" />
<File Source="$(var.SourcePath)\cef_200_percent.pak" />
<File Source="$(var.SourcePath)\devtools_resources.pak" />
</Component>
<Component Guid="{77978B45-6D82-4FED-826E-DAAE60529961}" Id="CefSharp_WinForms">
<File Source="$(var.SourcePath)\CefSharp.WinForms.dll" />
</Component>
<Component Guid="{CB384CD3-7925-443D-A8C0-28A76C9BDFF3}" Id="CefSharp_Redist">
<File KeyPath="yes" Source="$(var.SourcePath)\libcef.dll" />
<File Source="$(var.SourcePath)\d3dcompiler_43.dll" />
<File Source="$(var.SourcePath)\d3dcompiler_47.dll" />
<File Source="$(var.SourcePath)\libEGL.dll" />
<File Source="$(var.SourcePath)\libGLESv2.dll" />
<File Source="$(var.SourcePath)\icudtl.dat" />
<File Source="$(var.SourcePath)\snapshot_blob.bin" />
<File Source="$(var.SourcePath)\natives_blob.bin" />
</Component>
<Component Guid="{808D3DFA-17A4-451B-9518-8A33EC5FD112}" Id="Microsoft_Bcl_Async">
<File KeyPath="yes" Source="$(var.SourcePath)\Microsoft.Threading.Tasks.dll" />
<File Source="$(var.SourcePath)\Microsoft.Threading.Tasks.Extensions.dll" />
<File Source="$(var.SourcePath)\Microsoft.Threading.Tasks.Extensions.Desktop.dll" />
</Component>
<Component Guid="{82710EA7-7C15-4965-A584-3C909B4F00C0}" Id="Microsoft_Bcl_Build">
<File KeyPath="yes" Source="$(var.SourcePath)\System.Net.Http.WebRequest.dll" />
</Component>
<Component Guid="{A318807A-5B70-4D22-94EF-DA13CB9120C5}" Id="Microsoft_Net_Http">
<File KeyPath="yes" Source="$(var.SourcePath)\System.Net.Http.dll" />
<File Source="$(var.SourcePath)\System.Net.Http.Extensions.dll" />
<File Source="$(var.SourcePath)\System.Net.Http.Primitives.dll" />
</Component>
<Component Guid="{0A73F70F-BBFE-43CB-8B2D-439AF31B6982}" Id="Microsoft_Bcl">
<File KeyPath="yes" Source="$(var.SourcePath)\System.IO.dll" />
<File Source="$(var.SourcePath)\System.Runtime.dll" />
<File Source="$(var.SourcePath)\System.Threading.Tasks.dll" />
</Component>
<Component Guid="{9271D975-8BBF-4FC4-98EA-08D4563EBFA3}" Id="Microsoft_WindowsAPICodePack_Core">
<File KeyPath="yes" Source="$(var.SourcePath)\Microsoft.WindowsAPICodePack.dll" />
</Component>
<Component Guid="{5E264A8C-3BFD-4D8D-9977-EF956250AFCE}" Id="Microsoft_WindowsAPICodePack_Shell">
<File KeyPath="yes" Source="$(var.SourcePath)\Microsoft.WindowsAPICodePack.Shell.dll" />
<File Source="$(var.SourcePath)\Microsoft.WindowsAPICodePack.ShellExtensions.dll" />
</Component>
<Component Guid="{440038CB-9B4B-4A35-8B76-4F255821A1A9}" Id="GMA_System_MouseKeyHook">
<File KeyPath="yes" Source="$(var.SourcePath)\Gma.System.MouseKeyHook.dll" />
</Component>
</ComponentGroup>
</Fragment>
</Wix>

105
Google Play Music.Installer/Google Play Music.Installer.wixproj

@ -1,105 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProductVersion>3.9</ProductVersion>
<ProjectGuid>84b8a8ad-df49-4ded-a3a3-0bed80054d6e</ProjectGuid>
<SchemaVersion>2.0</SchemaVersion>
<OutputName>Google Play Music Desktop Player</OutputName>
<OutputType>Package</OutputType>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
<SignOutput>true</SignOutput>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<OutputPath>bin\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
<DefineConstants>Debug</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
<DefineConstants>Debug</DefineConstants>
<OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Platform)\$(Configuration)\</IntermediateOutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
<OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Platform)\$(Configuration)\</IntermediateOutputPath>
</PropertyGroup>
<ItemGroup>
<Compile Include="Feature.Core.wxs" />
<Compile Include="Product.wxs" />
<Compile Include="UI\GPMD_DependenciesDlg.wxs" />
<Compile Include="UI\GPMD_ExitDlg.wxs" />
<Compile Include="UI\GPMD_InstallDirDlg.wxs" />
<Compile Include="UI\GPMD_BaseUI.wxs" />
<Compile Include="UI\GPMD_LicenseAgreementDlg.wxs" />
</ItemGroup>
<ItemGroup>
<Content Include="Common.wxi" />
<Content Include="Resources\Lang\en-us\EULA_en-us.rtf" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Google Play Music\Google Play Music.csproj">
<Name>Google Play Music</Name>
<Project>{b2c52d42-4eee-445c-ad6d-357d93397937}</Project>
<Private>True</Private>
<DoNotHarvest>True</DoNotHarvest>
<RefProjectOutputGroups>Binaries;Content;Satellites</RefProjectOutputGroups>
<RefTargetDir>INSTALLFOLDER</RefTargetDir>
</ProjectReference>
<ProjectReference Include="..\Material Skin\MaterialSkin.csproj">
<Name>MaterialSkin</Name>
<Project>{8eb7611b-68cd-4b8b-987a-11717e2b250c}</Project>
<Private>True</Private>
<DoNotHarvest>True</DoNotHarvest>
<RefProjectOutputGroups>Binaries;Content;Satellites</RefProjectOutputGroups>
<RefTargetDir>INSTALLFOLDER</RefTargetDir>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<WixExtension Include="WixUtilExtension">
<HintPath>$(WixExtDir)\WixUtilExtension.dll</HintPath>
<Name>WixUtilExtension</Name>
</WixExtension>
<WixExtension Include="WixUIExtension">
<HintPath>$(WixExtDir)\WixUIExtension.dll</HintPath>
<Name>WixUIExtension</Name>
</WixExtension>
<WixExtension Include="WixNetFxExtension">
<HintPath>$(WixExtDir)\WixNetFxExtension.dll</HintPath>
<Name>WixNetFxExtension</Name>
</WixExtension>
</ItemGroup>
<ItemGroup>
<Folder Include="Resources" />
<Folder Include="Resources\Lang" />
<Folder Include="Resources\Lang\en-us" />
<Folder Include="UI" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Resources\Lang\en-us\GPMDStrings.en-us.wxl" />
</ItemGroup>
<Import Project="$(WixTargetsPath)" />
<PropertyGroup>
<PostBuildEvent />
</PropertyGroup>
<!--
To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Wix.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
<Target Name="SignCabs">
<Exec Command="Signtool.exe sign /a /t http://timestamp.verisign.com/scripts/timstamp.dll &quot;%(SignCabs.FullPath)&quot;" IgnoreExitCode="true" />
</Target>
<Target Name="SignMsi">
<Exec Command="signtool.exe sign /a /t http://timestamp.verisign.com/scripts/timstamp.dll &quot;%(SignMsi.FullPath)&quot;" IgnoreExitCode="true" />
</Target>
</Project>

96
Google Play Music.Installer/Product.wxs

@ -1,96 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<?include Common.wxi ?>
<Product Id="*"
Name="Google Play Music Desktop Player"
Language="1033"
Version="2.1.1"
Manufacturer="MarshallOfSound"
UpgradeCode="2f8492cc-221c-4815-8e50-891e43989b7f" >
<Package Id="*"
InstallerVersion="500"
Compressed="yes"
InstallScope="perMachine"
Platform="$(var.Platform)"
AdminImage="yes" />
<MediaTemplate EmbedCab="yes" CompressionLevel="mszip" />
<MajorUpgrade
Schedule="afterInstallInitialize" AllowDowngrades="no"
DowngradeErrorMessage="A later version of [ProductName] is already installed. Setup will now exit." />
<!-- ====== Product Prerequisites ====== -->
<!-- Required on both 32 and 64 bit machines -->
<PropertyRef Id="WIX_IS_NETFRAMEWORK_40_OR_LATER_INSTALLED"/>
<Property Id="VC2012X64">
<RegistrySearch Id="VC2012x64Key" Key="SOFTWARE\Classes\Installer\Dependencies\{ca67548a-5ebe-413a-b50c-4b9ceb6d66c6}" Name="Installed" Root="HKLM" Type="raw" Win64="no" />
</Property>
<Property Id="VC2012X86">
<RegistrySearch Id="VC2012x86Key" Key="SOFTWARE\Classes\Installer\Dependencies\{33d1fd90-4274-48a1-9bc1-97e33d9c2d6f}" Name="Installed" Root="HKLM" Type="raw" Win64="no" />
</Property>
<!-- This property sets the app icon for Add/Remove Programs -->
<Property Id="ARPPRODUCTICON" Value="AppIcon" />
<Icon Id="AppIcon" SourceFile="..\Google Play Music\Resources\Icons\Icon1.ico"/>
<!--If setup is built using x86 then it will not installed on x64-->
<?if $(var.Platform)=x64 ?>
<Condition Message="Setup can not be installed on x64 machine.">
<![CDATA[Installed OR VersionNT64]]>
</Condition>
<?endif?>
<!-- Google Play Music Solution Features -->
<Feature Id="Core" Title="Google Play Music">
<ComponentGroupRef Id="Google_Play_Music_Core"/>
<ComponentGroupRef Id="Locales"/>
<ComponentGroupRef Id="Dependencies"/>
<ComponentGroupRef Id="Resources"/>
</Feature>
<UI>
<UIRef Id="GPMD_BaseUI"/>
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLFOLDER$(var.Suffix)" />
</UI>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<!-- 32 bit directory -->
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="GPMDP">
<Directory Id="locales" Name="locales" />
<Directory Id="resources" Name="Resources" />
</Directory>
</Directory>
<!-- 64 bit directory -->
<Directory Id="ProgramFiles64Folder">
<Directory Id="INSTALLFOLDER_X64" Name="GPMDP">
<Directory Id="locales_X64" Name="locales" />
<Directory Id="resources_X64" Name="Resources" />
</Directory>
</Directory>
<!-- Start Menu Folder -->
<Directory Id="ProgramMenuFolder">
<Directory Id="Google_Play_Music" Name="Google Play Music Desktop Player">
</Directory>
</Directory>
<!-- Old start menu shortcut folder -->
<Directory Id="AppDataFolder">
<Directory Id="MicrosoftAppData" Name="Microsoft">
<Directory Id="WindowsAppData" Name="Windows">
<Directory Id="StartMenuAppData" Name="Start Menu">
</Directory>
</Directory>
</Directory>
</Directory>
</Directory>
</Fragment>
</Wix>

8
Google Play Music.Installer/Resources/Lang/en-us/EULA_en-us.rtf

@ -1,8 +0,0 @@
{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033{\fonttbl{\f0\fnil\fcharset0 Calibri;}}
{\*\generator Riched20 10.0.10240}\viewkind4\uc1
\pard\sa200\sl276\slmult1\f0\fs22\lang9 The MIT License (MIT)\par
Copyright (c) 2015 Samuel Attard\par
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\par
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\par
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\par
}

78
Google Play Music.Installer/Resources/Lang/en-us/GPMDStrings.en-us.wxl

@ -1,78 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<WixLocalization Culture="en-us" xmlns="http://schemas.microsoft.com/wix/2006/localization">
<String Id="btnNext">Next</String>
<String Id="btnBack">Back</String>
<String Id="btnCancel">Cancel</String>
<String Id="DlgTitle">[ProductName]</String>
<String Id="WelcomeDlgTitle">Welcome to the Windows Installer Setup for [ProductName]</String>
<String Id="WelcomeDescription">The Windows Installer Setup will install [ProductName] on your computer. To continue, click Next.</String>
<String Id="LicenseAgg">End User License Agreement</String>
<String Id="LicenseAgg1">Please read the following License agreement carefully</String>
<String Id="LicenseRtf" Overridable="yes">Resources\Lang\en-us\EULA_en-us.rtf</String>
<String Id="DesFolder">Destination Folder</String>
<String Id="ClickNext">Click Next to install to the default folder or click Change to choose another.</String>
<String Id="CompleteMsg">Windows Installer Setup Completed</String>
<String Id="CompltedWizard">Windows Installer Setup has successfully installed [ProductName]. Click finish to exit the Setup.</String>
<String Id="ReadyToInstall">Ready To Install [ProductName]</String>
<String Id="Interuppted">[ProductName] Setup was interrupted</String>
<String Id="InterupptedDes">[ProductName] Setup was interrupted. Your System has not been modified. To install this program at a later time, please run the installation again. Click the finish button to exit Setup.</String>
<String Id="MaintenanceWelcomeDlgDescription">The Setup Wizard allows you to change the way [ProductName] features are installed on your computer or to remove it from your computer. Click Next to continue or Cancel to exit the Setup Wizard.</String>
<String Id="ErrTitle">Error</String>
<String Id="InfoTitle">Information</String>
<String Id="MaintenanceWelcomeDlgTitle">Welcome to the [ProductName] Wizard.</String>
<String Id="VerifyReadyDlgInstallText">Click Install to begin the installation. Click Back to review or change any of your installation settings. Click Cancel to exit the Wizard.</String>
<String Id="ProgressDlgTitle">Installing [ProductName]</String>
<String Id="ProgressDlgTitleRepairing">Repairing [ProductName] Wizard</String>
<String Id="ProgressDlgTitleChanging">Changing Settings of [ProductName]</String>
<String Id="DependencyDlgTitle">This program requires these following dependencies to install.</String>
<String Id="ExitDialogTitle">Completed the [ProductName] Wizard</String>
<String Id="VerifyReadyDlgRemoveTitle">Ready to Remove [ProductName]</String>
<String Id="VerifyReadyDlgRepairTitle">Ready to Repair [ProductName]</String>
<String Id="MaintenanceTypeDlgTitle">Change, Repair, or Remove [ProductName]</String>
<String Id="NetFrameworkPrereq">This application requires .NET Framework 4.0. Please install the .NET Framework 4.0, then run this installer again.</String>
<String Id="VCRuntimePrereqx86">This setup requires the 2012 Visual C++ Runtime (32-bit) to be installed. Please install the 2013 Visual C++ Runtime (32-bit), then run this installer again.</String>
<String Id="VCRuntimePrereqx64">This setup requires the 2012 Visual C++ Runtime (64-bit) to be installed. Please install the 2013 Visual C++ Runtime (64-bit), then run this installer again.</String>
<String Id="ProgressDlgTitleUpdating">Updating [ProductName] Wizard</String>
<String Id="ProgressDlgTitleRemoving">Removing [ProductName] Wizard</String>
<String Id="DiskCostDlgTitle">Disk Space Requirements</String>
<String Id="FilesInUseTitle">Files in Use</String>
<String Id="MsiRMFilesInUseTitle">Files in Use</String>
<String Id="OutOfDiskDlgTitle">Out of Disk Space</String>
<String Id="OutOfRbDiskDlgTitle">Out of Disk Space</String>
<String Id="PrepareDlgTitle">Welcome to the [ProductName] Wizard</String>
<String Id="ResumeDlgTitle">Resuming the [ProductName] Wizard</String>
<String Id="VerifyReadyDlgUpdateTitle">Ready to update [ProductName]</String>
<String Id="VerifyReadyDlgChangeTitle">Ready to change [ProductName]</String>
<String Id="VerifyReadyDlgUpdateText">Click Update to begin the update process. Click Back to review or change any of your installation settings. Click Cancel to exit the Wizard.</String>
<String Id="OutOfDiskDlgDescription" Overridable="yes">Disk space required for the installation exceeds available disk space.</String>
<String Id="OutOfDiskDlgText" Overridable="yes">The highlighted volumes do not have enough disk space available for the currently selected features. You can remove some files from the highlighted volumes, install fewer features, or select a different destination drive.</String>
<String Id="OutOfRbDiskDlgText2" Overridable="yes">Alternatively, you may choose to disable the installer's rollback functionality. Disabling rollback prevents the installer from restoring your computer's original state should the installation be interrupted in any way. Click Yes if you wish to take the risk of disabling rollback. </String>
<String Id="OutOfRbDiskDlgText" Overridable="yes">
The highlighted volumes do not have enough disk space available for the currently selected features. You can remove some files from the highlighted volumes, install fewer features, or select a different destination drive.
</String>
<String Id="OutOfRbDiskDlgDescription" Overridable="yes">
Disk space required for the installation exceeds available disk space.
</String>
<String Id="DiskCostDlgText" Overridable="yes">
Highlighted volumes do not have enough disk space available for selected features. You can either remove some files from the highlighted volumes, install fewer features, or select different destination drives.
</String>
<String Id="DiskCostDlgDescription" Overridable="yes">
The disk space required for the installation of the selected features.
</String>
<String Id="WaitForCostingDlgText" Overridable="yes">
Please wait while the installer finishes determining your disk space requirements.
</String>
</WixLocalization>

60
Google Play Music.Installer/UI/GPMD_BaseUI.wxs

@ -1,60 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<UI Id="GPMD_BaseUI">
<TextStyle Id="WixUI_Font_Normal" FaceName="Tahoma" Size="8" />
<TextStyle Id="WixUI_Font_Bigger" FaceName="Tahoma" Size="12" />
<TextStyle Id="WixUI_Font_Title" FaceName="Tahoma" Size="9" Bold="yes" />
<TextStyle Id="TitleFont" FaceName="Tahoma" Size="10" Bold="yes" Red="0" Green="0" Blue="0" />
<TextStyle Id="WelcomeDesFont" FaceName="Tahoma" Size="8" Bold="no" Red="0" Green="0" Blue="0" />
<TextStyle Id="BlackFont" FaceName="Tahoma" Size="10" Bold="yes" />
<TextStyle Id="ErrorFont" FaceName="Tahoma" Size="8" Red="255" Green="0" Blue="0" Bold="yes"/>
<Property Id="DefaultUIFont" Value="WixUI_Font_Normal" />
<Property Id="WixUI_Mode" Value="InstallDir" />
<DialogRef Id="GPMD_DependenciesDlg" />
<DialogRef Id="GPMD_InstallDirDlg" />
<DialogRef Id="GPMD_ExitDlg" />
<DialogRef Id="GPMD_LicenseAgreementDlg" />
<DialogRef Id="WelcomeDlg" />
<DialogRef Id="BrowseDlg" />
<DialogRef Id="DiskCostDlg" />
<DialogRef Id="ErrorDlg" />
<DialogRef Id="FatalError" />
<DialogRef Id="FilesInUse"/>
<DialogRef Id="MsiRMFilesInUse" />
<DialogRef Id="PrepareDlg" />
<DialogRef Id="ProgressDlg" />
<DialogRef Id="ResumeDlg" />
<DialogRef Id="UserExit" />
<Publish Dialog="BrowseDlg" Control="OK" Event="DoAction" Value="WixUIValidatePath" Order="3">1</Publish>
<Publish Dialog="BrowseDlg" Control="OK" Event="SpawnDialog" Value="InvalidDirDlg" Order="4"><![CDATA[WIXUI_INSTALLDIR_VALID<>"1"]]></Publish>
<Publish Dialog="GPMD_ExitDlg" Control="Finish" Event="EndDialog" Value="Return" Order="999">1</Publish>
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="GPMD_DependenciesDlg">NOT Installed AND NOT WIX_UPGRADE_DETECTED AND NOT WIX_IS_NETFRAMEWORK_40_OR_LATER_INSTALLED</Publish>
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="GPMD_LicenseAgreementDlg">NOT Installed AND NOT WIX_UPGRADE_DETECTED AND WIX_IS_NETFRAMEWORK_40_OR_LATER_INSTALLED = 1</Publish>
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">NOT Installed AND WIX_UPGRADE_DETECTED</Publish>
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">Installed AND PATCH</Publish>
<Publish Dialog="GPMD_LicenseAgreementDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg">1</Publish>
<Publish Dialog="GPMD_LicenseAgreementDlg" Control="Next" Event="NewDialog" Value="GPMD_InstallDirDlg">LicenseAccepted = "1"</Publish>
<Publish Dialog="GPMD_InstallDirDlg" Control="Back" Event="NewDialog" Value="GPMD_LicenseAgreementDlg">1</Publish>
<Publish Dialog="GPMD_InstallDirDlg" Control="Next" Event="SetTargetPath" Value="[WIXUI_INSTALLDIR]" Order="1">1</Publish>
<Publish Dialog="GPMD_InstallDirDlg" Control="Next" Event="DoAction" Value="WixUIValidatePath" Order="2">NOT WIXUI_DONTVALIDATEPATH</Publish>
<Publish Dialog="GPMD_InstallDirDlg" Control="Next" Event="SpawnDialog" Value="InvalidDirDlg" Order="3"><![CDATA[NOT WIXUI_DONTVALIDATEPATH AND WIXUI_INSTALLDIR_VALID<>"1"]]></Publish>
<Publish Dialog="GPMD_InstallDirDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg" Order="4">WIXUI_DONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID="1"</Publish>
<Publish Dialog="GPMD_InstallDirDlg" Control="ChangeFolder" Property="_BrowseProperty" Value="[WIXUI_INSTALLDIR]" Order="1">1</Publish>
<Publish Dialog="GPMD_InstallDirDlg" Control="ChangeFolder" Event="SpawnDialog" Value="BrowseDlg" Order="2">1</Publish>
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="GPMD_InstallDirDlg" Order="1">1</Publish>
<Property Id="ARPNOMODIFY" Value="1" />
</UI>
<UIRef Id="WixUI_Common" />
</Fragment>
</Wix>

21
Google Play Music.Installer/UI/GPMD_DependenciesDlg.wxs

@ -1,21 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<UI>
<Dialog Id="GPMD_DependenciesDlg" Width="374" Height="266">
<Control Id="Finish" Type="PushButton" X="230" Y="243" Width="66" Height="17" Default="yes" Cancel="yes" Text="!(loc.WixUIFinish)">
<Publish Event="EndDialog" Value="Exit">1</Publish>
</Control>
<Control Id="Cancel" Type="PushButton" X="301" Y="243" Width="66" Height="17" Disabled="yes" Text="!(loc.WixUICancel)" />
<Control Id="Back" Type="PushButton" X="164" Y="243" Width="66" Height="17" Disabled="yes" Text="!(loc.WixUIBack)" />
<Control Id="BottomLine" Type="Line" X="0" Y="234" Width="374" Height="0" />
<Control Id="Title" Type="Text" X="145" Y="20" Width="220" Height="60" Transparent="yes" NoPrefix="yes" Text="{\TitleFont}!(loc.DependencyDlgTitle)" />
<Control Id="NetFrameworkPrereq" Type="Text" X="145" Y="70" Width="220" Height="20" Transparent="yes" NoPrefix="yes" Text="!(loc.NetFrameworkPrereq)" />
<Control Id="NetFrameworkLink" Type="Hyperlink" X="145" Y="90" Height="10" Width="220">
<Text><![CDATA[<a href="https://www.microsoft.com/en-us/download/details.aspx?id=17851">Click to Download</a>]]></Text>
</Control>
</Dialog>
</UI>
</Fragment>
</Wix>

29
Google Play Music.Installer/UI/GPMD_ExitDlg.wxs

@ -1,29 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<UI>
<Dialog Id="GPMD_ExitDlg" Width="374" Height="266" Title="!(loc.DlgTitle)">
<Control Id="Finish" Type="PushButton" X="230" Y="243" Width="66" Height="17" Default="yes" Cancel="yes" Text="!(loc.WixUIFinish)" />
<Control Id="Cancel" Type="PushButton" X="301" Y="243" Width="66" Height="17" Disabled="yes" Text="!(loc.btnCancel)" />
<Control Id="Back" Type="PushButton" X="164" Y="243" Width="66" Height="17" Disabled="yes" Text="!(loc.btnBack)" />
<Control Id="BottomLine" Type="Line" X="0" Y="234" Width="374" Height="0" />
<Control Id="Description" Type="Text" X="145" Y="70" Width="220" Height="40" Transparent="yes" NoPrefix="yes" Text="{\WelcomeDesFont}!(loc.ExitDialogDescription)" />
<Control Id="Title" Type="Text" X="145" Y="20" Width="220" Height="60" Transparent="yes" NoPrefix="yes" Text="{\TitleFont}!(loc.ExitDialogTitle)" />
<Control Id="OptionalText" Type="Text" X="145" Y="110" Width="220" Height="80" Transparent="yes" NoPrefix="yes" Hidden="yes" Text="[WIXUI_EXITDIALOGOPTIONALTEXT]">
<Condition Action="show">WIXUI_EXITDIALOGOPTIONALTEXT AND NOT Installed</Condition>
</Control>
<Control Id="OptionalCheckBox" Type="CheckBox" X="145" Y="190" Width="220" Height="40" Hidden="yes" Property="WIXUI_EXITDIALOGOPTIONALCHECKBOX" CheckBoxValue="1" Text="[WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT]">
<Condition Action="show">WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT AND NOT Installed</Condition>
</Control>
</Dialog>
<InstallUISequence>
<Show Dialog="GPMD_ExitDlg" OnExit="success" Overridable="yes" />
</InstallUISequence>
<AdminUISequence>
<Show Dialog="GPMD_ExitDlg" OnExit="success" Overridable="yes" />
</AdminUISequence>
</UI>
</Fragment>
</Wix>

25
Google Play Music.Installer/UI/GPMD_InstallDirDlg.wxs

@ -1,25 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<UI>
<Dialog Id="GPMD_InstallDirDlg" Width="374" Height="266">
<Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="374" Height="266" TabSkip="no" Text="[WixUIDialogBmp]" />
<Control Id="Next" Type="PushButton" X="230" Y="243" Width="66" Height="17" Default="yes" Text="!(loc.btnNext)" />
<Control Id="Back" Type="PushButton" X="164" Y="243" Width="66" Height="17" Text="!(loc.btnBack)" />
<Control Id="Cancel" Type="PushButton" X="301" Y="243" Width="66" Height="17" Cancel="yes" Text="!(loc.btnCancel)">
<Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
</Control>
<Control Id="Description" Type="Text" X="7" Y="19" Width="186" Height="25" Transparent="yes" NoPrefix="yes" Text="{\WelcomeDesFont}!(loc.ClickNext)" />
<Control Id="Title" Type="Text" X="7" Y="2" Width="190" Height="17" Transparent="yes" NoPrefix="yes" Text="{\TitleFont}!(loc.DesFolder)" />
<Control Id="BannerLine" Type="Line" X="0" Y="44" Width="374" Height="0" />
<Control Id="BottomLine" Type="Line" X="0" Y="234" Width="374" Height="0" />
<Control Id="FolderLabel" Type="Text" X="20" Y="60" Width="290" Height="30" NoPrefix="yes" Text="!(loc.InstallDirDlgFolderLabel)" />
<Control Id="Folder" Type="PathEdit" X="20" Y="90" Width="320" Height="18" Property="WIXUI_INSTALLDIR" Indirect="yes" />
<Control Id="ChangeFolder" Type="PushButton" X="20" Y="122" Width="56" Height="17" Text="!(loc.InstallDirDlgChange)" />
</Dialog>
</UI>
</Fragment>
</Wix>

30
Google Play Music.Installer/UI/GPMD_LicenseAgreementDlg.wxs

@ -1,30 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<UI>
<Dialog Id="GPMD_LicenseAgreementDlg" Width="374" Height="266" Title="!(loc.DlgTitle)">
<Control Id="BannerLine" Type="Line" X="0" Y="44" Width="374" Height="0" />
<Control Id="BottomLine" Type="Line" X="0" Y="234" Width="374" Height="0" />
<Control Id="Description" Type="Text" X="7" Y="19" Width="186" Height="25" Transparent="yes" NoPrefix="yes" Text="{\WelcomeDesFont}!(loc.LicenseAgg1)" />
<Control Id="Title" Type="Text" X="7" Y="2" Width="190" Height="17" Transparent="yes" NoPrefix="yes" Text="{\TitleFont}!(loc.LicenseAgg)" />
<Control Id="LicenseAcceptedCheckBox" Type="CheckBox" X="20" Y="207" Width="330" Height="18" CheckBoxValue="1" Property="LicenseAccepted" Text="!(loc.LicenseAgreementDlgLicenseAcceptedCheckBox)" />
<Control Id="Print" Type="PushButton" X="94" Y="243" Width="66" Height="17" Text="!(loc.WixUIPrint)">
<Publish Event="DoAction" Value="WixUIPrintEula">1</Publish>
</Control>
<Control Id="Back" Type="PushButton" X="164" Y="243" Width="66" Height="17" Text="!(loc.btnBack)" />
<Control Id="Next" Type="PushButton" X="230" Y="243" Width="66" Height="17" Default="yes" Text="!(loc.btnNext)">
<Publish Event="SpawnWaitDialog" Value="WaitForCostingDlg">!(wix.WixUICostingPopupOptOut) OR CostingComplete = 1</Publish>
<Condition Action="disable"><![CDATA[LicenseAccepted <> "1"]]></Condition>
<Condition Action="enable">LicenseAccepted = "1"</Condition>
</Control>
<Control Id="Cancel" Type="PushButton" X="301" Y="243" Width="66" Height="17" Cancel="yes" Text="!(loc.btnCancel)">
<Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
</Control>
<Control Id="LicenseText" Type="ScrollableText" X="20" Y="60" Width="330" Height="140" Sunken="yes" TabSkip="no" >
<Text SourceFile="$(var.ProjectDir)!(loc.LicenseRtf)" />
</Control>
</Dialog>
</UI>
</Fragment>
</Wix>

8
Google Play Music.Installer/license.rtf

@ -1,8 +0,0 @@
{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033{\fonttbl{\f0\fnil\fcharset0 Calibri;}}
{\*\generator Riched20 10.0.10240}\viewkind4\uc1
\pard\sa200\sl276\slmult1\f0\fs22\lang9 The MIT License (MIT)\par
Copyright (c) 2015 Samuel Attard\par
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\par
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\par
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\par
}

85
Google Play Music.sln

@ -1,85 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.23107.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Google Play Music", "Google Play Music\Google Play Music.csproj", "{B2C52D42-4EEE-445C-AD6D-357D93397937}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MaterialSkin", "Material Skin\MaterialSkin.csproj", "{8EB7611B-68CD-4B8B-987A-11717E2B250C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTests.Test", "UnitTests.Test\UnitTests.Test.csproj", "{68AA8F3D-31E4-474C-A4B5-A82936750D0F}"
EndProject
Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "Google Play Music.Installer", "Google Play Music.Installer\Google Play Music.Installer.wixproj", "{84B8A8AD-DF49-4DED-A3A3-0BED80054D6E}"
EndProject
Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "Google Play Music.Bootstrapper", "Google Play Music.Bootstrapper\Google Play Music.Bootstrapper.wixproj", "{CD40BFFE-EA0F-4E9B-AEAF-2416F44AD40F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{BC689D0A-8040-4752-971F-145FBE6262D5}"
ProjectSection(SolutionItems) = preProject
appveyor.yml = appveyor.yml
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{B2C52D42-4EEE-445C-AD6D-357D93397937}.Debug|Any CPU.ActiveCfg = Release|x86
{B2C52D42-4EEE-445C-AD6D-357D93397937}.Debug|Any CPU.Build.0 = Release|x86
{B2C52D42-4EEE-445C-AD6D-357D93397937}.Debug|x64.ActiveCfg = Debug|x64
{B2C52D42-4EEE-445C-AD6D-357D93397937}.Debug|x64.Build.0 = Debug|x64
{B2C52D42-4EEE-445C-AD6D-357D93397937}.Debug|x86.ActiveCfg = Debug|x86
{B2C52D42-4EEE-445C-AD6D-357D93397937}.Debug|x86.Build.0 = Debug|x86
{B2C52D42-4EEE-445C-AD6D-357D93397937}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B2C52D42-4EEE-445C-AD6D-357D93397937}.Release|Any CPU.Build.0 = Release|Any CPU
{B2C52D42-4EEE-445C-AD6D-357D93397937}.Release|x64.ActiveCfg = Release|x64
{B2C52D42-4EEE-445C-AD6D-357D93397937}.Release|x64.Build.0 = Release|x64
{B2C52D42-4EEE-445C-AD6D-357D93397937}.Release|x86.ActiveCfg = Release|x86
{B2C52D42-4EEE-445C-AD6D-357D93397937}.Release|x86.Build.0 = Release|x86
{8EB7611B-68CD-4B8B-987A-11717E2B250C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8EB7611B-68CD-4B8B-987A-11717E2B250C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8EB7611B-68CD-4B8B-987A-11717E2B250C}.Debug|x64.ActiveCfg = Debug|Any CPU
{8EB7611B-68CD-4B8B-987A-11717E2B250C}.Debug|x64.Build.0 = Debug|Any CPU
{8EB7611B-68CD-4B8B-987A-11717E2B250C}.Debug|x86.ActiveCfg = Debug|Any CPU
{8EB7611B-68CD-4B8B-987A-11717E2B250C}.Debug|x86.Build.0 = Debug|Any CPU
{8EB7611B-68CD-4B8B-987A-11717E2B250C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8EB7611B-68CD-4B8B-987A-11717E2B250C}.Release|Any CPU.Build.0 = Release|Any CPU
{8EB7611B-68CD-4B8B-987A-11717E2B250C}.Release|x64.ActiveCfg = Release|Any CPU
{8EB7611B-68CD-4B8B-987A-11717E2B250C}.Release|x64.Build.0 = Release|Any CPU
{8EB7611B-68CD-4B8B-987A-11717E2B250C}.Release|x86.ActiveCfg = Release|Any CPU
{8EB7611B-68CD-4B8B-987A-11717E2B250C}.Release|x86.Build.0 = Release|Any CPU
{68AA8F3D-31E4-474C-A4B5-A82936750D0F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{68AA8F3D-31E4-474C-A4B5-A82936750D0F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{68AA8F3D-31E4-474C-A4B5-A82936750D0F}.Debug|x64.ActiveCfg = Debug|x64
{68AA8F3D-31E4-474C-A4B5-A82936750D0F}.Debug|x86.ActiveCfg = Debug|x86
{68AA8F3D-31E4-474C-A4B5-A82936750D0F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{68AA8F3D-31E4-474C-A4B5-A82936750D0F}.Release|Any CPU.Build.0 = Release|Any CPU
{68AA8F3D-31E4-474C-A4B5-A82936750D0F}.Release|x64.ActiveCfg = Release|x64
{68AA8F3D-31E4-474C-A4B5-A82936750D0F}.Release|x64.Build.0 = Release|x64
{68AA8F3D-31E4-474C-A4B5-A82936750D0F}.Release|x86.ActiveCfg = Release|x86
{68AA8F3D-31E4-474C-A4B5-A82936750D0F}.Release|x86.Build.0 = Release|x86
{84B8A8AD-DF49-4DED-A3A3-0BED80054D6E}.Debug|Any CPU.ActiveCfg = Debug|x86
{84B8A8AD-DF49-4DED-A3A3-0BED80054D6E}.Debug|x64.ActiveCfg = Debug|x64
{84B8A8AD-DF49-4DED-A3A3-0BED80054D6E}.Debug|x86.ActiveCfg = Debug|x86
{84B8A8AD-DF49-4DED-A3A3-0BED80054D6E}.Release|Any CPU.ActiveCfg = Release|x86
{84B8A8AD-DF49-4DED-A3A3-0BED80054D6E}.Release|x64.ActiveCfg = Release|x64
{84B8A8AD-DF49-4DED-A3A3-0BED80054D6E}.Release|x64.Build.0 = Release|x64
{84B8A8AD-DF49-4DED-A3A3-0BED80054D6E}.Release|x86.ActiveCfg = Release|x86
{84B8A8AD-DF49-4DED-A3A3-0BED80054D6E}.Release|x86.Build.0 = Release|x86
{CD40BFFE-EA0F-4E9B-AEAF-2416F44AD40F}.Debug|Any CPU.ActiveCfg = Debug|x86
{CD40BFFE-EA0F-4E9B-AEAF-2416F44AD40F}.Debug|x64.ActiveCfg = Debug|x86
{CD40BFFE-EA0F-4E9B-AEAF-2416F44AD40F}.Debug|x86.ActiveCfg = Debug|x86
{CD40BFFE-EA0F-4E9B-AEAF-2416F44AD40F}.Release|Any CPU.ActiveCfg = Release|x86
{CD40BFFE-EA0F-4E9B-AEAF-2416F44AD40F}.Release|x64.ActiveCfg = Release|x64
{CD40BFFE-EA0F-4E9B-AEAF-2416F44AD40F}.Release|x64.Build.0 = Release|x64
{CD40BFFE-EA0F-4E9B-AEAF-2416F44AD40F}.Release|x86.ActiveCfg = Release|x86
{CD40BFFE-EA0F-4E9B-AEAF-2416F44AD40F}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

70
Google Play Music/App.config

@ -1,70 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="Google_Play_Music.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" /></startup>
<userSettings>
<Google_Play_Music.Properties.Settings>
<setting name="MaxiSize" serializeAs="String">
<value>-1, -1</value>
</setting>
<setting name="MaxiPoint" serializeAs="String">
<value>-1, -1</value>
</setting>
<setting name="MiniSize" serializeAs="String">
<value>-1, -1</value>
</setting>
<setting name="MiniPoint" serializeAs="String">
<value>-1, -1</value>
</setting>
<setting name="CustomTheme" serializeAs="String">
<value>False</value>
</setting>
<setting name="CustomColor" serializeAs="String">
<value>30, 215, 96</value>
</setting>
<setting name="DesktopNotifications" serializeAs="String">
<value>True</value>
</setting>
<setting name="HoverControls" serializeAs="String">
<value>True</value>
</setting>
<setting name="LastFMUsername" serializeAs="String">
<value>Username</value>
</setting>
<setting name="LastFMPassword" serializeAs="String">
<value>1234567</value>
</setting>
<setting name="MaxiZoomLevel" serializeAs="String">
<value>0</value>
</setting>
<setting name="MiniAlwaysOnTop" serializeAs="String">
<value>False</value>
</setting>
<setting name="BetaStream" serializeAs="String">
<value>False</value>
</setting>
</Google_Play_Music.Properties.Settings>
</userSettings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.6.10.0" newVersion="2.6.10.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.6.10.0" newVersion="2.6.10.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.2.29.0" newVersion="2.2.29.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

52
Google Play Music/App_Build/grunt.targets

@ -1,52 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- Examples of using Grunt at different phases of your build process -->
<Target Name="Grunt-BeforeBuild" BeforeTargets="BeforeResGen;">
<Grunt Tasks="default" />
</Target>
<!--
<Target Name="Grunt-BeforeCompile" BeforeTargets="BeforeCompile">
<Grunt Tasks="compile-js compile-css" />
</Target>
-->
<!--
<Target Name="Grunt-AfterCompile" AfterTargets="AfterCompile">
<Grunt Tasks="concat-js concat-css" />
</Target>
-->
<!--
<Target Name="Grunt-AfterBuild" AfterTargets="AfterBuild">
<Grunt Tasks="after-build-cleanup" />
</Target>
-->
<!--
<Target Name="Grunt-BeforeClean" BeforeTargets="BeforeClean">
</Target>
-->
<!--
<Target Name="Grunt-AfterClean" AfterTargets="AfterClean">
<Grunt Tasks="clear-cache-directories" />
</Target>
-->
<!--
<Target Name="Grunt-BeforeRebuild" BeforeTargets="BeforeRebuild">
</Target>
-->
<!--
<Target Name="Grunt-AfterRebuild" AfterTargets="AfterRebuild">
<Grunt Tasks="clear-compiled-js clear-compiled-css" />
</Target>
-->
<!-- You can use item groups to get incremental builds, these item groups need to be customized to meet your needs -->
<!--<ItemGroup>
<RequireJsInput Include="$(MSBuildProjectDirectory)\Scripts\app\**\*.js" />
<RequireJsBuild Include="$(MSBuildProjectDirectory)\Scripts\build\app.js" />
<RequireJsBuildMin Include="$(MSBuildProjectDirectory)\Scripts\build\app.min.js" />
</ItemGroup>
<Target Name="Grunt-BeforeBuild" BeforeTargets="BeforeBuild;Bower;Npm" Inputs="@(RequireJsInput)" Outputs="@(RequireJsBuild)">
<Grunt Tasks="requirejs" />
</Target>
<Target Name="Grunt-Min" AfterTargets="Grunt-BeforeBuild" Inputs="@(RequireJsBuild)" Outputs="@(RequireJsBuildMin)">
<Grunt Tasks="min" />
</Target>-->
</Project>

17
Google Play Music/App_Build/node.targets

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- Support for Incremental builds -->
<!-- When package.json is changed, we'll install and update, then update lastrun -->
<ItemGroup>
<NpmJson Include="$(MSBuildProjectDirectory)\package.json" />
<NpmLastRun Include="$(MSBuildProjectDirectory)\node_modules\npm.lastrun" />
</ItemGroup>
<Target Name="Npm" BeforeTargets="Grunt-BeforeBuild;BeforeResGen" Inputs="@(NpmJson)" Outputs="@(NpmLastRun)">
<NpmInstall />
<Delete Files="$(MSBuildProjectDirectory)\node_modules\npm.lastrun" />
<WriteLinesToFile File="$(MSBuildProjectDirectory)\node_modules\npm.lastrun" Lines="" />
</Target>
<Target Name="NpmClean" BeforeTargets="BeforeClean">
<Delete Files="$(MSBuildProjectDirectory)\node_modules\npm.lastrun" />
</Target>
</Project>

20
Google Play Music/CEF Modules/DragHandler.cs

@ -1,20 +0,0 @@
using System;
using System.Collections.Generic;
using CefSharp;
namespace Google_Play_Music.CEF_Modules
{
public class GPMDragHandler : IDragHandler
{
public void OnDraggableRegionsChanged(IWebBrowser browserControl, IBrowser browser, IList<DraggableRegion> regions)
{
// Do nothing
}
bool IDragHandler.OnDragEnter(IWebBrowser browserControl, IBrowser browser, IDragData dragData, DragOperationsMask mask)
{
// Returning true cancels the drag (no idea why...) #CEFLogic
return true;
}
}
}

33
Google Play Music/CEF Modules/MenuHandler.cs

@ -1,33 +0,0 @@
using System;
using CefSharp;
namespace Google_Play_Music
{
class GPMMenuHandler : IContextMenuHandler
{
public bool OnBeforeContextMenu(IWebBrowser browser, IContextMenuParams param)
{
return false;
}
public void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
{
model.Clear();
}
public bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
{
return false;
}
public void OnContextMenuDismissed(IWebBrowser browserControl, IBrowser browser, IFrame frame)
{
// Do nothing
}
public bool RunContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model, IRunContextMenuCallback callback)
{
return false;
}
}
}

77
Google Play Music/CEF Modules/ResourceHandlerFactory.cs

@ -1,77 +0,0 @@
using CefSharp;
using System.Drawing;
using System.IO;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
namespace Google_Play_Music
{
class GPMResouceHandlerFactory : IResourceHandlerFactory
{
private bool firstJSOnly = false;
public IResourceHandler GetResourceHandler(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request)
{
// Every time we request the main GPM page allow another JS injection
if (Regex.Match(request.Url, @"^http[s]?://play\.google\.com/music/listen", RegexOptions.IgnoreCase).Success)
{
firstJSOnly = true;
}
if (Regex.Match(request.Url, @"\.js", RegexOptions.IgnoreCase).Success && Regex.Match(request.Url, @"http", RegexOptions.IgnoreCase).Success && firstJSOnly)
{
firstJSOnly = false;
using (WebClient webClient = new WebClient())
{
// These are the JS files to inject into GPM
string custom_interface = Properties.Resources.custom_interface;
return ResourceHandler.FromStream(new MemoryStream(Encoding.UTF8.GetBytes(
webClient.DownloadString(request.Url) + ";window.onload=function(){csharpinterface.showApp();};document.addEventListener('DOMContentLoaded', function () {" +
"window.OBSERVER = setInterval(function() { if (document.getElementById('material-vslider')) { clearInterval(window.OBSERVER); " +
Properties.Resources.gmusic_min + Properties.Resources.gmusic_theme_min + Properties.Resources.gmusic_mini_player_min +
this.getInitCode() +
custom_interface +
"}}, 10);});")), webClient.ResponseHeaders["Content-Type"]);
}
}
return null;
}
private string getInitCode()
{
Color c = Properties.Settings.Default.CustomColor;
string custom_color = "#" + c.R.ToString("X2") + c.G.ToString("X2") + c.B.ToString("X2");
bool controlsOnHover = Properties.Settings.Default.HoverControls;
string controlsOnHoverJS = "window.hoverControls = " + controlsOnHover.ToString().ToLower() + ";";
string init_GPM = "window.GPM = new window.GMusic(window);";
string init_mini;
if (Properties.Settings.Default.HoverControls)
{
init_mini = "window.GPM.mini.showControlsWhen('hover');";
} else
{
init_mini = "window.GPM.mini.showControlsWhen('always');";
}
string init_GPM_Theme = "window.theme = new window.GMusicTheme({foreSecondary: '" + custom_color + "'});";
if (Properties.Settings.Default.CustomTheme)
{
init_GPM_Theme += "window.theme.enable();";
}
string show_GPM_app = "csharpinterface.showApp();";
return controlsOnHoverJS + init_GPM + init_mini + init_GPM_Theme + show_GPM_app;
}
public bool HasHandlers
{
get
{
return true;
}
}
}
}

430
Google Play Music/ColorWheel.cs

@ -1,430 +0,0 @@
// Copyright (c) 2012, Yves Goergen, http://unclassified.software/source/colormath
//
// Copying and distribution of this file, with or without modification, are permitted provided the
// copyright notice and this notice are preserved. This file is offered as-is, without any warranty.
using Google_Play_Music.Utilities;
using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Imaging;