mirror of
				https://github.com/chibicitiberiu/rainmeter-studio.git
				synced 2024-02-24 04:33:31 +00:00 
			
		
		
		
	Completed rename from RainmeterEditor to RainmeterStudio
This commit is contained in:
		
							
								
								
									
										176
									
								
								Build/Build.bat
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										176
									
								
								Build/Build.bat
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,176 @@
 | 
			
		||||
@echo off
 | 
			
		||||
setlocal EnableDelayedExpansion
 | 
			
		||||
 | 
			
		||||
set VCVARSALL=%VS120COMNTOOLS%..\..\VC\vcvarsall.bat
 | 
			
		||||
set MAKENSIS=%PROGRAMFILES%\NSIS\MakeNSIS.exe
 | 
			
		||||
set GIT=%PROGRAMFILES%\Git\bin\git.exe
 | 
			
		||||
 | 
			
		||||
:: Set VERSION_REVISION to non-zero value to override
 | 
			
		||||
set VERSION_MAJOR=3
 | 
			
		||||
set VERSION_MINOR=2
 | 
			
		||||
set VERSION_SUBMINOR=0
 | 
			
		||||
set VERSION_REVISION=0
 | 
			
		||||
set ISBETA=true
 | 
			
		||||
 | 
			
		||||
if "%1" == "RELEASE" set ISBETA=false
 | 
			
		||||
if "%1" == "BUILDVERSION" goto BUILDVERSION
 | 
			
		||||
echo Rainmeter Build
 | 
			
		||||
echo ----------------------------------------------
 | 
			
		||||
echo.
 | 
			
		||||
 | 
			
		||||
if not exist "%VCVARSALL%" echo ERROR: vcvarsall.bat not found & goto END
 | 
			
		||||
call "%VCVARSALL%" x86 > nul
 | 
			
		||||
 | 
			
		||||
set MSBUILD="msbuild.exe" /nologo^
 | 
			
		||||
	/p:PlatformToolset=v120_xp;VisualStudioVersion=12.0^
 | 
			
		||||
	/p:ExcludeTests=true^
 | 
			
		||||
	/p:Configuration=Release
 | 
			
		||||
 | 
			
		||||
if exist "Certificate.bat" call "Certificate.bat" > nul
 | 
			
		||||
set SIGNTOOL="signtool.exe" sign /t http://time.certum.pl /f "%CERTFILE%" /p "%CERTKEY%"
 | 
			
		||||
 | 
			
		||||
if "%1" == "BUILDLANGUAGES" goto BUILDLANGUAGES
 | 
			
		||||
 | 
			
		||||
if exist "%MAKENSIS%" goto NSISFOUND
 | 
			
		||||
set MAKENSIS=%MAKENSIS:Program Files\=Program Files (x86)\%
 | 
			
		||||
if not exist "%MAKENSIS%" echo ERROR: MakeNSIS.exe not found & goto END
 | 
			
		||||
:NSISFOUND
 | 
			
		||||
 | 
			
		||||
:BUILDVERSION
 | 
			
		||||
 | 
			
		||||
if not exist "..\.git" goto UPDATEVERSION
 | 
			
		||||
if not "%VERSION_REVISION%" == "0" goto UPDATEVERSION
 | 
			
		||||
 | 
			
		||||
:: git
 | 
			
		||||
if exist "%GIT%" goto GITFOUND
 | 
			
		||||
set GIT=%GIT:Program Files\=Program Files (x86)\%
 | 
			
		||||
if not exist "%GIT%" echo ERROR: git.exe not found & goto END
 | 
			
		||||
:GITFOUND
 | 
			
		||||
set /a VERSION_REVISION=0
 | 
			
		||||
for /f "usebackq delims= " %%G in (`"%GIT%" rev-list --all --count`) do set VERSION_REVISION=%%G
 | 
			
		||||
 | 
			
		||||
:UPDATEVERSION
 | 
			
		||||
 | 
			
		||||
set VERSION_FULL=%VERSION_MAJOR%.%VERSION_MINOR%.%VERSION_SUBMINOR%.%VERSION_REVISION%
 | 
			
		||||
set VERSION_SHORT=%VERSION_MAJOR%.%VERSION_MINOR%
 | 
			
		||||
if not "%VERSION_SUBMINOR%" == "0" set VERSION_SHORT=!VERSION_SHORT!.%VERSION_SUBMINOR%
 | 
			
		||||
 | 
			
		||||
:: Update Version.h
 | 
			
		||||
> "..\Version.h" echo #pragma once
 | 
			
		||||
>>"..\Version.h" echo #define FILEVER %VERSION_MAJOR%,%VERSION_MINOR%,%VERSION_SUBMINOR%,%VERSION_REVISION%
 | 
			
		||||
>>"..\Version.h" echo #define PRODUCTVER FILEVER
 | 
			
		||||
>>"..\Version.h" echo #define STRFILEVER "%VERSION_FULL%"
 | 
			
		||||
>>"..\Version.h" echo #define STRPRODUCTVER STRFILEVER
 | 
			
		||||
>>"..\Version.h" echo #define APPVERSION L"%VERSION_MAJOR%.%VERSION_MINOR%.%VERSION_SUBMINOR%"
 | 
			
		||||
>>"..\Version.h" echo #define RAINMETER_VERSION ((%VERSION_MAJOR% * 1000000) + (%VERSION_MINOR% * 1000) + %VERSION_SUBMINOR%)
 | 
			
		||||
>>"..\Version.h" echo const int revision_number = %VERSION_REVISION%;
 | 
			
		||||
>>"..\Version.h" echo const bool revision_beta = %ISBETA%;
 | 
			
		||||
 | 
			
		||||
:: Update Version.cs
 | 
			
		||||
> "..\Version.cs" echo namespace Rainmeter
 | 
			
		||||
>>"..\Version.cs" echo {
 | 
			
		||||
>>"..\Version.cs" echo     public class Version
 | 
			
		||||
>>"..\Version.cs" echo     {
 | 
			
		||||
>>"..\Version.cs" echo #if X64
 | 
			
		||||
>>"..\Version.cs" echo         public const string Informational = "%VERSION_FULL% (64-bit)";
 | 
			
		||||
>>"..\Version.cs" echo #else
 | 
			
		||||
>>"..\Version.cs" echo         public const string Informational = "%VERSION_FULL% (32-bit)";
 | 
			
		||||
>>"..\Version.cs" echo #endif
 | 
			
		||||
>>"..\Version.cs" echo     }
 | 
			
		||||
>>"..\Version.cs" echo }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if "%1" == "BUILDVERSION" goto :eof
 | 
			
		||||
echo * Updated Version.h
 | 
			
		||||
 | 
			
		||||
:: Set vcbuild environment variables and begin build
 | 
			
		||||
echo * Starting build for %VERSION_FULL%
 | 
			
		||||
for /F "tokens=1-4 delims=:.," %%a in ("%TIME%") do (
 | 
			
		||||
	set /A "BUILD_BEGIN_TIMESTAMP=(((%%a * 60) + 1%%b %% 100)* 60 + 1%%c %% 100) * 100 + 1%%d %% 100"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
:: Build Library
 | 
			
		||||
echo * Building 32-bit projects
 | 
			
		||||
%MSBUILD% /t:rebuild /p:Platform=Win32 /v:q /m ..\Rainmeter.sln > "BuildLog.txt"
 | 
			
		||||
if not %ERRORLEVEL% == 0 echo   ERROR %ERRORLEVEL%: Build failed & goto END
 | 
			
		||||
 | 
			
		||||
echo * Building 64-bit projects
 | 
			
		||||
%MSBUILD% /t:rebuild /p:Platform=x64 /v:q /m ..\Rainmeter.sln > "BuildLog.txt"
 | 
			
		||||
if not %ERRORLEVEL% == 0 echo   ERROR %ERRORLEVEL%: Build failed & goto END
 | 
			
		||||
 | 
			
		||||
:BUILDLANGUAGES
 | 
			
		||||
echo * Building languages
 | 
			
		||||
 | 
			
		||||
:: Build all language libraries
 | 
			
		||||
>".\Installer\Languages.nsh" echo.
 | 
			
		||||
for /f "tokens=1,2,3 delims=," %%a in (..\Language\List) do (
 | 
			
		||||
	> "..\Language\Language.rc" echo #include "%%a.h"
 | 
			
		||||
	>>"..\Language\Language.rc" echo #include "Resource.rc"
 | 
			
		||||
	>>".\Installer\Languages.nsh" echo ${IncludeLanguage} "%%b" "%%a"
 | 
			
		||||
	set LANGDLL_PARAMS='%%a -  ${LANGFILE_%%b_NAME}' '${LANG_%%b}' '${LANG_%%b_CP}' !LANGDLL_PARAMS!
 | 
			
		||||
	set LANGUAGE_IDS=${LANG_%%b},!LANGUAGE_IDS!
 | 
			
		||||
 | 
			
		||||
	%MSBUILD% /t:Language /p:Platform=Win32;TargetName=%%c /v:q ..\Rainmeter.sln > "BuildLog.txt"
 | 
			
		||||
	if not %ERRORLEVEL% == 0 echo   ERROR: Building language %%a failed & goto END
 | 
			
		||||
)
 | 
			
		||||
>>".\Installer\Languages.nsh" echo ^^!define LANGDLL_PARAMS "%LANGDLL_PARAMS%"
 | 
			
		||||
>>".\Installer\Languages.nsh" echo ^^!define LANGUAGE_IDS "%LANGUAGE_IDS%"
 | 
			
		||||
 | 
			
		||||
:: Restore English
 | 
			
		||||
echo #include "English.h"> "..\Language\Language.rc"
 | 
			
		||||
echo #include "Resource.rc">> "..\Language\Language.rc"
 | 
			
		||||
if "%1" == "BUILDLANGUAGES" (
 | 
			
		||||
	xcopy /Q /S /Y ..\x32-Release\Languages\*.dll ..\x64-Release\Languages\ > nul
 | 
			
		||||
	xcopy /Q /S /Y ..\x32-Release\Release\Languages\*.dll ..\x32-Debug\Languages\ > nul
 | 
			
		||||
	xcopy /Q /S /Y ..\x32-Release\Release\Languages\*.dll ..\x64-Debug\Languages\ > nul
 | 
			
		||||
	if exist "BuildLog.txt" del "BuildLog.txt"
 | 
			
		||||
	goto END
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
:: Sign binaries
 | 
			
		||||
if not "%CERTFILE%" == "" (
 | 
			
		||||
	echo * Signing binaries
 | 
			
		||||
	for %%Z in (Rainmeter.dll Rainmeter.exe SkinInstaller.exe SkinInstaller.dll) do (
 | 
			
		||||
		%SIGNTOOL% ..\x32-Release\%%Z > BuildLog.txt
 | 
			
		||||
		if not %ERRORLEVEL% == 0 echo   ERROR %ERRORLEVEL%: Signing x32\%%Z failed & goto END
 | 
			
		||||
		%SIGNTOOL% ..\x64-Release\%%Z > BuildLog.txt
 | 
			
		||||
		if not %ERRORLEVEL% == 0 echo   ERROR %ERRORLEVEL%: Signing x64\%%Z failed & goto END
 | 
			
		||||
	)
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
:: Build installer
 | 
			
		||||
echo * Building installer
 | 
			
		||||
 | 
			
		||||
set INSTALLER_NAME=Rainmeter-%VERSION_SHORT%.exe
 | 
			
		||||
if not "%1" == "RELEASE" set INSTALLER_NAME=Rainmeter-%VERSION_SHORT%-r%VERSION_REVISION%-beta.exe
 | 
			
		||||
 | 
			
		||||
set INSTALLER_DEFINES=^
 | 
			
		||||
	/DOUTFILE="%INSTALLER_NAME%"^
 | 
			
		||||
	/DVERSION_FULL="%VERSION_FULL%"^
 | 
			
		||||
	/DVERSION_SHORT="%VERSION_SHORT%"^
 | 
			
		||||
	/DVERSION_REVISION="%VERSION_REVISION%"
 | 
			
		||||
if not "%1" == "RELEASE" set INSTALLER_DEFINES=!INSTALLER_DEFINES! /DBETA
 | 
			
		||||
 | 
			
		||||
"%MAKENSIS%" %INSTALLER_DEFINES% .\Installer\Installer.nsi > "BuildLog.txt"
 | 
			
		||||
if not %ERRORLEVEL% == 0 echo   ERROR %ERRORLEVEL%: Building installer failed & goto END
 | 
			
		||||
 | 
			
		||||
:: Sign installer
 | 
			
		||||
if not "%CERTFILE%" == "" (
 | 
			
		||||
	echo * Signing installer
 | 
			
		||||
	%SIGNTOOL% %INSTALLER_NAME% > BuildLog.txt
 | 
			
		||||
	if not %ERRORLEVEL% == 0 echo   ERROR %ERRORLEVEL%: Signing installer failed & goto END
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
:: If we got here, build was successful so delete BuildLog.txt
 | 
			
		||||
if exist "BuildLog.txt" del "BuildLog.txt"
 | 
			
		||||
 | 
			
		||||
for /F "tokens=1-4 delims=:.," %%a in ("%TIME%") do (
 | 
			
		||||
	set /A "BUILD_END_TIMESTAMP=(((%%a * 60) + 1%%b %% 100)* 60 + %%c %% 100) * 100 + 1%%d %% 100"
 | 
			
		||||
)
 | 
			
		||||
set /A "BUILD_ELAPSED_TIME=(%BUILD_END_TIMESTAMP% - %BUILD_BEGIN_TIMESTAMP%) / 100"
 | 
			
		||||
echo * Build complete. Elapsed time: %BUILD_ELAPSED_TIME% sec
 | 
			
		||||
 | 
			
		||||
:END
 | 
			
		||||
if exist ".\Installer\Languages.nsh" del ".\Installer\Languages.nsh"
 | 
			
		||||
echo.
 | 
			
		||||
pause
 | 
			
		||||
							
								
								
									
										2
									
								
								Build/BuildLanguages.bat
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								Build/BuildLanguages.bat
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,2 @@
 | 
			
		||||
@echo off
 | 
			
		||||
"Build.bat" BUILDLANGUAGES
 | 
			
		||||
							
								
								
									
										2
									
								
								Build/BuildVersion.bat
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								Build/BuildVersion.bat
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,2 @@
 | 
			
		||||
@echo off
 | 
			
		||||
"Build.bat" BUILDVERSION
 | 
			
		||||
							
								
								
									
										7
									
								
								Build/DllExporter/AssemblyInfo.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								Build/DllExporter/AssemblyInfo.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
using System.Reflection;
 | 
			
		||||
using System.Runtime.CompilerServices;
 | 
			
		||||
using System.Runtime.InteropServices;
 | 
			
		||||
 | 
			
		||||
[assembly: AssemblyCopyright("© 2013 - Birunthan Mohanathas")]
 | 
			
		||||
[assembly: AssemblyVersion("1.0.1.0")]
 | 
			
		||||
[assembly: AssemblyProduct("Rainmeter")]
 | 
			
		||||
							
								
								
									
										82
									
								
								Build/DllExporter/DllExporter.csproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								Build/DllExporter/DllExporter.csproj
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,82 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 | 
			
		||||
  <PropertyGroup>
 | 
			
		||||
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
 | 
			
		||||
    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
 | 
			
		||||
    <ProductVersion>8.0.30703</ProductVersion>
 | 
			
		||||
    <SchemaVersion>2.0</SchemaVersion>
 | 
			
		||||
    <ProjectGuid>{49D56CA5-54AB-45C9-A245-EAE588FCBFE1}</ProjectGuid>
 | 
			
		||||
    <OutputType>Exe</OutputType>
 | 
			
		||||
    <AppDesignerFolder>Properties</AppDesignerFolder>
 | 
			
		||||
    <RootNamespace>DllExporter</RootNamespace>
 | 
			
		||||
    <AssemblyName>DllExporter</AssemblyName>
 | 
			
		||||
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
 | 
			
		||||
    <FileAlignment>512</FileAlignment>
 | 
			
		||||
    <PublishUrl>publish\</PublishUrl>
 | 
			
		||||
    <Install>true</Install>
 | 
			
		||||
    <InstallFrom>Disk</InstallFrom>
 | 
			
		||||
    <UpdateEnabled>false</UpdateEnabled>
 | 
			
		||||
    <UpdateMode>Foreground</UpdateMode>
 | 
			
		||||
    <UpdateInterval>7</UpdateInterval>
 | 
			
		||||
    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
 | 
			
		||||
    <UpdatePeriodically>false</UpdatePeriodically>
 | 
			
		||||
    <UpdateRequired>false</UpdateRequired>
 | 
			
		||||
    <MapFileExtensions>true</MapFileExtensions>
 | 
			
		||||
    <ApplicationRevision>0</ApplicationRevision>
 | 
			
		||||
    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
 | 
			
		||||
    <IsWebBootstrapper>false</IsWebBootstrapper>
 | 
			
		||||
    <UseApplicationTrust>false</UseApplicationTrust>
 | 
			
		||||
    <BootstrapperEnabled>true</BootstrapperEnabled>
 | 
			
		||||
    <OutputPath Condition=" '$(Platform)' == 'x86' ">$(SolutionDir)x32-$(Configuration)\Tools\</OutputPath>
 | 
			
		||||
    <OutputPath Condition=" '$(Platform)' == 'x64' ">$(SolutionDir)x64-$(Configuration)\Tools\</OutputPath>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
 | 
			
		||||
    <PlatformTarget>x86</PlatformTarget>
 | 
			
		||||
    <DebugSymbols>true</DebugSymbols>
 | 
			
		||||
    <DebugType>full</DebugType>
 | 
			
		||||
    <Optimize>false</Optimize>
 | 
			
		||||
    <DefineConstants>DEBUG;TRACE</DefineConstants>
 | 
			
		||||
    <ErrorReport>prompt</ErrorReport>
 | 
			
		||||
    <WarningLevel>4</WarningLevel>
 | 
			
		||||
    <NoWarn>1607</NoWarn>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
 | 
			
		||||
    <PlatformTarget>x86</PlatformTarget>
 | 
			
		||||
    <DebugType>none</DebugType>
 | 
			
		||||
    <Optimize>true</Optimize>
 | 
			
		||||
    <DefineConstants>TRACE</DefineConstants>
 | 
			
		||||
    <ErrorReport>prompt</ErrorReport>
 | 
			
		||||
    <WarningLevel>4</WarningLevel>
 | 
			
		||||
    <NoWarn>1607</NoWarn>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup>
 | 
			
		||||
    <RunPostBuildEvent>OnOutputUpdated</RunPostBuildEvent>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
 | 
			
		||||
    <DebugSymbols>true</DebugSymbols>
 | 
			
		||||
    <DefineConstants>DEBUG;TRACE</DefineConstants>
 | 
			
		||||
    <DebugType>full</DebugType>
 | 
			
		||||
    <PlatformTarget>x64</PlatformTarget>
 | 
			
		||||
    <ErrorReport>prompt</ErrorReport>
 | 
			
		||||
    <NoWarn>1607</NoWarn>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
 | 
			
		||||
    <DefineConstants>TRACE</DefineConstants>
 | 
			
		||||
    <Optimize>true</Optimize>
 | 
			
		||||
    <DebugType>none</DebugType>
 | 
			
		||||
    <PlatformTarget>x64</PlatformTarget>
 | 
			
		||||
    <ErrorReport>prompt</ErrorReport>
 | 
			
		||||
    <NoWarn>1607</NoWarn>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Reference Include="Microsoft.Build.Utilities.v4.0" />
 | 
			
		||||
    <Reference Include="System" />
 | 
			
		||||
    <Reference Include="System.Data" />
 | 
			
		||||
    <Reference Include="System.Xml" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Compile Include="Program.cs" />
 | 
			
		||||
    <Compile Include="AssemblyInfo.cs" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
 | 
			
		||||
</Project>
 | 
			
		||||
							
								
								
									
										241
									
								
								Build/DllExporter/Program.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										241
									
								
								Build/DllExporter/Program.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,241 @@
 | 
			
		||||
/*
 | 
			
		||||
  Copyright (C) 2011 Birunthan Mohanathas
 | 
			
		||||
 | 
			
		||||
  This program is free software; you can redistribute it and/or
 | 
			
		||||
  modify it under the terms of the GNU General Public License
 | 
			
		||||
  as published by the Free Software Foundation; either version 2
 | 
			
		||||
  of the License, or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
  This program is distributed in the hope that it will be useful,
 | 
			
		||||
  but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
  GNU General Public License for more details.
 | 
			
		||||
 | 
			
		||||
  You should have received a copy of the GNU General Public License
 | 
			
		||||
  along with this program; if not, write to the Free Software
 | 
			
		||||
  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Diagnostics;
 | 
			
		||||
using Microsoft.Build.Utilities;
 | 
			
		||||
using System.IO;
 | 
			
		||||
 | 
			
		||||
namespace DllExporter
 | 
			
		||||
{
 | 
			
		||||
    class Program
 | 
			
		||||
    {
 | 
			
		||||
        static int Main(string[] args)
 | 
			
		||||
        {
 | 
			
		||||
            if (args.Length < 4)
 | 
			
		||||
            {
 | 
			
		||||
                Console.WriteLine("DllExporter error: Invalid arguments");
 | 
			
		||||
                return 1;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            string configurationName = args[0];
 | 
			
		||||
            string platformTarget = args[1];
 | 
			
		||||
            string targetDirectory = args[2];
 | 
			
		||||
            string targetDllName = targetDirectory + args[3];
 | 
			
		||||
            string targetIlName = targetDllName + ".il";
 | 
			
		||||
            string targetResName = targetDllName + ".res";
 | 
			
		||||
 | 
			
		||||
            bool is64 = platformTarget.ToLower().Equals("x64");
 | 
			
		||||
            bool isDebug = configurationName.ToLower().Equals("debug");
 | 
			
		||||
 | 
			
		||||
            string ilasmPath = FindIlasmPath(is64);
 | 
			
		||||
            if (ilasmPath == null)
 | 
			
		||||
            {
 | 
			
		||||
                Console.WriteLine("DllExporter error: ilasm.exe not found");
 | 
			
		||||
                return 1;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            string ildasmPath = FindIldasmPath();
 | 
			
		||||
            if (ildasmPath == null)
 | 
			
		||||
            {
 | 
			
		||||
                Console.WriteLine("DllExporter error: ildasm.exe not found");
 | 
			
		||||
                return 1;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            Directory.SetCurrentDirectory(targetDirectory);
 | 
			
		||||
 | 
			
		||||
            // Disassemble
 | 
			
		||||
            Process ildasmProc = new Process();
 | 
			
		||||
            string ildasmArgs = string.Format(
 | 
			
		||||
                "/nobar {0} /output=\"{1}\" \"{2}\"",
 | 
			
		||||
                isDebug ? "/linenum" : "",
 | 
			
		||||
                targetIlName,
 | 
			
		||||
                targetDllName);
 | 
			
		||||
 | 
			
		||||
            ildasmProc.StartInfo = new ProcessStartInfo(ildasmPath, ildasmArgs);
 | 
			
		||||
            ildasmProc.StartInfo.UseShellExecute = false;
 | 
			
		||||
            ildasmProc.StartInfo.CreateNoWindow = false;
 | 
			
		||||
            ildasmProc.StartInfo.RedirectStandardOutput = true;
 | 
			
		||||
            ildasmProc.Start();
 | 
			
		||||
            ildasmProc.WaitForExit();
 | 
			
		||||
 | 
			
		||||
            if (ildasmProc.ExitCode != 0)
 | 
			
		||||
            {
 | 
			
		||||
                Console.WriteLine("DllExporter error: Unable to disassemble!");
 | 
			
		||||
                Console.WriteLine(ildasmProc.StandardOutput.ReadToEnd());
 | 
			
		||||
                return ildasmProc.ExitCode;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            bool hasResource = File.Exists(targetResName);
 | 
			
		||||
 | 
			
		||||
            // Read disassembly and find methods marked with DllExport attribute
 | 
			
		||||
            List<string> lines = new List<string>(File.ReadAllLines(targetIlName));
 | 
			
		||||
            int attributeIndex = 0;
 | 
			
		||||
            int exportCount = 0;
 | 
			
		||||
            while (true)
 | 
			
		||||
            {
 | 
			
		||||
                attributeIndex = lines.FindIndex(attributeIndex, new Predicate<string>(x => x.Contains(".custom instance void") && x.Contains("DllExport::.ctor()")));
 | 
			
		||||
                if (attributeIndex < 8) break;
 | 
			
		||||
 | 
			
		||||
                int methodIndex = lines.FindLastIndex(attributeIndex, attributeIndex, new Predicate<string>(x => x.Contains(".method")));
 | 
			
		||||
                if (methodIndex == -1)
 | 
			
		||||
                {
 | 
			
		||||
                    Console.WriteLine("DllExporter error: Unable to parse disassembly (.method not found)!");
 | 
			
		||||
                    return 1;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                int functionIndex = lines.FindIndex(methodIndex, new Predicate<string>(x => x.Contains("(")));
 | 
			
		||||
                if (functionIndex == -1)
 | 
			
		||||
                {
 | 
			
		||||
                    Console.WriteLine("DllExporter error: Unable to parse disassembly (bracket not found)!");
 | 
			
		||||
                    return 1;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                int bracketPos = lines[functionIndex].IndexOf('(');
 | 
			
		||||
                int functionNamePos = lines[functionIndex].LastIndexOf(' ', bracketPos);
 | 
			
		||||
                string functionName = lines[functionIndex].Substring(functionNamePos, bracketPos - functionNamePos);
 | 
			
		||||
 | 
			
		||||
                // Change calling convention to cdecl
 | 
			
		||||
                lines[functionIndex] = string.Format("{0} modopt([mscorlib]System.Runtime.CompilerServices.CallConvCdecl) {1}", lines[functionIndex].Substring(0, functionNamePos - 1), lines[functionIndex].Substring(functionNamePos));
 | 
			
		||||
 | 
			
		||||
                int attributeBeginPos = lines[attributeIndex].IndexOf('.');
 | 
			
		||||
                string spaces = new string(' ', attributeBeginPos);
 | 
			
		||||
 | 
			
		||||
                // Replace attribute with export
 | 
			
		||||
                ++exportCount;
 | 
			
		||||
                lines[attributeIndex] = string.Format("{0}.export [{1}] as {2}", spaces, exportCount, functionName);
 | 
			
		||||
 | 
			
		||||
                ++attributeIndex;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (exportCount == 0)
 | 
			
		||||
            {
 | 
			
		||||
                Console.WriteLine("DllExporter warning: Nothing found to export.");
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Remove the DllExport class
 | 
			
		||||
            int classIndex = lines.FindIndex(new Predicate<string>(x => x.Contains(".class ") && x.EndsWith(".DllExport")));
 | 
			
		||||
            if (classIndex == -1)
 | 
			
		||||
            {
 | 
			
		||||
                Console.WriteLine("DllExporter error: Unable to parse disassembly (DllExport class not found)!");
 | 
			
		||||
                return 1;
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                int classEndIndex = lines.FindIndex(classIndex, new Predicate<string>(x => x.Contains("} // end of class") && x.EndsWith(".DllExport")));
 | 
			
		||||
                if (classEndIndex == -1)
 | 
			
		||||
                {
 | 
			
		||||
                    Console.WriteLine("DllExporter error: Unable to parse disassembly (DllExport class end not found)!");
 | 
			
		||||
                    return 1;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                lines.RemoveRange(classIndex, classEndIndex - classIndex + 2);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Write everything back
 | 
			
		||||
            File.WriteAllLines(targetIlName, lines.ToArray());
 | 
			
		||||
 | 
			
		||||
            // Reassemble
 | 
			
		||||
            Process ilasmProc = new Process();
 | 
			
		||||
            string resource = hasResource ? string.Format("/resource=\"{0}\"", targetResName) : "";
 | 
			
		||||
            string ilasmArgs = string.Format("/nologo /quiet /dll {0} {1} /output=\"{2}\" {3} \"{4}\"", isDebug ? "/debug /pdb" : "/optimize", is64 ? "/x64 /PE64" : "", targetDllName, resource, targetIlName);
 | 
			
		||||
            ilasmProc.StartInfo = new ProcessStartInfo(ilasmPath, ilasmArgs);
 | 
			
		||||
            ilasmProc.StartInfo.UseShellExecute = false;
 | 
			
		||||
            ilasmProc.StartInfo.CreateNoWindow = false;
 | 
			
		||||
            ilasmProc.StartInfo.RedirectStandardOutput = true;
 | 
			
		||||
            ilasmProc.Start();
 | 
			
		||||
            ilasmProc.WaitForExit();
 | 
			
		||||
 | 
			
		||||
            if (ilasmProc.ExitCode != 0)
 | 
			
		||||
            {
 | 
			
		||||
                Console.WriteLine("DllExporter error: Unable to assemble!");
 | 
			
		||||
                Console.WriteLine(ilasmProc.StandardOutput.ReadToEnd());
 | 
			
		||||
                return ilasmProc.ExitCode;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Cleanup
 | 
			
		||||
            File.Delete(targetIlName);
 | 
			
		||||
            File.Delete(targetResName);
 | 
			
		||||
 | 
			
		||||
            Console.WriteLine("DllExporter: Processed {0}", args[3]);
 | 
			
		||||
 | 
			
		||||
            return 0;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Finds path to ilasm.exe.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private static string FindIlasmPath(bool x64)
 | 
			
		||||
        {
 | 
			
		||||
            var arch = x64 ? DotNetFrameworkArchitecture.Bitness64 : DotNetFrameworkArchitecture.Bitness32;
 | 
			
		||||
            var path = ToolLocationHelper.GetPathToDotNetFrameworkFile(
 | 
			
		||||
                "ilasm.exe", TargetDotNetFrameworkVersion.Version20, arch);
 | 
			
		||||
            return File.Exists(path) ? path : null;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Finds path to ildasm.exe.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private static string FindIldasmPath()
 | 
			
		||||
        {
 | 
			
		||||
            var sdkPath = Environment.ExpandEnvironmentVariables(@"%ProgramFiles(x86)%\Microsoft SDKs\Windows\");
 | 
			
		||||
            if (!Directory.Exists(sdkPath))
 | 
			
		||||
            {
 | 
			
		||||
                sdkPath = Environment.ExpandEnvironmentVariables(@"%ProgramFiles%\Microsoft SDKs\Windows\");
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (!Directory.Exists(sdkPath))
 | 
			
		||||
            {
 | 
			
		||||
                throw new DirectoryNotFoundException("'Microsoft SDKs' directory not found");
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Get the version directories.
 | 
			
		||||
            var sdkVersionDirectories = Directory.GetDirectories(sdkPath);
 | 
			
		||||
            foreach (var sdkVersionDirectory in sdkVersionDirectories)
 | 
			
		||||
            {
 | 
			
		||||
                var binDirectory = Path.Combine(sdkVersionDirectory, @"bin");
 | 
			
		||||
                if (!Directory.Exists(binDirectory))
 | 
			
		||||
                {
 | 
			
		||||
                    continue;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                // Check for e.g. 'Microsoft SDKs\v8.0A\bin\ildasm.exe'.
 | 
			
		||||
                var ildasmPath = Path.Combine(binDirectory, @"ildasm.exe");
 | 
			
		||||
                if (File.Exists(ildasmPath))
 | 
			
		||||
                {
 | 
			
		||||
                    return ildasmPath;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                // Check for e.g. 'Microsoft SDKs\v8.0A\bin\NETFX 4.0 Tools\ildasm.exe'.
 | 
			
		||||
                var toolsDirectories = Directory.GetDirectories(binDirectory, "NETFX*Tools");
 | 
			
		||||
                foreach (var toolDirectory in toolsDirectories)
 | 
			
		||||
                {
 | 
			
		||||
                    ildasmPath = Path.Combine(toolDirectory, @"ildasm.exe");
 | 
			
		||||
                    if (File.Exists(ildasmPath))
 | 
			
		||||
                    {
 | 
			
		||||
                        return ildasmPath;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Build/Installer/Header.bmp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Build/Installer/Header.bmp
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 10 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								Build/Installer/Icon.ico
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Build/Installer/Icon.ico
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 25 KiB  | 
							
								
								
									
										959
									
								
								Build/Installer/Installer.nsi
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										959
									
								
								Build/Installer/Installer.nsi
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,959 @@
 | 
			
		||||
/*
 | 
			
		||||
  Copyright (C) 2012 Birunthan Mohanathas
 | 
			
		||||
 | 
			
		||||
  This program is free software; you can redistribute it and/or
 | 
			
		||||
  modify it under the terms of the GNU General Public License
 | 
			
		||||
  as published by the Free Software Foundation; either version 2
 | 
			
		||||
  of the License, or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
  This program is distributed in the hope that it will be useful,
 | 
			
		||||
  but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
  GNU General Public License for more details.
 | 
			
		||||
 | 
			
		||||
  You should have received a copy of the GNU General Public License
 | 
			
		||||
  along with this program; if not, write to the Free Software
 | 
			
		||||
  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
!verbose 3
 | 
			
		||||
!addplugindir ".\"
 | 
			
		||||
!include "MUI2.nsh"
 | 
			
		||||
!include "x64.nsh"
 | 
			
		||||
!include "FileFunc.nsh"
 | 
			
		||||
!include "WordFunc.nsh"
 | 
			
		||||
!include "WinVer.nsh"
 | 
			
		||||
!include "UAC.nsh"
 | 
			
		||||
 | 
			
		||||
!ifndef OUTFILE
 | 
			
		||||
 !define OUTFILE "Rainmeter-test.exe"
 | 
			
		||||
 !define VERSION_FULL "0.0.0.0"
 | 
			
		||||
 !define VERSION_SHORT "0.0"
 | 
			
		||||
 !define VERSION_REVISION "000"
 | 
			
		||||
!else
 | 
			
		||||
 !define INCLUDEFILES
 | 
			
		||||
!endif
 | 
			
		||||
 | 
			
		||||
Name "Rainmeter"
 | 
			
		||||
VIAddVersionKey "ProductName" "Rainmeter"
 | 
			
		||||
VIAddVersionKey "FileDescription" "Rainmeter Installer"
 | 
			
		||||
VIAddVersionKey "FileVersion" "${VERSION_FULL}"
 | 
			
		||||
VIAddVersionKey "ProductVersion" "${VERSION_FULL}"
 | 
			
		||||
VIAddVersionKey "OriginalFilename" "${OUTFILE}"
 | 
			
		||||
VIAddVersionKey "LegalCopyright" "Copyright (C) 2009-2013 - All authors"
 | 
			
		||||
VIProductVersion "${VERSION_FULL}"
 | 
			
		||||
BrandingText " "
 | 
			
		||||
SetCompressor /SOLID lzma
 | 
			
		||||
RequestExecutionLevel user
 | 
			
		||||
InstallDirRegKey HKLM "SOFTWARE\Rainmeter" ""
 | 
			
		||||
ShowInstDetails nevershow
 | 
			
		||||
AllowSkipFiles off
 | 
			
		||||
XPStyle on
 | 
			
		||||
OutFile "..\${OUTFILE}"
 | 
			
		||||
ReserveFile "${NSISDIR}\Plugins\LangDLL.dll"
 | 
			
		||||
ReserveFile "${NSISDIR}\Plugins\nsDialogs.dll"
 | 
			
		||||
ReserveFile "${NSISDIR}\Plugins\System.dll"
 | 
			
		||||
ReserveFile ".\UAC.dll"
 | 
			
		||||
 | 
			
		||||
!define REQUIREDSPACE 5 ; Minimum required space for install (in MB)
 | 
			
		||||
 | 
			
		||||
; Error levels (for silent install)
 | 
			
		||||
!define ERROR_UNSUPPORTED	3
 | 
			
		||||
!define ERROR_NOTADMIN		4
 | 
			
		||||
!define ERROR_WRITEFAIL		5
 | 
			
		||||
!define ERROR_NOVCREDIST	6
 | 
			
		||||
!define ERROR_CLOSEFAIL		7
 | 
			
		||||
 | 
			
		||||
; Additional Windows definitions
 | 
			
		||||
!define BCM_SETSHIELD 0x0000160c
 | 
			
		||||
!define PF_XMMI_INSTRUCTIONS_AVAILABLE 6
 | 
			
		||||
!define PF_XMMI64_INSTRUCTIONS_AVAILABLE 10
 | 
			
		||||
 | 
			
		||||
!define MUI_ICON ".\Icon.ico"
 | 
			
		||||
!define MUI_UNICON ".\Icon.ico"
 | 
			
		||||
!define MUI_WELCOMEFINISHPAGE_BITMAP ".\Wizard.bmp"
 | 
			
		||||
!define MUI_FINISHPAGE_RUN
 | 
			
		||||
!define MUI_FINISHPAGE_RUN_FUNCTION FinishRun
 | 
			
		||||
!define MUI_WELCOMEPAGE ; For language strings
 | 
			
		||||
 | 
			
		||||
Page custom PageWelcome PageWelcomeOnLeave
 | 
			
		||||
Page custom PageOptions PageOptionsOnLeave
 | 
			
		||||
!insertmacro MUI_PAGE_INSTFILES
 | 
			
		||||
!insertmacro MUI_PAGE_FINISH
 | 
			
		||||
 | 
			
		||||
UninstPage custom un.PageOptions un.GetOptions
 | 
			
		||||
!insertmacro MUI_UNPAGE_INSTFILES
 | 
			
		||||
 | 
			
		||||
; Include languages
 | 
			
		||||
!macro IncludeLanguage LANGUAGE CUSTOMLANGUAGE
 | 
			
		||||
	!insertmacro MUI_LANGUAGE ${LANGUAGE}
 | 
			
		||||
	!insertmacro LANGFILE_INCLUDE "..\..\Language\${CUSTOMLANGUAGE}.nsh"
 | 
			
		||||
!macroend
 | 
			
		||||
!define IncludeLanguage "!insertmacro IncludeLanguage"
 | 
			
		||||
!include "Languages.nsh"
 | 
			
		||||
 | 
			
		||||
Var NonDefaultLanguage
 | 
			
		||||
Var AutoStartup
 | 
			
		||||
Var Install64Bit
 | 
			
		||||
Var InstallPortable
 | 
			
		||||
Var un.DeleteAll
 | 
			
		||||
 | 
			
		||||
; Install
 | 
			
		||||
; --------------------------------------
 | 
			
		||||
Function .onInit
 | 
			
		||||
	${If} ${RunningX64}
 | 
			
		||||
		${EnableX64FSRedirection}
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	${IfNot} ${UAC_IsInnerInstance}
 | 
			
		||||
		${If} ${IsWin2000}
 | 
			
		||||
		${OrIf} ${IsWinXP}
 | 
			
		||||
		${AndIf} ${AtMostServicePack} 2
 | 
			
		||||
		${OrIf} ${IsWin2003}
 | 
			
		||||
		${AndIf} ${AtMostServicePack} 0
 | 
			
		||||
			${IfNot} ${Silent}
 | 
			
		||||
				MessageBox MB_OK|MB_ICONSTOP "Rainmeter requires Windows XP SP3 or later."
 | 
			
		||||
			${EndIf}
 | 
			
		||||
			SetErrorLevel ${ERROR_UNSUPPORTED}
 | 
			
		||||
			Quit
 | 
			
		||||
		${EndIf}
 | 
			
		||||
 | 
			
		||||
		System::Call 'kernel32::IsProcessorFeaturePresent(i${PF_XMMI_INSTRUCTIONS_AVAILABLE})i.r0'
 | 
			
		||||
		${If} $0 = 0
 | 
			
		||||
			${IfNot} ${Silent}
 | 
			
		||||
				MessageBox MB_OK|MB_ICONSTOP "Rainmeter requires a Pentium III or later processor."
 | 
			
		||||
			${EndIf}
 | 
			
		||||
			SetErrorLevel ${ERROR_UNSUPPORTED}
 | 
			
		||||
			Quit
 | 
			
		||||
		${EndIf}
 | 
			
		||||
 | 
			
		||||
		ReadRegStr $0 HKLM "SOFTWARE\Rainmeter" "Language"
 | 
			
		||||
		ReadRegDWORD $NonDefaultLanguage HKLM "SOFTWARE\Rainmeter" "NonDefault"
 | 
			
		||||
 | 
			
		||||
		${IfNot} ${Silent}
 | 
			
		||||
			${If} $0 == ""
 | 
			
		||||
			${OrIf} $0 <> $LANGUAGE
 | 
			
		||||
			${AndIf} $NonDefaultLanguage != 1
 | 
			
		||||
				; New install or better match
 | 
			
		||||
				LangDLL::LangDialog "$(^SetupCaption)" "Please select the installer language.$\n$(SELECTLANGUAGE)" AC ${LANGDLL_PARAMS} ""
 | 
			
		||||
				Pop $0
 | 
			
		||||
				${If} $0 == "cancel"
 | 
			
		||||
					Abort
 | 
			
		||||
				${EndIf}
 | 
			
		||||
 | 
			
		||||
				${If} $0 <> $LANGUAGE
 | 
			
		||||
					; User selected non-default language
 | 
			
		||||
					StrCpy $NonDefaultLanguage 1
 | 
			
		||||
				${EndIf}
 | 
			
		||||
			${EndIf}
 | 
			
		||||
 | 
			
		||||
			StrCpy $LANGUAGE $0
 | 
			
		||||
		${Else}
 | 
			
		||||
			${If} $0 != ""
 | 
			
		||||
				StrCpy $LANGUAGE $0
 | 
			
		||||
			${EndIf}
 | 
			
		||||
 | 
			
		||||
			${GetParameters} $R1
 | 
			
		||||
 | 
			
		||||
			ClearErrors
 | 
			
		||||
			${GetOptions} $R1 "/LANGUAGE=" $0
 | 
			
		||||
			${IfNot} ${Errors}
 | 
			
		||||
				${If} $LANGUAGE != $0
 | 
			
		||||
					StrCpy $NonDefaultLanguage 1
 | 
			
		||||
				${EndIf}
 | 
			
		||||
 | 
			
		||||
				StrCpy $LANGUAGE $0
 | 
			
		||||
			${EndIf}
 | 
			
		||||
 | 
			
		||||
			${GetOptions} $R1 "/STARTUP=" $0
 | 
			
		||||
			${If} $0 = 1
 | 
			
		||||
				StrCpy $AutoStartup 1
 | 
			
		||||
			${EndIf}
 | 
			
		||||
 | 
			
		||||
			${GetOptions} $R1 "/PORTABLE=" $0
 | 
			
		||||
			${If} $0 = 1
 | 
			
		||||
				StrCpy $InstallPortable 1
 | 
			
		||||
			${Else}
 | 
			
		||||
				${IfNot} ${UAC_IsAdmin}
 | 
			
		||||
					SetErrorLevel ${ERROR_NOTADMIN}
 | 
			
		||||
					Quit
 | 
			
		||||
				${EndIf}
 | 
			
		||||
			${EndIf}
 | 
			
		||||
 | 
			
		||||
			${GetOptions} $R1 "/VERSION=" $0
 | 
			
		||||
			${If} $0 = 64
 | 
			
		||||
				StrCpy $Install64Bit 1
 | 
			
		||||
 | 
			
		||||
				${If} $INSTDIR == ""
 | 
			
		||||
					StrCpy $INSTDIR "$PROGRAMFILES64\Rainmeter"
 | 
			
		||||
				${EndIf}
 | 
			
		||||
			${Else}
 | 
			
		||||
				${If} $INSTDIR == ""
 | 
			
		||||
					StrCpy $INSTDIR "$PROGRAMFILES\Rainmeter"
 | 
			
		||||
				${EndIf}
 | 
			
		||||
			${EndIf}
 | 
			
		||||
 | 
			
		||||
			ClearErrors
 | 
			
		||||
			CreateDirectory "$INSTDIR"
 | 
			
		||||
			WriteINIStr "$INSTDIR\writetest~.rm" "1" "1" "1"
 | 
			
		||||
			Delete "$INSTDIR\writetest~.rm"
 | 
			
		||||
 | 
			
		||||
			${If} ${Errors}
 | 
			
		||||
				RMDir "$INSTDIR"
 | 
			
		||||
				SetErrorLevel ${ERROR_WRITEFAIL}
 | 
			
		||||
				Quit
 | 
			
		||||
			${EndIf}
 | 
			
		||||
		${EndIf}
 | 
			
		||||
 | 
			
		||||
		; If the language was set to a non-existent language, reset it back to English.
 | 
			
		||||
		${WordFind} ",${LANGUAGE_IDS}" ",$LANGUAGE," "E+1{" $0
 | 
			
		||||
		${If} ${Errors}
 | 
			
		||||
			StrCpy $LANGUAGE "1033"
 | 
			
		||||
		${EndIf}
 | 
			
		||||
	${Else}
 | 
			
		||||
		; Exchange settings with user instance
 | 
			
		||||
		!insertmacro UAC_AsUser_Call Function ExchangeSettings ${UAC_SYNCREGISTERS}
 | 
			
		||||
		StrCpy $AutoStartup $1
 | 
			
		||||
		StrCpy $Install64Bit $2
 | 
			
		||||
		StrCpy $NonDefaultLanguage $3
 | 
			
		||||
		StrCpy $LANGUAGE $4
 | 
			
		||||
		StrCpy $INSTDIR $5
 | 
			
		||||
	${EndIf}
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Function ExchangeSettings
 | 
			
		||||
	StrCpy $1 $AutoStartup
 | 
			
		||||
	StrCpy $2 $Install64Bit
 | 
			
		||||
	StrCpy $3 $NonDefaultLanguage
 | 
			
		||||
	StrCpy $4 $LANGUAGE
 | 
			
		||||
	StrCpy $5 $INSTDIR
 | 
			
		||||
	HideWindow
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Function PageWelcome
 | 
			
		||||
	${If} ${UAC_IsInnerInstance}
 | 
			
		||||
		${If} ${UAC_IsAdmin}
 | 
			
		||||
			; Skip page
 | 
			
		||||
			Abort
 | 
			
		||||
		${Else}
 | 
			
		||||
			MessageBox MB_OK|MB_ICONSTOP "$(ADMINERROR) (Inner)"
 | 
			
		||||
			Quit
 | 
			
		||||
		${EndIf}
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	!insertmacro MUI_HEADER_TEXT "$(INSTALLOPTIONS)" "$(^ComponentsSubText1)"
 | 
			
		||||
	nsDialogs::Create 1044
 | 
			
		||||
	Pop $0
 | 
			
		||||
	nsDialogs::SetRTL $(^RTL)
 | 
			
		||||
	SetCtlColors $0 "" "${MUI_BGCOLOR}"
 | 
			
		||||
 | 
			
		||||
	${NSD_CreateBitmap} 0u 0u 109u 193u ""
 | 
			
		||||
	Pop $0
 | 
			
		||||
	${NSD_SetImage} $0 "$PLUGINSDIR\modern-wizard.bmp" $R0
 | 
			
		||||
 | 
			
		||||
	${NSD_CreateLabel} 120u 10u 195u 38u "$(MUI_TEXT_WELCOME_INFO_TITLE)"
 | 
			
		||||
	Pop $0
 | 
			
		||||
	SetCtlColors $0 "" "${MUI_BGCOLOR}"
 | 
			
		||||
	CreateFont $1 "$(^Font)" "12" "700"
 | 
			
		||||
	SendMessage $0 ${WM_SETFONT} $1 0
 | 
			
		||||
 | 
			
		||||
	${NSD_CreateLabel} 120u 55u 195u 12u "$(^ComponentsSubText1)"
 | 
			
		||||
	Pop $0
 | 
			
		||||
	SetCtlColors $0 "" "${MUI_BGCOLOR}"
 | 
			
		||||
 | 
			
		||||
	${NSD_CreateRadioButton} 120u 70u 205u 12u "$(STANDARDINST)"
 | 
			
		||||
	Pop $R1
 | 
			
		||||
	SetCtlColors $R1 "" "${MUI_BGCOLOR}"
 | 
			
		||||
	${NSD_AddStyle} $R1 ${WS_GROUP}
 | 
			
		||||
	SendMessage $R1 ${WM_SETFONT} $mui.Header.Text.Font 0
 | 
			
		||||
 | 
			
		||||
	${NSD_CreateLabel} 132u 82u 185u 24u "$(STANDARDINSTDESC)"
 | 
			
		||||
	Pop $0
 | 
			
		||||
	SetCtlColors $0 "" "${MUI_BGCOLOR}"
 | 
			
		||||
 | 
			
		||||
	${NSD_CreateRadioButton} 120u 106u 310u 12u "$(PORTABLEINST)"
 | 
			
		||||
	Pop $R2
 | 
			
		||||
	SetCtlColors $R2 "" "${MUI_BGCOLOR}"
 | 
			
		||||
	${NSD_AddStyle} $R2 ${WS_TABSTOP}
 | 
			
		||||
	SendMessage $R2 ${WM_SETFONT} $mui.Header.Text.Font 0
 | 
			
		||||
 | 
			
		||||
	${NSD_CreateLabel} 132u 118u 185u 52u "$(PORTABLEINSTDESC)"
 | 
			
		||||
	Pop $0
 | 
			
		||||
	SetCtlColors $0 "" "${MUI_BGCOLOR}"
 | 
			
		||||
 | 
			
		||||
	${If} $InstallPortable = 1
 | 
			
		||||
		${NSD_Check} $R2
 | 
			
		||||
	${Else}
 | 
			
		||||
		${NSD_Check} $R1
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	Call muiPageLoadFullWindow
 | 
			
		||||
 | 
			
		||||
	nsDialogs::Show
 | 
			
		||||
	${NSD_FreeImage} $R0
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Function PageWelcomeOnLeave
 | 
			
		||||
	${NSD_GetState} $R2 $InstallPortable
 | 
			
		||||
	Call muiPageUnloadFullWindow
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Function PageOptions
 | 
			
		||||
	${If} ${UAC_IsInnerInstance}
 | 
			
		||||
	${AndIf} ${UAC_IsAdmin}
 | 
			
		||||
		; Skip page
 | 
			
		||||
		Abort
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	!insertmacro MUI_HEADER_TEXT "$(INSTALLOPTIONS)" "$(INSTALLOPTIONSDESC)"
 | 
			
		||||
	nsDialogs::Create 1018
 | 
			
		||||
	nsDialogs::SetRTL $(^RTL)
 | 
			
		||||
 | 
			
		||||
	${NSD_CreateGroupBox} 0 0u -1u 36u "$(^DirSubText)"
 | 
			
		||||
 | 
			
		||||
	${NSD_CreateDirRequest} 6u 14u 232u 14u ""
 | 
			
		||||
	Pop $R0
 | 
			
		||||
	${NSD_OnChange} $R0 PageOptionsDirectoryOnChange
 | 
			
		||||
 | 
			
		||||
	${NSD_CreateBrowseButton} 242u 14u 50u 14u "$(^BrowseBtn)"
 | 
			
		||||
	Pop $R1
 | 
			
		||||
	${NSD_OnClick} $R1 PageOptionsBrowseOnClick
 | 
			
		||||
 | 
			
		||||
	StrCpy $1 0
 | 
			
		||||
 | 
			
		||||
	StrCpy $R2 0
 | 
			
		||||
	${If} ${RunningX64}
 | 
			
		||||
		${If} $InstallPortable = 1
 | 
			
		||||
		${OrIf} $INSTDIR == ""
 | 
			
		||||
			${NSD_CreateCheckBox} 6u 54u 285u 12u "$(INSTALL64BIT)"
 | 
			
		||||
			Pop $R2
 | 
			
		||||
			StrCpy $1 30u
 | 
			
		||||
		${EndIf}
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	${If} $InstallPortable <> 1
 | 
			
		||||
		${If} $1 = 0
 | 
			
		||||
			StrCpy $0 54u
 | 
			
		||||
			StrCpy $1 30u
 | 
			
		||||
		${Else}
 | 
			
		||||
			StrCpy $0 66u
 | 
			
		||||
			StrCpy $1 42u
 | 
			
		||||
		${EndIf}
 | 
			
		||||
 | 
			
		||||
		${NSD_CreateCheckbox} 6u $0 285u 12u "$(AUTOSTARTUP)"
 | 
			
		||||
		Pop $R3
 | 
			
		||||
 | 
			
		||||
		${If} $INSTDIR == ""
 | 
			
		||||
			${NSD_Check} $R3
 | 
			
		||||
		${Else}
 | 
			
		||||
			SetShellVarContext all
 | 
			
		||||
			${If} ${FileExists} "$SMSTARTUP\Rainmeter.lnk"
 | 
			
		||||
				${NSD_Check} $R3
 | 
			
		||||
			${EndIf}
 | 
			
		||||
 | 
			
		||||
			SetShellVarContext current
 | 
			
		||||
			${If} ${FileExists} "$SMSTARTUP\Rainmeter.lnk"
 | 
			
		||||
				${NSD_Check} $R3
 | 
			
		||||
			${EndIf}
 | 
			
		||||
		${EndIf}
 | 
			
		||||
	${Else}
 | 
			
		||||
		StrCpy $R3 0
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	${If} $1 <> 0
 | 
			
		||||
		${NSD_CreateGroupBox} 0 42u -1u $1 "$(ADDITIONALOPTIONS)"
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	; Set default directory
 | 
			
		||||
	${If} $InstallPortable = 1
 | 
			
		||||
		${GetRoot} "$WINDIR" $0
 | 
			
		||||
		${NSD_SetText} $R0 "$0\Rainmeter"
 | 
			
		||||
	${Else}
 | 
			
		||||
		; Disable Directory editbox and Browse button if already installed
 | 
			
		||||
		SendMessage $R0 ${EM_SETREADONLY} 1 0
 | 
			
		||||
 | 
			
		||||
		${If} $INSTDIR != ""
 | 
			
		||||
			EnableWindow $R1 0
 | 
			
		||||
			${NSD_SetText} $R0 "$INSTDIR"
 | 
			
		||||
		${Else}
 | 
			
		||||
			; Fresh install
 | 
			
		||||
			${If} ${RunningX64}
 | 
			
		||||
				${NSD_SetText} $R0 "$PROGRAMFILES64\Rainmeter"
 | 
			
		||||
				${NSD_Check} $R2
 | 
			
		||||
			${Else}
 | 
			
		||||
				${NSD_SetText} $R0 "$PROGRAMFILES\Rainmeter"
 | 
			
		||||
			${EndIf}
 | 
			
		||||
		${EndIf}
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	; Show UAC shield on Install button if requiredd
 | 
			
		||||
	GetDlgItem $0 $HWNDPARENT 1
 | 
			
		||||
	${If} $InstallPortable = 1
 | 
			
		||||
		SendMessage $0 ${BCM_SETSHIELD} 0 0
 | 
			
		||||
	${Else}
 | 
			
		||||
		SendMessage $0 ${BCM_SETSHIELD} 0 1
 | 
			
		||||
 | 
			
		||||
		; Hide Back button
 | 
			
		||||
		GetDlgItem $0 $HWNDPARENT 3
 | 
			
		||||
		ShowWindow $0 ${SW_HIDE}
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	nsDialogs::Show
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Function PageOptionsDirectoryOnChange
 | 
			
		||||
	${NSD_GetText} $R0 $0
 | 
			
		||||
 | 
			
		||||
	; Disable Install button if not enough space
 | 
			
		||||
	GetDlgItem $1 $HWNDPARENT 1
 | 
			
		||||
	${GetRoot} $0 $2
 | 
			
		||||
	${DriveSpace} "$2\" "/D=F /S=M" $3
 | 
			
		||||
	${If} $3 < ${REQUIREDSPACE}
 | 
			
		||||
		EnableWindow $1 0
 | 
			
		||||
	${Else}
 | 
			
		||||
		EnableWindow $1 1
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	StrCpy $Install64Bit 0
 | 
			
		||||
	${If} ${RunningX64}
 | 
			
		||||
		${If} ${FileExists} "$0\Rainmeter.exe"
 | 
			
		||||
			MoreInfo::GetProductVersion "$0\Rainmeter.exe"
 | 
			
		||||
			Pop $0
 | 
			
		||||
			StrCpy $0 $0 2 -7
 | 
			
		||||
			${If} $0 == 64
 | 
			
		||||
				StrCpy $Install64Bit 1
 | 
			
		||||
			${EndIf}
 | 
			
		||||
 | 
			
		||||
			${If} $R2 != 0
 | 
			
		||||
				${NSD_SetState} $R2 $Install64Bit
 | 
			
		||||
				EnableWindow $R2 0
 | 
			
		||||
			${EndIf}
 | 
			
		||||
		${Else}
 | 
			
		||||
			${If} $R2 != 0
 | 
			
		||||
				EnableWindow $R2 1
 | 
			
		||||
			${EndIf}
 | 
			
		||||
		${EndIf}
 | 
			
		||||
	${EndIf}
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Function PageOptionsBrowseOnClick
 | 
			
		||||
	${NSD_GetText} $R0 $0
 | 
			
		||||
	nsDialogs::SelectFolderDialog "$(^DirBrowseText)" $0
 | 
			
		||||
	Pop $1
 | 
			
		||||
	${If} $1 != error
 | 
			
		||||
		${NSD_SetText} $R0 $1
 | 
			
		||||
	${EndIf}
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Function PageOptionsOnLeave
 | 
			
		||||
	; Verify that selected folder is writable
 | 
			
		||||
	${NSD_GetText} $R0 $0
 | 
			
		||||
	${If} $InstallPortable = 1
 | 
			
		||||
		ClearErrors
 | 
			
		||||
		CreateDirectory "$0"
 | 
			
		||||
		WriteINIStr "$0\writetest~.rm" "1" "1" "1"
 | 
			
		||||
		Delete "$0\writetest~.rm"
 | 
			
		||||
 | 
			
		||||
		${If} ${Errors}
 | 
			
		||||
			RMDir "$0"
 | 
			
		||||
			MessageBox MB_OK|MB_ICONEXCLAMATION "$(WRITEERROR)"
 | 
			
		||||
			Abort
 | 
			
		||||
		${EndIf}
 | 
			
		||||
 | 
			
		||||
		RMDir "$0"
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	StrCpy $INSTDIR $0
 | 
			
		||||
 | 
			
		||||
	GetDlgItem $0 $HWNDPARENT 1
 | 
			
		||||
	EnableWindow $0 0
 | 
			
		||||
 | 
			
		||||
	${If} $R2 != 0
 | 
			
		||||
		${NSD_GetState} $R2 $Install64Bit
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	${If} $R3 != 0
 | 
			
		||||
		${NSD_GetState} $R3 $AutoStartup
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	${If} $InstallPortable <> 1
 | 
			
		||||
		${IfNot} ${UAC_IsAdmin}
 | 
			
		||||
			; UAC_IsAdmin seems to return incorrect result sometimes. Recheck with UserInfo::GetAccountType to be sure.
 | 
			
		||||
			UserInfo::GetAccountType
 | 
			
		||||
			Pop $0
 | 
			
		||||
			${If} $0 != "Admin"
 | 
			
		||||
UAC_TryAgain:
 | 
			
		||||
				!insertmacro UAC_RunElevated
 | 
			
		||||
				${Switch} $0
 | 
			
		||||
				${Case} 0
 | 
			
		||||
					${IfThen} $1 = 1 ${|} Quit ${|}
 | 
			
		||||
					${IfThen} $3 <> 0 ${|} ${Break} ${|}
 | 
			
		||||
					${If} $1 = 3
 | 
			
		||||
						MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(ADMINERROR)" /SD IDNO IDOK UAC_TryAgain IDNO 0
 | 
			
		||||
					${EndIf}
 | 
			
		||||
				${Case} 1223
 | 
			
		||||
					Quit
 | 
			
		||||
				${Case} 1062
 | 
			
		||||
					MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(LOGONERROR)"
 | 
			
		||||
					Quit
 | 
			
		||||
				${Default}
 | 
			
		||||
					MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(UACERROR) ($0)"
 | 
			
		||||
					Quit
 | 
			
		||||
				${EndSwitch}
 | 
			
		||||
			${EndIf}
 | 
			
		||||
		${EndIf}
 | 
			
		||||
	${EndIf}
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
!macro InstallFiles DIR ARCH
 | 
			
		||||
	SetOutPath "$INSTDIR"
 | 
			
		||||
	File "..\..\${DIR}-Release\Rainmeter.exe"
 | 
			
		||||
	File "..\..\${DIR}-Release\Rainmeter.dll"
 | 
			
		||||
	File "..\..\${DIR}-Release\SkinInstaller.exe"
 | 
			
		||||
	File "..\..\${DIR}-Release\SkinInstaller.dll"
 | 
			
		||||
 | 
			
		||||
	SetOutPath "$INSTDIR\Plugins"
 | 
			
		||||
	File /x *Example*.dll "..\..\${DIR}-Release\Plugins\*.dll"
 | 
			
		||||
 | 
			
		||||
	SetOutPath "$INSTDIR\Runtime"
 | 
			
		||||
	File "$%VS120COMNTOOLS%..\..\VC\redist\${ARCH}\Microsoft.VC120.CRT\msvcp120.dll"
 | 
			
		||||
	File "$%VS120COMNTOOLS%..\..\VC\redist\${ARCH}\Microsoft.VC120.CRT\msvcr120.dll"
 | 
			
		||||
!macroend
 | 
			
		||||
 | 
			
		||||
!macro RemoveStartMenuShortcuts STARTMENUPATH
 | 
			
		||||
	Delete "${STARTMENUPATH}\Rainmeter.lnk"
 | 
			
		||||
	Delete "${STARTMENUPATH}\Rainmeter Help.lnk"
 | 
			
		||||
	Delete "${STARTMENUPATH}\Rainmeter Help.URL"
 | 
			
		||||
	Delete "${STARTMENUPATH}\Remove Rainmeter.lnk"
 | 
			
		||||
	Delete "${STARTMENUPATH}\RainThemes.lnk"
 | 
			
		||||
	Delete "${STARTMENUPATH}\RainThemes Help.lnk"
 | 
			
		||||
	Delete "${STARTMENUPATH}\RainBrowser.lnk"
 | 
			
		||||
	Delete "${STARTMENUPATH}\RainBackup.lnk"
 | 
			
		||||
	Delete "${STARTMENUPATH}\Rainstaller.lnk"
 | 
			
		||||
	Delete "${STARTMENUPATH}\Skin Installer.lnk"
 | 
			
		||||
	Delete "${STARTMENUPATH}\Rainstaller Help.lnk"
 | 
			
		||||
	RMDir "${STARTMENUPATH}"
 | 
			
		||||
!macroend
 | 
			
		||||
 | 
			
		||||
Section
 | 
			
		||||
	SetOutPath "$PLUGINSDIR"
 | 
			
		||||
	SetShellVarContext current
 | 
			
		||||
 | 
			
		||||
	Var /GLOBAL InstArc
 | 
			
		||||
	${If} $Install64Bit = 1
 | 
			
		||||
		StrCpy $InstArc "x64"
 | 
			
		||||
	${Else}
 | 
			
		||||
		StrCpy $InstArc "x86"
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	${If} $InstallPortable <> 1
 | 
			
		||||
	${AndIfNot} ${AtLeastWinVista}
 | 
			
		||||
		; Download and install .NET if required
 | 
			
		||||
		ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727" "Install"
 | 
			
		||||
		${If} $0 <> 1
 | 
			
		||||
			${If} $Install64Bit <> 1
 | 
			
		||||
				NSISdl::download /TIMEOUT=30000 "http://download.microsoft.com/download/5/6/7/567758a3-759e-473e-bf8f-52154438565a/dotnetfx.exe" "$PLUGINSDIR\dotnetfx.exe"
 | 
			
		||||
			${Else}
 | 
			
		||||
				NSISdl::download /TIMEOUT=30000 "http://download.microsoft.com/download/a/3/f/a3f1bf98-18f3-4036-9b68-8e6de530ce0a/NetFx64.exe" "$PLUGINSDIR\dotnetfx.exe"
 | 
			
		||||
			${EndIf}
 | 
			
		||||
			Pop $0
 | 
			
		||||
 | 
			
		||||
			${If} $0 == "success"
 | 
			
		||||
				ExecWait '"$PLUGINSDIR\dotnetfx.exe" /q:a /c:"install /q"' $0
 | 
			
		||||
				Delete "$PLUGINSDIR\dotnetfx.exe"
 | 
			
		||||
 | 
			
		||||
				${If} $0 = 3010
 | 
			
		||||
					SetRebootFlag true
 | 
			
		||||
				${ElseIf} $0 <> 0
 | 
			
		||||
					MessageBox MB_OK|MB_ICONSTOP "$(DOTNETINSTERROR)"
 | 
			
		||||
					Quit
 | 
			
		||||
				${EndIf}
 | 
			
		||||
			${ElseIf} $0 == "cancel"
 | 
			
		||||
				Quit
 | 
			
		||||
			${Else}
 | 
			
		||||
				MessageBox MB_OK|MB_ICONSTOP "$(DOTNETINSTERROR)"
 | 
			
		||||
				Quit
 | 
			
		||||
			${EndIf}
 | 
			
		||||
		${EndIf}
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	SetOutPath "$INSTDIR"
 | 
			
		||||
 | 
			
		||||
	; Close Rainmeter (and wait up to five seconds)
 | 
			
		||||
	${ForEach} $0 10 0 - 1
 | 
			
		||||
		FindWindow $1 "DummyRainWClass" "Rainmeter control window"
 | 
			
		||||
		ClearErrors
 | 
			
		||||
		Delete "$INSTDIR\Rainmeter.exe"
 | 
			
		||||
		${If} $1 = 0
 | 
			
		||||
		${AndIfNot} ${Errors}
 | 
			
		||||
			${Break}
 | 
			
		||||
		${EndIf}
 | 
			
		||||
 | 
			
		||||
		SendMessage $1 ${WM_CLOSE} 0 0
 | 
			
		||||
 | 
			
		||||
		${If} $0 = 0
 | 
			
		||||
			${If} ${Silent}
 | 
			
		||||
				SetErrorLevel ${ERROR_CLOSEFAIL}
 | 
			
		||||
				Quit
 | 
			
		||||
			${Else}
 | 
			
		||||
				MessageBox MB_RETRYCANCEL|MB_ICONSTOP "$(RAINMETERCLOSEERROR)" IDRETRY +2
 | 
			
		||||
				Quit
 | 
			
		||||
			${EndIf}
 | 
			
		||||
		${EndIf}
 | 
			
		||||
 | 
			
		||||
		Sleep 500
 | 
			
		||||
	${Next}
 | 
			
		||||
 | 
			
		||||
	; Move Rainmeter.ini to %APPDATA% if needed
 | 
			
		||||
	${IfNot} ${Silent}
 | 
			
		||||
	${AndIf} ${FileExists} "$INSTDIR\Rainmeter.ini"
 | 
			
		||||
		${If} $InstallPortable <> 1
 | 
			
		||||
			${If} $Install64Bit = 1
 | 
			
		||||
			${AndIf} "$INSTDIR" == "$PROGRAMFILES64\Rainmeter"
 | 
			
		||||
			${OrIf} "$INSTDIR" == "$PROGRAMFILES\Rainmeter"
 | 
			
		||||
				MessageBox MB_YESNO|MB_ICONEXCLAMATION "$(SETTINGSFILEERROR)" IDNO SkipIniMove
 | 
			
		||||
				StrCpy $0 1
 | 
			
		||||
				!insertmacro UAC_AsUser_Call Function CopyIniToAppData ${UAC_SYNCREGISTERS}
 | 
			
		||||
				${If} $0 = 1
 | 
			
		||||
					; Copy succeeded
 | 
			
		||||
					Delete "$INSTDIR\Rainmeter.ini"
 | 
			
		||||
				${Else}
 | 
			
		||||
					MessageBox MB_OK|MB_ICONSTOP "$(SETTINGSMOVEERROR)"
 | 
			
		||||
				${EndIf}
 | 
			
		||||
SkipIniMove:
 | 
			
		||||
			${EndIf}
 | 
			
		||||
		${Else}
 | 
			
		||||
			ReadINIStr $0 "$INSTDIR\Rainmeter.ini" "Rainmeter" "SkinPath"
 | 
			
		||||
			${If} $0 == "$INSTDIR\Skins\"
 | 
			
		||||
				DeleteINIStr "$INSTDIR\Rainmeter.ini" "Rainmeter" "SkinPath"
 | 
			
		||||
			${EndIf}
 | 
			
		||||
		${EndIf}
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	SetOutPath "$INSTDIR"
 | 
			
		||||
 | 
			
		||||
	; Cleanup old stuff
 | 
			
		||||
	Delete "$INSTDIR\Rainmeter.chm"
 | 
			
		||||
	Delete "$INSTDIR\Default.ini"
 | 
			
		||||
	Delete "$INSTDIR\Launcher.exe"
 | 
			
		||||
	Delete "$INSTDIR\Defaults\Plugins\FileView.dll"
 | 
			
		||||
	RMDir /r "$INSTDIR\Addons\Rainstaller"
 | 
			
		||||
	RMDir /r "$INSTDIR\Addons\RainBackup"
 | 
			
		||||
 | 
			
		||||
	${If} $InstallPortable <> 1
 | 
			
		||||
		CreateDirectory "$INSTDIR\Defaults"
 | 
			
		||||
		Rename "$INSTDIR\Skins" "$INSTDIR\Defaults\Skins"
 | 
			
		||||
 | 
			
		||||
		Rename "$INSTDIR\Themes" "$INSTDIR\Defaults\Layouts"
 | 
			
		||||
		Rename "$INSTDIR\Defaults\Themes" "$INSTDIR\Defaults\Layouts"
 | 
			
		||||
		${Locate} "$INSTDIR\Defaults\Layouts" "/L=F /M=Rainmeter.thm /G=1" "RenameToRainmeterIni"
 | 
			
		||||
 | 
			
		||||
		${If} ${FileExists} "$INSTDIR\Addons\Backup"
 | 
			
		||||
		${OrIf} ${FileExists} "$INSTDIR\Plugins\Backup"
 | 
			
		||||
			CreateDirectory "$INSTDIR\Defaults\Backup"
 | 
			
		||||
			Rename "$INSTDIR\Addons\Backup" "$INSTDIR\Defaults\Backup\Addons"
 | 
			
		||||
			Rename "$INSTDIR\Plugins\Backup" "$INSTDIR\Defaults\Backup\Plugins"
 | 
			
		||||
		${EndIf}
 | 
			
		||||
 | 
			
		||||
		Rename "$INSTDIR\Addons" "$INSTDIR\Defaults\Addons"
 | 
			
		||||
		${Locate} "$INSTDIR\Plugins" "/L=F /M=*.dll /G=0" "MoveNonDefaultPlugins"
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
!ifdef INCLUDEFILES
 | 
			
		||||
	File "..\..\Application\Rainmeter.exe.config"
 | 
			
		||||
 | 
			
		||||
	${If} $instArc == "x86"
 | 
			
		||||
		!insertmacro InstallFiles "x32" "x86"
 | 
			
		||||
	${Else}
 | 
			
		||||
		!insertmacro InstallFiles "x64" "x64"
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	RMDir /r "$INSTDIR\Languages"
 | 
			
		||||
	SetOutPath "$INSTDIR\Languages"
 | 
			
		||||
	File "..\..\x32-Release\Languages\*.*"
 | 
			
		||||
 | 
			
		||||
	SetOutPath "$INSTDIR\Defaults\Skins"
 | 
			
		||||
	RMDir /r "$INSTDIR\Skins\illustro"
 | 
			
		||||
	Delete "$INSTDIR\Skins\*.txt"
 | 
			
		||||
	File /r "..\Skins\*.*"
 | 
			
		||||
 | 
			
		||||
	SetOutPath "$INSTDIR\Defaults\Layouts"
 | 
			
		||||
	File /r "..\Layouts\*.*"
 | 
			
		||||
!endif
 | 
			
		||||
 | 
			
		||||
	SetOutPath "$INSTDIR"
 | 
			
		||||
 | 
			
		||||
	${If} $InstallPortable <> 1
 | 
			
		||||
		ReadRegStr $0 HKLM "SOFTWARE\Rainmeter" ""
 | 
			
		||||
		WriteRegStr HKLM "SOFTWARE\Rainmeter" "" "$INSTDIR"
 | 
			
		||||
		WriteRegStr HKLM "SOFTWARE\Rainmeter" "Language" "$LANGUAGE"
 | 
			
		||||
		WriteRegDWORD HKLM "SOFTWARE\Rainmeter" "NonDefault" $NonDefaultLanguage
 | 
			
		||||
 | 
			
		||||
		WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "DisplayName" "Rainmeter"
 | 
			
		||||
		WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "DisplayIcon" "$INSTDIR\Rainmeter.exe,0"
 | 
			
		||||
		WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "URLInfoAbout" "http://rainmeter.net"
 | 
			
		||||
		WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "UninstallString" "$INSTDIR\uninst.exe"
 | 
			
		||||
 | 
			
		||||
!ifdef BETA
 | 
			
		||||
		WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "DisplayVersion" "${VERSION_SHORT} beta r${VERSION_REVISION}"
 | 
			
		||||
!else
 | 
			
		||||
		WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "DisplayVersion" "${VERSION_SHORT} r${VERSION_REVISION}"
 | 
			
		||||
!endif
 | 
			
		||||
 | 
			
		||||
		; Create .rmskin association
 | 
			
		||||
		WriteRegStr HKCR ".rmskin" "" "Rainmeter.SkinInstaller"
 | 
			
		||||
		DeleteRegKey HKCR "Rainmeter skin"	; Old key
 | 
			
		||||
		WriteRegStr HKCR "Rainmeter.SkinInstaller" "" "Rainmeter Skin Installer"
 | 
			
		||||
		WriteRegStr HKCR "Rainmeter.SkinInstaller\shell" "" "open"
 | 
			
		||||
		WriteRegStr HKCR "Rainmeter.SkinInstaller\DefaultIcon" "" "$INSTDIR\SkinInstaller.exe,0"
 | 
			
		||||
		WriteRegStr HKCR "Rainmeter.SkinInstaller\shell\open\command" "" '"$INSTDIR\SkinInstaller.exe" %1'
 | 
			
		||||
		WriteRegStr HKCR "Rainmeter.SkinInstaller\shell\edit" "" "Install Rainmeter skin"
 | 
			
		||||
		WriteRegStr HKCR "Rainmeter.SkinInstaller\shell\edit\command" "" '"$INSTDIR\SkinInstaller.exe" %1'
 | 
			
		||||
 | 
			
		||||
		; If .inc isn't associated, use the .ini association for it.
 | 
			
		||||
		ReadRegStr $1 HKCR ".inc" ""
 | 
			
		||||
		${If} $1 == ""
 | 
			
		||||
			ReadRegStr $1 HKCR ".ini" ""
 | 
			
		||||
			${If} $1 != ""
 | 
			
		||||
				WriteRegStr HKCR ".inc" "" "$1"
 | 
			
		||||
			${EndIf}
 | 
			
		||||
		${EndIf}
 | 
			
		||||
 | 
			
		||||
		; Refresh shell icons if new install
 | 
			
		||||
		${If} $0 == ""
 | 
			
		||||
			${RefreshShellIcons}
 | 
			
		||||
		${EndIf}
 | 
			
		||||
 | 
			
		||||
		; Remove all start menu shortcuts
 | 
			
		||||
		SetShellVarContext all
 | 
			
		||||
		Call RemoveStartMenuShortcuts
 | 
			
		||||
 | 
			
		||||
		StrCpy $0 "$SMPROGRAMS\Rainmeter.lnk"
 | 
			
		||||
		${If} ${FileExists} "$SMPROGRAMS\Rainmeter"
 | 
			
		||||
			StrCpy $0 "$SMPROGRAMS\Rainmeter\Rainmeter.lnk"
 | 
			
		||||
		${EndIf}
 | 
			
		||||
		CreateShortcut "$0" "$INSTDIR\Rainmeter.exe" "" "$INSTDIR\Rainmeter.exe" 0
 | 
			
		||||
 | 
			
		||||
		${If} $AutoStartup = 1
 | 
			
		||||
			${If} ${FileExists} "$SMSTARTUP\Rainmeter.lnk"
 | 
			
		||||
				; Remove user shortcut to prevent duplicate with all users shortcut
 | 
			
		||||
				!insertmacro UAC_AsUser_Call Function RemoveUserStartupShortcut ${UAC_SYNCREGISTERS}
 | 
			
		||||
			${Else}
 | 
			
		||||
				!insertmacro UAC_AsUser_Call Function CreateUserStartupShortcut ${UAC_SYNCREGISTERS}
 | 
			
		||||
			${EndIf}
 | 
			
		||||
		${EndIf}
 | 
			
		||||
 | 
			
		||||
		SetShellVarContext current
 | 
			
		||||
		Call RemoveStartMenuShortcuts
 | 
			
		||||
 | 
			
		||||
		!insertmacro UAC_AsUser_Call Function RemoveStartMenuShortcuts ${UAC_SYNCREGISTERS}
 | 
			
		||||
 | 
			
		||||
		WriteUninstaller "$INSTDIR\uninst.exe"
 | 
			
		||||
	${Else}
 | 
			
		||||
		${IfNot} ${FileExists} "Rainmeter.ini"
 | 
			
		||||
			CopyFiles /SILENT "$INSTDIR\Defaults\Layouts\illustro default\Rainmeter.ini" "$INSTDIR\Rainmeter.ini"
 | 
			
		||||
		${EndIf}
 | 
			
		||||
 | 
			
		||||
		WriteINIStr "$INSTDIR\Rainmeter.ini" "Rainmeter" "Language" "$LANGUAGE"
 | 
			
		||||
	${EndIf}
 | 
			
		||||
SectionEnd
 | 
			
		||||
 | 
			
		||||
Function CopyIniToAppData
 | 
			
		||||
	ClearErrors
 | 
			
		||||
	CreateDirectory "$APPDATA\Rainmeter"
 | 
			
		||||
	CopyFiles /SILENT "$INSTDIR\Rainmeter.ini" "$APPDATA\Rainmeter\Rainmeter.ini"
 | 
			
		||||
	${If} ${Errors}
 | 
			
		||||
		StrCpy $0 0
 | 
			
		||||
	${EndIf}
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Function RenameToRainmeterIni
 | 
			
		||||
	${If} ${FileExists} "$R8\Rainmeter.ini"
 | 
			
		||||
		Delete "$R8\Rainmeter.thm"
 | 
			
		||||
	${Else}
 | 
			
		||||
		Rename "$R9" "$R8\Rainmeter.ini"
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	Push $0
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Function MoveNonDefaultPlugins
 | 
			
		||||
	${If} $R7 != "AdvancedCPU.dll"
 | 
			
		||||
	${AndIf} $R7 != "CoreTemp.dll"
 | 
			
		||||
	${AndIf} $R7 != "FileView.dll"
 | 
			
		||||
	${AndIf} $R7 != "FolderInfo.dll"
 | 
			
		||||
	${AndIf} $R7 != "InputText.dll"
 | 
			
		||||
	${AndIf} $R7 != "iTunesPlugin.dll"
 | 
			
		||||
	${AndIf} $R7 != "MediaKey.dll"
 | 
			
		||||
	${AndIf} $R7 != "NowPlaying.dll"
 | 
			
		||||
	${AndIf} $R7 != "PerfMon.dll"
 | 
			
		||||
	${AndIf} $R7 != "PingPlugin.dll"
 | 
			
		||||
	${AndIf} $R7 != "PowerPlugin.dll"
 | 
			
		||||
	${AndIf} $R7 != "Process.dll"
 | 
			
		||||
	${AndIf} $R7 != "QuotePlugin.dll"
 | 
			
		||||
	${AndIf} $R7 != "RecycleManager.dll"
 | 
			
		||||
	${AndIf} $R7 != "ResMon.dll"
 | 
			
		||||
	${AndIf} $R7 != "SpeedFanPlugin.dll"
 | 
			
		||||
	${AndIf} $R7 != "SysInfo.dll"
 | 
			
		||||
	${AndIf} $R7 != "VirtualDesktops.dll"
 | 
			
		||||
	${AndIf} $R7 != "WebParser.dll"
 | 
			
		||||
	${AndIf} $R7 != "WifiStatus.dll"
 | 
			
		||||
	${AndIf} $R7 != "Win7AudioPlugin.dll"
 | 
			
		||||
	${AndIf} $R7 != "WindowMessagePlugin.dll"
 | 
			
		||||
		CreateDirectory "$INSTDIR\Defaults\Plugins"
 | 
			
		||||
		Delete "$INSTDIR\Defaults\Plugins\$R7"
 | 
			
		||||
		Rename "$R9" "$INSTDIR\Defaults\Plugins\$R7"
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	Push $0
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Function RemoveStartMenuShortcuts
 | 
			
		||||
	!insertmacro RemoveStartMenuShortcuts "$SMPROGRAMS\Rainmeter"
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Function CreateUserStartupShortcut
 | 
			
		||||
	SetShellVarContext current
 | 
			
		||||
	CreateShortcut "$SMSTARTUP\Rainmeter.lnk" "$INSTDIR\Rainmeter.exe" "" "$INSTDIR\Rainmeter.exe" 0
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Function RemoveUserStartupShortcut
 | 
			
		||||
	SetShellVarContext current
 | 
			
		||||
	Delete "$SMSTARTUP\Rainmeter.lnk"
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Function FinishRun
 | 
			
		||||
	!insertmacro UAC_AsUser_ExecShell "" "$INSTDIR\Rainmeter.exe" "" "" ""
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
; Uninstall
 | 
			
		||||
; --------------------------------------
 | 
			
		||||
Function un.onInit
 | 
			
		||||
UAC_TryAgain:
 | 
			
		||||
	; Request administrative rights
 | 
			
		||||
	!insertmacro UAC_RunElevated
 | 
			
		||||
	${Switch} $0
 | 
			
		||||
	${Case} 0
 | 
			
		||||
		${IfThen} $1 = 1 ${|} Quit ${|}
 | 
			
		||||
		${IfThen} $3 <> 0 ${|} ${Break} ${|}
 | 
			
		||||
		${If} $1 = 3
 | 
			
		||||
			MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(ADMINERROR)" /SD IDNO IDOK UAC_TryAgain IDNO 0
 | 
			
		||||
		${EndIf}
 | 
			
		||||
	${Case} 1223
 | 
			
		||||
		Quit
 | 
			
		||||
	${Case} 1062
 | 
			
		||||
		MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(LOGONERROR)"
 | 
			
		||||
		Quit
 | 
			
		||||
	${Default}
 | 
			
		||||
		MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(UACERROR) ($0)"
 | 
			
		||||
		Quit
 | 
			
		||||
	${EndSwitch}
 | 
			
		||||
 | 
			
		||||
	ReadRegStr $0 HKLM "SOFTWARE\Rainmeter" "Language"
 | 
			
		||||
	${If} $0 != ""
 | 
			
		||||
		StrCpy $LANGUAGE $0
 | 
			
		||||
	${EndIf}
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Function un.PageOptions
 | 
			
		||||
	!insertmacro MUI_HEADER_TEXT "$(UNSTALLOPTIONS)" "$(UNSTALLOPTIONSDESC)"
 | 
			
		||||
	nsDialogs::Create 1018
 | 
			
		||||
	nsDialogs::SetRTL $(^RTL)
 | 
			
		||||
 | 
			
		||||
	${NSD_CreateCheckbox} 0 0u 95% 12u "$(UNSTALLRAINMETER)"
 | 
			
		||||
	Pop $0
 | 
			
		||||
	EnableWindow $0 0
 | 
			
		||||
	${NSD_Check} $0
 | 
			
		||||
 | 
			
		||||
	${NSD_CreateCheckbox} 0 15u 70% 12u "$(UNSTALLSETTINGS)"
 | 
			
		||||
	Pop $R0
 | 
			
		||||
 | 
			
		||||
	${NSD_CreateLabel} 16 26u 95% 12u "$(UNSTALLSETTINGSDESC)"
 | 
			
		||||
 | 
			
		||||
	nsDialogs::Show
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Function un.GetOptions
 | 
			
		||||
	${NSD_GetState} $R0 $un.DeleteAll
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Section Uninstall
 | 
			
		||||
	; Close Rainmeter (and wait up to five seconds)
 | 
			
		||||
	${ForEach} $0 10 0 - 1
 | 
			
		||||
		FindWindow $1 "DummyRainWClass" "Rainmeter control window"
 | 
			
		||||
		ClearErrors
 | 
			
		||||
		Delete "$INSTDIR\Rainmeter.exe"
 | 
			
		||||
		${If} $1 = 0
 | 
			
		||||
		${AndIfNot} ${Errors}
 | 
			
		||||
			${Break}
 | 
			
		||||
		${EndIf}
 | 
			
		||||
 | 
			
		||||
		SendMessage $1 ${WM_CLOSE} 0 0
 | 
			
		||||
 | 
			
		||||
		${If} $0 = 0
 | 
			
		||||
			${If} ${Silent}
 | 
			
		||||
				SetErrorLevel ${ERROR_CLOSEFAIL}
 | 
			
		||||
				Quit
 | 
			
		||||
			${Else}
 | 
			
		||||
				MessageBox MB_RETRYCANCEL|MB_ICONSTOP "$(RAINMETERCLOSEERROR)" IDRETRY +2
 | 
			
		||||
				Quit
 | 
			
		||||
			${EndIf}
 | 
			
		||||
		${EndIf}
 | 
			
		||||
 | 
			
		||||
		Sleep 500
 | 
			
		||||
	${Next}
 | 
			
		||||
 | 
			
		||||
	; Old stuff
 | 
			
		||||
	RMDir /r "$INSTDIR\Addons"
 | 
			
		||||
	RMDir /r "$INSTDIR\Fonts"
 | 
			
		||||
 | 
			
		||||
	RMDir /r "$INSTDIR\Defaults"
 | 
			
		||||
	RMDir /r "$INSTDIR\Languages"
 | 
			
		||||
	RMDir /r "$INSTDIR\Plugins"
 | 
			
		||||
	RMDir /r "$INSTDIR\Runtime"
 | 
			
		||||
	RMDir /r "$INSTDIR\Skins"
 | 
			
		||||
	Delete "$INSTDIR\Rainmeter.dll"
 | 
			
		||||
	Delete "$INSTDIR\Rainmeter.exe"
 | 
			
		||||
	Delete "$INSTDIR\Rainmeter.exe.config"
 | 
			
		||||
	Delete "$INSTDIR\SkinInstaller.exe"
 | 
			
		||||
	Delete "$INSTDIR\SkinInstaller.dll"
 | 
			
		||||
	Delete "$INSTDIR\uninst.exe"
 | 
			
		||||
 | 
			
		||||
	RMDir "$INSTDIR"
 | 
			
		||||
 | 
			
		||||
	SetShellVarContext all
 | 
			
		||||
	RMDir /r "$APPDATA\Rainstaller"
 | 
			
		||||
 | 
			
		||||
	SetShellVarContext current
 | 
			
		||||
	Call un.RemoveShortcuts
 | 
			
		||||
	${If} $un.DeleteAll = 1
 | 
			
		||||
		RMDir /r "$APPDATA\Rainmeter"
 | 
			
		||||
		RMDir /r "$DOCUMENTS\Rainmeter\Skins"
 | 
			
		||||
		RMDir "$DOCUMENTS\Rainmeter"
 | 
			
		||||
		RMDir /r "$1\Rainmeter"
 | 
			
		||||
	${EndIf}
 | 
			
		||||
	
 | 
			
		||||
	!insertmacro UAC_AsUser_Call Function un.RemoveShortcuts ${UAC_SYNCREGISTERS}
 | 
			
		||||
	${If} $un.DeleteAll = 1
 | 
			
		||||
		RMDir /r "$APPDATA\Rainmeter"
 | 
			
		||||
		RMDir /r "$DOCUMENTS\Rainmeter\Skins"
 | 
			
		||||
		RMDir "$DOCUMENTS\Rainmeter"
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	SetShellVarContext all
 | 
			
		||||
	Call un.RemoveShortcuts
 | 
			
		||||
	Delete "$SMPROGRAMS\Rainmeter.lnk"
 | 
			
		||||
 | 
			
		||||
	DeleteRegKey HKLM "SOFTWARE\Rainmeter"
 | 
			
		||||
	DeleteRegKey HKCR ".rmskin"
 | 
			
		||||
	DeleteRegKey HKCR "Rainmeter.SkinInstaller"
 | 
			
		||||
	DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter"
 | 
			
		||||
	${RefreshShellIcons}
 | 
			
		||||
SectionEnd
 | 
			
		||||
 | 
			
		||||
Function un.RemoveShortcuts
 | 
			
		||||
	!insertmacro RemoveStartMenuShortcuts "$SMPROGRAMS\Rainmeter"
 | 
			
		||||
	Delete "$SMSTARTUP\Rainmeter.lnk"
 | 
			
		||||
	Delete "$DESKTOP\Rainmeter.lnk"
 | 
			
		||||
FunctionEnd
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Build/Installer/MD5.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Build/Installer/MD5.dll
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								Build/Installer/MoreInfo.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Build/Installer/MoreInfo.dll
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								Build/Installer/UAC.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Build/Installer/UAC.dll
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										200
									
								
								Build/Installer/UAC.nsh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										200
									
								
								Build/Installer/UAC.nsh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,200 @@
 | 
			
		||||
!ifndef UAC_HDR__INC
 | 
			
		||||
!verbose push
 | 
			
		||||
!verbose 3
 | 
			
		||||
!ifndef UAC_VERBOSE  
 | 
			
		||||
	!define UAC_VERBOSE 3
 | 
			
		||||
!endif
 | 
			
		||||
!verbose ${UAC_VERBOSE}
 | 
			
		||||
 | 
			
		||||
!define UAC_HDR__INC 0x00020204 ;MMmmbbrr
 | 
			
		||||
 | 
			
		||||
!include LogicLib.nsh
 | 
			
		||||
 | 
			
		||||
!macro _UAC_definemath def val1 op val2
 | 
			
		||||
!define /math _UAC_definemath "${val1}" ${op} ${val2}
 | 
			
		||||
!ifdef ${def}
 | 
			
		||||
	!undef ${def}
 | 
			
		||||
!endif
 | 
			
		||||
!define ${def} "${_UAC_definemath}"
 | 
			
		||||
!undef _UAC_definemath
 | 
			
		||||
!macroend
 | 
			
		||||
 | 
			
		||||
!macro _UAC_ParseDefineFlags_orin parse outflags
 | 
			
		||||
!searchparse /noerrors ${${parse}} "" _UAC_ParseDefineFlags_orin_f1 "|" _UAC_ParseDefineFlags_orin_f2
 | 
			
		||||
!define _UAC_ParseDefineFlags_orin_this ${_UAC_ParseDefineFlags_orin_f1}
 | 
			
		||||
!undef ${parse}
 | 
			
		||||
!define ${parse} ${_UAC_ParseDefineFlags_orin_f2}
 | 
			
		||||
!define _UAC_ParseDefineFlags_orin_saveout ${${outflags}}
 | 
			
		||||
!undef ${outflags}
 | 
			
		||||
!define /math ${outflags} "${_UAC_ParseDefineFlags_orin_saveout}" | "${_UAC_ParseDefineFlags_orin_this}"
 | 
			
		||||
!undef _UAC_ParseDefineFlags_orin_saveout
 | 
			
		||||
!undef _UAC_ParseDefineFlags_orin_this
 | 
			
		||||
!ifdef _UAC_ParseDefineFlags_orin_f1
 | 
			
		||||
	!undef _UAC_ParseDefineFlags_orin_f1
 | 
			
		||||
	!undef _UAC_ParseDefineFlags_orin_f2
 | 
			
		||||
!endif
 | 
			
		||||
!macroend
 | 
			
		||||
!macro _UAC_ParseDefineFlags_Begin _outdef _in
 | 
			
		||||
!define _UAC_PDF${_outdef}_parse "${_in}"
 | 
			
		||||
!define _UAC_PDF${_outdef}_flags ""
 | 
			
		||||
!define _UAC_PDF${_outdef}_r 0
 | 
			
		||||
!insertmacro _UAC_ParseDefineFlags_orin _UAC_PDF${_outdef}_parse _UAC_PDF${_outdef}_flags	;0x1
 | 
			
		||||
!insertmacro _UAC_ParseDefineFlags_orin _UAC_PDF${_outdef}_parse _UAC_PDF${_outdef}_flags	;0x2
 | 
			
		||||
!insertmacro _UAC_ParseDefineFlags_orin _UAC_PDF${_outdef}_parse _UAC_PDF${_outdef}_flags	;0x4
 | 
			
		||||
!insertmacro _UAC_ParseDefineFlags_orin _UAC_PDF${_outdef}_parse _UAC_PDF${_outdef}_flags	;0x8
 | 
			
		||||
!insertmacro _UAC_ParseDefineFlags_orin _UAC_PDF${_outdef}_parse _UAC_PDF${_outdef}_flags	;0x10
 | 
			
		||||
!macroend
 | 
			
		||||
!macro _UAC_ParseDefineFlags_End _outdef
 | 
			
		||||
!define ${_outdef} ${_UAC_PDF${_outdef}_r}
 | 
			
		||||
!undef _UAC_PDF${_outdef}_r
 | 
			
		||||
!undef _UAC_PDF${_outdef}_flags
 | 
			
		||||
!undef _UAC_PDF${_outdef}_parse
 | 
			
		||||
!macroend
 | 
			
		||||
!macro _UAC_ParseDefineFlags_IncludeFlag _outdef flag
 | 
			
		||||
!if ${_UAC_PDF${_outdef}_flags} & ${flag}
 | 
			
		||||
	!insertmacro _UAC_definemath _UAC_PDF${_outdef}_r ${_UAC_PDF${_outdef}_r} | ${flag}
 | 
			
		||||
!endif
 | 
			
		||||
!macroend
 | 
			
		||||
!macro _UAC_ParseDefineFlagsToInt _outdef _in
 | 
			
		||||
!insertmacro _UAC_ParseDefineFlags_Begin _UAC_ParseDefineFlagsToInt_tmp "${_in}"
 | 
			
		||||
!define ${_outdef} ${_UAC_PDF_UAC_ParseDefineFlagsToInt_tmp_flags}
 | 
			
		||||
!insertmacro _UAC_ParseDefineFlags_End _UAC_ParseDefineFlagsToInt_tmp
 | 
			
		||||
!undef _UAC_ParseDefineFlagsToInt_tmp
 | 
			
		||||
!macroend
 | 
			
		||||
 | 
			
		||||
!macro _UAC_IncL
 | 
			
		||||
!insertmacro _UAC_definemath __UAC_L "${__UAC_L}" + 1
 | 
			
		||||
!macroend
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
!macro _UAC_MakeLL_Cmp cmpop cmp pluginparams
 | 
			
		||||
!insertmacro _LOGICLIB_TEMP
 | 
			
		||||
UAC::_ ${pluginparams}
 | 
			
		||||
pop $_LOGICLIB_TEMP
 | 
			
		||||
!insertmacro ${cmpop} $_LOGICLIB_TEMP ${cmp} `${_t}` `${_f}`
 | 
			
		||||
!macroend
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
!macro UAC_RunElevated
 | 
			
		||||
UAC::_ 0
 | 
			
		||||
!macroend
 | 
			
		||||
!macro UAC_PageElevation_RunElevated
 | 
			
		||||
UAC::_ 0
 | 
			
		||||
!macroend
 | 
			
		||||
/*!macro UAC_OnInitElevation_RunElevated
 | 
			
		||||
UAC::_ 0
 | 
			
		||||
!macroend
 | 
			
		||||
!macro UAC_OnInitElevation_OnGuiInit
 | 
			
		||||
!macroend*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
!macro UAC_IsAdmin
 | 
			
		||||
UAC::_ 2
 | 
			
		||||
!macroend
 | 
			
		||||
!define UAC_IsAdmin `"" UAC_IsAdmin ""`
 | 
			
		||||
!macro _UAC_IsAdmin _a _b _t _f
 | 
			
		||||
!insertmacro _UAC_MakeLL_Cmp _!= 0 2s
 | 
			
		||||
!macroend
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
!macro UAC_IsInnerInstance
 | 
			
		||||
UAC::_ 3
 | 
			
		||||
!macroend
 | 
			
		||||
!define UAC_IsInnerInstance `"" UAC_IsInnerInstance ""`
 | 
			
		||||
!macro _UAC_IsInnerInstance _a _b _t _f
 | 
			
		||||
!insertmacro _UAC_MakeLL_Cmp _!= 0 3s
 | 
			
		||||
!macroend
 | 
			
		||||
 | 
			
		||||
!macro UAC_Notify_OnGuiInit
 | 
			
		||||
UAC::_ 4
 | 
			
		||||
!macroend
 | 
			
		||||
!macro UAC_PageElevation_OnGuiInit
 | 
			
		||||
!insertmacro UAC_Notify_OnGuiInit
 | 
			
		||||
!macroend
 | 
			
		||||
!macro UAC_PageElevation_OnInit
 | 
			
		||||
UAC::_ 5
 | 
			
		||||
${IfThen} ${Errors} ${|} Quit ${|}
 | 
			
		||||
!macroend
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
!define UAC_SYNCREGISTERS 0x1
 | 
			
		||||
#!define UAC_SYNCSTACK     0x2
 | 
			
		||||
!define UAC_SYNCOUTDIR    0x4
 | 
			
		||||
!define UAC_SYNCINSTDIR   0x8
 | 
			
		||||
#!define UAC_CLEARERRFLAG  0x10
 | 
			
		||||
!macro UAC_AsUser_Call type name flags
 | 
			
		||||
push $0
 | 
			
		||||
Get${type}Address $0 ${name}
 | 
			
		||||
!verbose push
 | 
			
		||||
!verbose ${UAC_VERBOSE}
 | 
			
		||||
!insertmacro _UAC_ParseDefineFlagsToInt _UAC_AsUser_Call__flags ${flags}
 | 
			
		||||
!verbose pop
 | 
			
		||||
StrCpy $0 "1$0:${_UAC_AsUser_Call__flags}"
 | 
			
		||||
!undef _UAC_AsUser_Call__flags
 | 
			
		||||
Exch $0
 | 
			
		||||
UAC::_
 | 
			
		||||
!macroend
 | 
			
		||||
 | 
			
		||||
!macro _UAC_AsUser_GenOp outvar op opparam1 opparam2
 | 
			
		||||
!define _UAC_AUGOGR_ID _UAC_AUGOGR_OP${outvar}${op}${opparam1}${opparam2}
 | 
			
		||||
!ifndef ${_UAC_AUGOGR_ID} ;Has this exact action been done before? 
 | 
			
		||||
	!if ${outvar} == $0
 | 
			
		||||
		!define ${_UAC_AUGOGR_ID} $1
 | 
			
		||||
	!else
 | 
			
		||||
		!define ${_UAC_AUGOGR_ID} $0
 | 
			
		||||
	!endif
 | 
			
		||||
	!if "${opparam1}" == ""
 | 
			
		||||
		!define _UAC_AUGOGR_OPP1 ${${_UAC_AUGOGR_ID}}
 | 
			
		||||
		!define _UAC_AUGOGR_OPP2 ${opparam2}
 | 
			
		||||
	!else
 | 
			
		||||
		!define _UAC_AUGOGR_OPP1 ${opparam1}
 | 
			
		||||
		!define _UAC_AUGOGR_OPP2 ${${_UAC_AUGOGR_ID}}
 | 
			
		||||
	!endif	
 | 
			
		||||
	goto ${_UAC_AUGOGR_ID}_C
 | 
			
		||||
	${_UAC_AUGOGR_ID}_F:
 | 
			
		||||
		${op} ${_UAC_AUGOGR_OPP1} ${_UAC_AUGOGR_OPP2}
 | 
			
		||||
		return
 | 
			
		||||
	${_UAC_AUGOGR_ID}_C:
 | 
			
		||||
	!undef _UAC_AUGOGR_OPP1
 | 
			
		||||
	!undef _UAC_AUGOGR_OPP2
 | 
			
		||||
!endif
 | 
			
		||||
push ${${_UAC_AUGOGR_ID}}
 | 
			
		||||
!insertmacro UAC_AsUser_Call Label ${_UAC_AUGOGR_ID}_F ${UAC_SYNCREGISTERS}
 | 
			
		||||
StrCpy ${outvar} ${${_UAC_AUGOGR_ID}}
 | 
			
		||||
pop ${${_UAC_AUGOGR_ID}}
 | 
			
		||||
!undef _UAC_AUGOGR_ID
 | 
			
		||||
!macroend
 | 
			
		||||
 | 
			
		||||
!macro UAC_AsUser_GetSection datatype secidx outvar
 | 
			
		||||
!insertmacro _UAC_AsUser_GenOp ${outvar} SectionGet${datatype} ${secidx} ""
 | 
			
		||||
!macroend
 | 
			
		||||
 | 
			
		||||
!macro UAC_AsUser_GetGlobalVar var
 | 
			
		||||
!insertmacro _UAC_AsUser_GenOp ${var} StrCpy "" ${var}
 | 
			
		||||
!macroend
 | 
			
		||||
!macro UAC_AsUser_GetGlobal outvar srcvar
 | 
			
		||||
!insertmacro _UAC_AsUser_GenOp ${outvar} StrCpy "" ${srcvar}
 | 
			
		||||
!macroend
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
!macro UAC_AsUser_ExecShell verb command params workdir show
 | 
			
		||||
!insertmacro _UAC_IncL
 | 
			
		||||
goto _UAC_L_E_${__UAC_L}
 | 
			
		||||
_UAC_L_F_${__UAC_L}:
 | 
			
		||||
ExecShell "${verb}" "${command}" ${params} ${show}
 | 
			
		||||
return
 | 
			
		||||
_UAC_L_E_${__UAC_L}:
 | 
			
		||||
!if "${workdir}" != ""
 | 
			
		||||
	push $outdir
 | 
			
		||||
	SetOutPath "${workdir}"
 | 
			
		||||
!endif
 | 
			
		||||
!insertmacro UAC_AsUser_Call Label _UAC_L_F_${__UAC_L} ${UAC_SYNCREGISTERS}|${UAC_SYNCOUTDIR}|${UAC_SYNCINSTDIR} #|${UAC_CLEARERRFLAG}
 | 
			
		||||
!if "${workdir}" != ""
 | 
			
		||||
	pop $outdir 
 | 
			
		||||
	SetOutPath $outdir
 | 
			
		||||
!endif
 | 
			
		||||
!macroend
 | 
			
		||||
 | 
			
		||||
!verbose pop
 | 
			
		||||
!endif /* UAC_HDR__INC */
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Build/Installer/Wizard.bmp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Build/Installer/Wizard.bmp
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 51 KiB  | 
							
								
								
									
										23
									
								
								Build/Layouts/illustro default/Rainmeter.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								Build/Layouts/illustro default/Rainmeter.ini
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
[Rainmeter]
 | 
			
		||||
 | 
			
		||||
[illustro\Clock]
 | 
			
		||||
Active=1
 | 
			
		||||
WindowX=(#SCREENAREAWIDTH#-200)
 | 
			
		||||
WindowY=0
 | 
			
		||||
 | 
			
		||||
[illustro\Disk]
 | 
			
		||||
Active=2
 | 
			
		||||
WindowX=(#SCREENAREAWIDTH#-200)
 | 
			
		||||
WindowY=176
 | 
			
		||||
 | 
			
		||||
[illustro\System]
 | 
			
		||||
Active=1
 | 
			
		||||
WindowX=(#SCREENAREAWIDTH#-200)
 | 
			
		||||
WindowY=68
 | 
			
		||||
 | 
			
		||||
[illustro\Welcome]
 | 
			
		||||
Active=1
 | 
			
		||||
WindowX=50.000000%
 | 
			
		||||
WindowY=50.000000%
 | 
			
		||||
AnchorX=50.000000%
 | 
			
		||||
AnchorY=50.000000%
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Build/Skins/illustro/@Resources/Background.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Build/Skins/illustro/@Resources/Background.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 1.9 KiB  | 
							
								
								
									
										138
									
								
								Build/Skins/illustro/Clock/Clock.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										138
									
								
								Build/Skins/illustro/Clock/Clock.ini
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,138 @@
 | 
			
		||||
; Lines starting ; (semicolons) are commented out.
 | 
			
		||||
; That is, they do not affect the code and are here for demonstration purposes only.
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
 | 
			
		||||
[Rainmeter]
 | 
			
		||||
; This section contains general settings that can be used to change how Rainmeter behaves.
 | 
			
		||||
Author=poiru
 | 
			
		||||
AppVersion=2003000
 | 
			
		||||
Update=1000
 | 
			
		||||
Background=#@#Background.png
 | 
			
		||||
; #@# is equal to Rainmeter\Skins\illustro\@Resources
 | 
			
		||||
BackgroundMode=3
 | 
			
		||||
BackgroundMargins=0,34,0,14
 | 
			
		||||
 | 
			
		||||
[Metadata]
 | 
			
		||||
; Contains basic information of the skin.
 | 
			
		||||
Description=Displays the current date and time.
 | 
			
		||||
License=Creative Commons BY-NC-SA 3.0
 | 
			
		||||
Version=1.0.0
 | 
			
		||||
 | 
			
		||||
[Variables]
 | 
			
		||||
; Variables declared here can be used later on between two # characters (e.g. #MyVariable#).
 | 
			
		||||
fontName=Trebuchet MS
 | 
			
		||||
textSize=8
 | 
			
		||||
colorBar=235,170,0,255
 | 
			
		||||
colorText=255,255,255,205
 | 
			
		||||
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
; MEASURES return some kind of value
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
 | 
			
		||||
[measureTime]
 | 
			
		||||
; This measure returns the time in a 24-hour format (i.e. HH:MM).
 | 
			
		||||
Measure=Time
 | 
			
		||||
Format=%H:%M
 | 
			
		||||
; For a 12-hour clock, change the Format option above to: %I:%M %p
 | 
			
		||||
; Refer to the Rainmeter manual for other format codes.
 | 
			
		||||
 | 
			
		||||
[measureDate]
 | 
			
		||||
; Returns the date as DD.MM.YYYY
 | 
			
		||||
Measure=Time
 | 
			
		||||
Format=%d.%m.%Y
 | 
			
		||||
 | 
			
		||||
[measureDay]
 | 
			
		||||
; Returns the current day
 | 
			
		||||
Measure=Time
 | 
			
		||||
Format=%A
 | 
			
		||||
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
; STYLES are used to "centralize" options
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
 | 
			
		||||
[styleTitle]
 | 
			
		||||
StringAlign=CENTER
 | 
			
		||||
StringCase=UPPER
 | 
			
		||||
StringStyle=BOLD
 | 
			
		||||
StringEffect=SHADOW
 | 
			
		||||
FontEffectColor=0,0,0,50
 | 
			
		||||
FontColor=#colorText#
 | 
			
		||||
FontFace=#fontName#
 | 
			
		||||
FontSize=10
 | 
			
		||||
AntiAlias=1
 | 
			
		||||
ClipString=1
 | 
			
		||||
 | 
			
		||||
[styleLeftText]
 | 
			
		||||
StringAlign=LEFT
 | 
			
		||||
; Meters using styleLeftText will be left-aligned.
 | 
			
		||||
StringCase=NONE
 | 
			
		||||
StringStyle=BOLD
 | 
			
		||||
StringEffect=SHADOW
 | 
			
		||||
FontEffectColor=0,0,0,20
 | 
			
		||||
FontColor=#colorText#
 | 
			
		||||
FontFace=#fontName#
 | 
			
		||||
FontSize=#textSize#
 | 
			
		||||
AntiAlias=1
 | 
			
		||||
ClipString=1
 | 
			
		||||
 | 
			
		||||
[styleRightText]
 | 
			
		||||
StringAlign=RIGHT
 | 
			
		||||
StringCase=NONE
 | 
			
		||||
StringStyle=BOLD
 | 
			
		||||
StringEffect=SHADOW
 | 
			
		||||
FontEffectColor=0,0,0,20
 | 
			
		||||
FontColor=#colorText#
 | 
			
		||||
FontFace=#fontName#
 | 
			
		||||
FontSize=#textSize#
 | 
			
		||||
AntiAlias=1
 | 
			
		||||
ClipString=1
 | 
			
		||||
 | 
			
		||||
[styleSeperator]
 | 
			
		||||
SolidColor=255,255,255,15
 | 
			
		||||
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
; METERS display images, text, bars, etc.
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
 | 
			
		||||
[meterTitle]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleTitle
 | 
			
		||||
; Using MeterStyle=styleTitle will basically "copy" the
 | 
			
		||||
; contents of the [styleTitle] section here during runtime.
 | 
			
		||||
MeasureName=measureTime
 | 
			
		||||
X=100
 | 
			
		||||
Y=12
 | 
			
		||||
W=190
 | 
			
		||||
H=18
 | 
			
		||||
Text="%1"
 | 
			
		||||
; %1 stands for the value of MeasureName (measureTime in this case).
 | 
			
		||||
 | 
			
		||||
[meterDay]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleLeftText
 | 
			
		||||
MeasureName=measureDay
 | 
			
		||||
X=10
 | 
			
		||||
Y=40
 | 
			
		||||
W=190
 | 
			
		||||
H=14
 | 
			
		||||
Text="%1"
 | 
			
		||||
 | 
			
		||||
[meterDate]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleRightText
 | 
			
		||||
MeasureName=measureDate
 | 
			
		||||
X=200
 | 
			
		||||
Y=0r
 | 
			
		||||
; r stands for relative. In this case, the Y postition of meterValueCPU is 0 pixels
 | 
			
		||||
; below the Y value of the previous meter (i.e it's the same as in meterLabelCPU).
 | 
			
		||||
W=190
 | 
			
		||||
H=14
 | 
			
		||||
Text="%1"
 | 
			
		||||
 | 
			
		||||
[meterSeperator]
 | 
			
		||||
Meter=IMAGE
 | 
			
		||||
MeterStyle=styleSeperator
 | 
			
		||||
X=10
 | 
			
		||||
Y=52
 | 
			
		||||
W=190
 | 
			
		||||
H=1
 | 
			
		||||
							
								
								
									
										149
									
								
								Build/Skins/illustro/Disk/1 Disk.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										149
									
								
								Build/Skins/illustro/Disk/1 Disk.ini
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,149 @@
 | 
			
		||||
; Lines starting ; (semicolons) are commented out.
 | 
			
		||||
; That is, they do not affect the code and are here for demonstration purposes only.
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
 | 
			
		||||
; NOTE! If you want to add more disks, take a look at 'Disks 2.ini'.
 | 
			
		||||
 | 
			
		||||
[Rainmeter]
 | 
			
		||||
; This section contains general settings that can be used to change how Rainmeter behaves.
 | 
			
		||||
Author=poiru
 | 
			
		||||
AppVersion=2003000
 | 
			
		||||
Update=1000
 | 
			
		||||
Background=#@#Background.png
 | 
			
		||||
; #@# is equal to Rainmeter\Skins\illustro\@Resources
 | 
			
		||||
BackgroundMode=3
 | 
			
		||||
BackgroundMargins=0,34,0,14
 | 
			
		||||
 | 
			
		||||
[Metadata]
 | 
			
		||||
; Contains basic information of the skin.
 | 
			
		||||
Description=Displays disk usage.
 | 
			
		||||
License=Creative Commons BY-NC-SA 3.0
 | 
			
		||||
Version=1.0.0
 | 
			
		||||
 | 
			
		||||
[Variables]
 | 
			
		||||
; Variables declared here can be used later on between two # characters (e.g. #MyVariable#).
 | 
			
		||||
fontName=Trebuchet MS
 | 
			
		||||
textSize=8
 | 
			
		||||
colorBar=235,170,0,255
 | 
			
		||||
colorText=255,255,255,205
 | 
			
		||||
disk1=C:
 | 
			
		||||
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
; MEASURES return some kind of value
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
 | 
			
		||||
[measureTotalDisk1]
 | 
			
		||||
; This measure returns the total disk space
 | 
			
		||||
Measure=FreeDiskSpace
 | 
			
		||||
Drive=#disk1#
 | 
			
		||||
Total=1
 | 
			
		||||
UpdateDivider=120
 | 
			
		||||
 | 
			
		||||
[measureUsedDisk1]
 | 
			
		||||
; Returns inverted value of free disk space (i.e. used disk space)
 | 
			
		||||
Measure=FreeDiskSpace
 | 
			
		||||
Drive=#disk1#
 | 
			
		||||
InvertMeasure=1
 | 
			
		||||
UpdateDivider=120
 | 
			
		||||
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
; STYLES are used to "centralize" options
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
 | 
			
		||||
[styleTitle]
 | 
			
		||||
StringAlign=CENTER
 | 
			
		||||
StringCase=UPPER
 | 
			
		||||
StringStyle=BOLD
 | 
			
		||||
StringEffect=SHADOW
 | 
			
		||||
FontEffectColor=0,0,0,50
 | 
			
		||||
FontColor=#colorText#
 | 
			
		||||
FontFace=#fontName#
 | 
			
		||||
FontSize=10
 | 
			
		||||
AntiAlias=1
 | 
			
		||||
ClipString=1
 | 
			
		||||
 | 
			
		||||
[styleLeftText]
 | 
			
		||||
StringAlign=LEFT
 | 
			
		||||
; Meters using styleLeftText will be left-aligned.
 | 
			
		||||
StringCase=NONE
 | 
			
		||||
StringStyle=BOLD
 | 
			
		||||
StringEffect=SHADOW
 | 
			
		||||
FontEffectColor=0,0,0,20
 | 
			
		||||
FontColor=#colorText#
 | 
			
		||||
FontFace=#fontName#
 | 
			
		||||
FontSize=#textSize#
 | 
			
		||||
AntiAlias=1
 | 
			
		||||
ClipString=1
 | 
			
		||||
 | 
			
		||||
[styleRightText]
 | 
			
		||||
StringAlign=RIGHT
 | 
			
		||||
StringCase=NONE
 | 
			
		||||
StringStyle=BOLD
 | 
			
		||||
StringEffect=SHADOW
 | 
			
		||||
FontEffectColor=0,0,0,20
 | 
			
		||||
FontColor=#colorText#
 | 
			
		||||
FontFace=#fontName#
 | 
			
		||||
FontSize=#textSize#
 | 
			
		||||
AntiAlias=1
 | 
			
		||||
ClipString=1
 | 
			
		||||
 | 
			
		||||
[styleBar]
 | 
			
		||||
BarColor=#colorBar#
 | 
			
		||||
BarOrientation=HORIZONTAL
 | 
			
		||||
SolidColor=255,255,255,15
 | 
			
		||||
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
; METERS display images, text, bars, etc.
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
 | 
			
		||||
[meterTitle]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleTitle
 | 
			
		||||
; Using MeterStyle=styleTitle will basically "copy" the
 | 
			
		||||
; contents of the [styleTitle] section here during runtime.
 | 
			
		||||
X=100
 | 
			
		||||
Y=12
 | 
			
		||||
W=190
 | 
			
		||||
H=18
 | 
			
		||||
Text="Disks"
 | 
			
		||||
; Even though the text is set to Disks, Rainmeter will display
 | 
			
		||||
; it as DISKS, because styleTitle contains StringCase=UPPER.
 | 
			
		||||
 | 
			
		||||
[meterLabelDisk1]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleLeftText
 | 
			
		||||
X=10
 | 
			
		||||
Y=40
 | 
			
		||||
W=190
 | 
			
		||||
H=14
 | 
			
		||||
Text="#disk1#\"
 | 
			
		||||
 | 
			
		||||
[meterValueDisk1]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleRightText
 | 
			
		||||
MeasureName=measureUsedDisk1
 | 
			
		||||
MeasureName2=measureTotalDisk1
 | 
			
		||||
X=200
 | 
			
		||||
Y=0r
 | 
			
		||||
; r stands for relative. In this case, the Y postition of meterValueCPU is 0 pixels
 | 
			
		||||
; below the Y value of the previous meter (i.e it's the same as in meterLabelCPU).
 | 
			
		||||
W=190
 | 
			
		||||
H=14
 | 
			
		||||
Text="%1B/%2B used"
 | 
			
		||||
; %1 stands for the value of MeasureName (measureUsedDisk1 in this case).
 | 
			
		||||
; %2 stands for the value of MeasureName2.
 | 
			
		||||
NumOfDecimals=1
 | 
			
		||||
AutoScale=1
 | 
			
		||||
; Because disk measures return the free/used space in bytes, we must use AutoScale=1 to
 | 
			
		||||
; automatically scale the value into a more readable figure.
 | 
			
		||||
LeftMouseUpAction=!Execute ["#disk1#\"]
 | 
			
		||||
; Open #disk1# on click
 | 
			
		||||
 | 
			
		||||
[meterBarDisk1]
 | 
			
		||||
Meter=BAR
 | 
			
		||||
MeterStyle=styleBar
 | 
			
		||||
MeasureName=measureUsedDisk1
 | 
			
		||||
X=10
 | 
			
		||||
Y=52
 | 
			
		||||
W=190
 | 
			
		||||
H=1
 | 
			
		||||
							
								
								
									
										209
									
								
								Build/Skins/illustro/Disk/2 Disks.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										209
									
								
								Build/Skins/illustro/Disk/2 Disks.ini
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,209 @@
 | 
			
		||||
; Lines starting ; (semicolons) are commented out.
 | 
			
		||||
; That is, they do not affect the code and are here for demonstration purposes only.
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
 | 
			
		||||
; HOWTO: Adding more disks
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
; Adding more disks is a pretty straightforward process. Follow the following steps to turn
 | 
			
		||||
; this 2 disks skin into a 3 disks skin. You can then extend it even further as you wish.
 | 
			
		||||
;
 | 
			
		||||
; 1) Create a new variable called disk3=X: directly below disk2=D: in the [Variables] section
 | 
			
		||||
; 2) Create a copy of the [measureTotalDisk2] and [measureUsedDisk2] sections
 | 
			
		||||
; 3) Rename the copied sections to [measureTotalDisk3] and [measureUsedDisk3], respectively.
 | 
			
		||||
;    Also change Drive=#disk2# to Drive=#disk3#
 | 
			
		||||
; 4) Create a copy of the [meterLabelDisk2], [meterValueDisk2], and [meterBarDisk2].
 | 
			
		||||
;    Rename all Disk2's in the copied sections to Disk3.
 | 
			
		||||
; 5) Now we need to change the Y= values to adjust height. Change Y= under [meterLabelDisk3]
 | 
			
		||||
;    to Y=80 (calculated by adding 20 to the Y= value of previous meterLabel).
 | 
			
		||||
;    Then change Y= under [meterBarDisk3] to Y=92 (calculated by adding 20 to the Y= value of previous meterBar).
 | 
			
		||||
; 6) Save the file as '3 Disks.ini'. Now right-click on the Rainmeter tray icon and select
 | 
			
		||||
;    'Refresh All'. Now go activate the '3 Disks.ini' skin and enjoy! :)
 | 
			
		||||
 | 
			
		||||
[Rainmeter]
 | 
			
		||||
; This section contains general settings that can be used to change how Rainmeter behaves.
 | 
			
		||||
Author=poiru
 | 
			
		||||
AppVersion=2003000
 | 
			
		||||
Update=1000
 | 
			
		||||
Background=#@#Background.png
 | 
			
		||||
; #@# is equal to Rainmeter\Skins\illustro\@Resources
 | 
			
		||||
BackgroundMode=3
 | 
			
		||||
BackgroundMargins=0,34,0,14
 | 
			
		||||
 | 
			
		||||
[Metadata]
 | 
			
		||||
; Contains basic information of the skin.
 | 
			
		||||
Description=Displays disk usage.
 | 
			
		||||
License=Creative Commons BY-NC-SA 3.0
 | 
			
		||||
Version=1.0.0
 | 
			
		||||
 | 
			
		||||
[Variables]
 | 
			
		||||
; Variables declared here can be used later on between two # characters (e.g. #MyVariable#).
 | 
			
		||||
fontName=Trebuchet MS
 | 
			
		||||
textSize=8
 | 
			
		||||
colorBar=235,170,0,255
 | 
			
		||||
colorText=255,255,255,205
 | 
			
		||||
disk1=C:
 | 
			
		||||
disk2=D:
 | 
			
		||||
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
; MEASURES return some kind of value
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
 | 
			
		||||
[measureTotalDisk1]
 | 
			
		||||
; This measure returns the total disk space
 | 
			
		||||
Measure=FreeDiskSpace
 | 
			
		||||
Drive=#disk1#
 | 
			
		||||
Total=1
 | 
			
		||||
UpdateDivider=120
 | 
			
		||||
 | 
			
		||||
[measureUsedDisk1]
 | 
			
		||||
; Returns inverted value of free disk space (i.e. used disk space)
 | 
			
		||||
Measure=FreeDiskSpace
 | 
			
		||||
Drive=#disk1#
 | 
			
		||||
InvertMeasure=1
 | 
			
		||||
UpdateDivider=120
 | 
			
		||||
 | 
			
		||||
[measureTotalDisk2]
 | 
			
		||||
Measure=FreeDiskSpace
 | 
			
		||||
Drive=#disk2#
 | 
			
		||||
Total=1
 | 
			
		||||
UpdateDivider=120
 | 
			
		||||
 | 
			
		||||
[measureUsedDisk2]
 | 
			
		||||
Measure=FreeDiskSpace
 | 
			
		||||
Drive=#disk2#
 | 
			
		||||
InvertMeasure=1
 | 
			
		||||
UpdateDivider=120
 | 
			
		||||
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
; STYLES are used to "centralize" options
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
 | 
			
		||||
[styleTitle]
 | 
			
		||||
StringAlign=CENTER
 | 
			
		||||
StringCase=UPPER
 | 
			
		||||
StringStyle=BOLD
 | 
			
		||||
StringEffect=SHADOW
 | 
			
		||||
FontEffectColor=0,0,0,50
 | 
			
		||||
FontColor=#colorText#
 | 
			
		||||
FontFace=#fontName#
 | 
			
		||||
FontSize=10
 | 
			
		||||
AntiAlias=1
 | 
			
		||||
ClipString=1
 | 
			
		||||
 | 
			
		||||
[styleLeftText]
 | 
			
		||||
StringAlign=LEFT
 | 
			
		||||
; Meters using styleLeftText will be left-aligned.
 | 
			
		||||
StringCase=NONE
 | 
			
		||||
StringStyle=BOLD
 | 
			
		||||
StringEffect=SHADOW
 | 
			
		||||
FontEffectColor=0,0,0,20
 | 
			
		||||
FontColor=#colorText#
 | 
			
		||||
FontFace=#fontName#
 | 
			
		||||
FontSize=#textSize#
 | 
			
		||||
AntiAlias=1
 | 
			
		||||
ClipString=1
 | 
			
		||||
 | 
			
		||||
[styleRightText]
 | 
			
		||||
StringAlign=RIGHT
 | 
			
		||||
StringCase=NONE
 | 
			
		||||
StringStyle=BOLD
 | 
			
		||||
StringEffect=SHADOW
 | 
			
		||||
FontEffectColor=0,0,0,20
 | 
			
		||||
FontColor=#colorText#
 | 
			
		||||
FontFace=#fontName#
 | 
			
		||||
FontSize=#textSize#
 | 
			
		||||
AntiAlias=1
 | 
			
		||||
ClipString=1
 | 
			
		||||
 | 
			
		||||
[styleBar]
 | 
			
		||||
BarColor=#colorBar#
 | 
			
		||||
BarOrientation=HORIZONTAL
 | 
			
		||||
SolidColor=255,255,255,15
 | 
			
		||||
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
; METERS display images, text, bars, etc.
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
 | 
			
		||||
[meterTitle]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleTitle
 | 
			
		||||
; Using MeterStyle=styleTitle will basically "copy" the
 | 
			
		||||
; contents of the [styleTitle] section here during runtime.
 | 
			
		||||
X=100
 | 
			
		||||
Y=12
 | 
			
		||||
W=190
 | 
			
		||||
H=18
 | 
			
		||||
Text="Disk"
 | 
			
		||||
; Even though the text is set to Disk, Rainmeter will display
 | 
			
		||||
; it as DISK, because styleTitle contains StringCase=UPPER.
 | 
			
		||||
 | 
			
		||||
[meterLabelDisk1]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleLeftText
 | 
			
		||||
X=10
 | 
			
		||||
Y=40
 | 
			
		||||
W=190
 | 
			
		||||
H=14
 | 
			
		||||
Text="#disk1#\"
 | 
			
		||||
 | 
			
		||||
[meterValueDisk1]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleRightText
 | 
			
		||||
MeasureName=measureUsedDisk1
 | 
			
		||||
MeasureName2=measureTotalDisk1
 | 
			
		||||
X=200
 | 
			
		||||
Y=0r
 | 
			
		||||
; r stands for relative. In this case, the Y postition of meterValueCPU is 0 pixels
 | 
			
		||||
; below the Y value of the previous meter (i.e it's the same as in meterLabelCPU).
 | 
			
		||||
W=190
 | 
			
		||||
H=14
 | 
			
		||||
Text="%1B/%2B used"
 | 
			
		||||
; %1 stands for the value of MeasureName (measureUsedDisk1 in this case).
 | 
			
		||||
; %2 stands for the value of MeasureName2.
 | 
			
		||||
NumOfDecimals=1
 | 
			
		||||
AutoScale=1
 | 
			
		||||
; Because disk measures return the free/used space in bytes, we must use AutoScale=1 to
 | 
			
		||||
; automatically scale the value into a more readable figure.
 | 
			
		||||
LeftMouseUpAction=!Execute ["#disk1#\"]
 | 
			
		||||
; Open #disk1# on click
 | 
			
		||||
 | 
			
		||||
[meterBarDisk1]
 | 
			
		||||
Meter=BAR
 | 
			
		||||
MeterStyle=styleBar
 | 
			
		||||
MeasureName=measureUsedDisk1
 | 
			
		||||
X=10
 | 
			
		||||
Y=52
 | 
			
		||||
W=190
 | 
			
		||||
H=1
 | 
			
		||||
 | 
			
		||||
[meterLabelDisk2]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleLeftText
 | 
			
		||||
X=10
 | 
			
		||||
Y=60
 | 
			
		||||
W=190
 | 
			
		||||
H=14
 | 
			
		||||
Text="#disk2#\"
 | 
			
		||||
LeftMouseUpAction=!Execute ["#disk2#\"]
 | 
			
		||||
 | 
			
		||||
[meterValueDisk2]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleRightText
 | 
			
		||||
MeasureName=measureUsedDisk2
 | 
			
		||||
MeasureName2=measureTotalDisk2
 | 
			
		||||
X=200
 | 
			
		||||
Y=0r
 | 
			
		||||
W=190
 | 
			
		||||
H=14
 | 
			
		||||
Text="%1B/%2B used"
 | 
			
		||||
NumOfDecimals=1
 | 
			
		||||
AutoScale=1
 | 
			
		||||
 | 
			
		||||
[meterBarDisk2]
 | 
			
		||||
Meter=BAR
 | 
			
		||||
MeterStyle=styleBar
 | 
			
		||||
MeasureName=measureUsedDisk2
 | 
			
		||||
X=10
 | 
			
		||||
Y=72
 | 
			
		||||
W=190
 | 
			
		||||
H=1
 | 
			
		||||
							
								
								
									
										119
									
								
								Build/Skins/illustro/Google/Google.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										119
									
								
								Build/Skins/illustro/Google/Google.ini
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,119 @@
 | 
			
		||||
; Lines starting ; (semicolons) are commented out.
 | 
			
		||||
; That is, they do not affect the code and are here for demonstration purposes only.
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
 | 
			
		||||
[Rainmeter]
 | 
			
		||||
; This section contains general settings that can be used to change how Rainmeter behaves.
 | 
			
		||||
Author=poiru
 | 
			
		||||
AppVersion=2003000
 | 
			
		||||
Update=1000
 | 
			
		||||
Background=#@#Background.png
 | 
			
		||||
; #@# is equal to Rainmeter\Skins\illustro\@Resources
 | 
			
		||||
BackgroundMode=3
 | 
			
		||||
BackgroundMargins=0,34,0,14
 | 
			
		||||
 | 
			
		||||
[Metadata]
 | 
			
		||||
; Contains basic information of the skin.
 | 
			
		||||
Description=Allows searching through Google.
 | 
			
		||||
License=Creative Commons BY-NC-SA 3.0
 | 
			
		||||
Version=1.0.0
 | 
			
		||||
 | 
			
		||||
[Variables]
 | 
			
		||||
; Variables declared here can be used later on between two # characters (e.g. #MyVariable#).
 | 
			
		||||
fontName=Trebuchet MS
 | 
			
		||||
textSize=8
 | 
			
		||||
colorBar=235,170,0,255
 | 
			
		||||
colorText=255,255,255,205
 | 
			
		||||
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
; MEASURES return some kind of value
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
 | 
			
		||||
[measureInput]
 | 
			
		||||
; The InputText.dll plugin has special powers: it allows user input.
 | 
			
		||||
; However, it's not the easiest way to start learning Rainmeter. Get a
 | 
			
		||||
; hold of the basics, and then check out the manual entry for InputText.
 | 
			
		||||
Measure=Plugin
 | 
			
		||||
Plugin=InputText.dll
 | 
			
		||||
SolidColor=20,20,20,255
 | 
			
		||||
StringAlign=LEFT
 | 
			
		||||
StringCase=NONE
 | 
			
		||||
StringStyle=BOLD
 | 
			
		||||
StringEffect=SHADOW
 | 
			
		||||
FontEffectColor=0,0,0,20
 | 
			
		||||
FontColor=#colorText#
 | 
			
		||||
FontFace=#fontName#
 | 
			
		||||
FontSize=#textSize#
 | 
			
		||||
X=10
 | 
			
		||||
Y=38
 | 
			
		||||
W=188
 | 
			
		||||
H=17
 | 
			
		||||
FocusDismiss=1
 | 
			
		||||
DefaultValue=""
 | 
			
		||||
Command1=!Execute ["http://www.google.com/search?q=$UserInput$"]
 | 
			
		||||
UpdateDivider=86400
 | 
			
		||||
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
; STYLES are used to "centralize" options
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
 | 
			
		||||
[styleTitle]
 | 
			
		||||
StringAlign=CENTER
 | 
			
		||||
StringCase=UPPER
 | 
			
		||||
StringStyle=BOLD
 | 
			
		||||
StringEffect=SHADOW
 | 
			
		||||
FontEffectColor=0,0,0,50
 | 
			
		||||
FontColor=#colorText#
 | 
			
		||||
FontFace=#fontName#
 | 
			
		||||
FontSize=10
 | 
			
		||||
AntiAlias=1
 | 
			
		||||
ClipString=1
 | 
			
		||||
 | 
			
		||||
[styleLeftText]
 | 
			
		||||
StringAlign=LEFT
 | 
			
		||||
; Meters using styleLeftText will be left-aligned.
 | 
			
		||||
StringCase=NONE
 | 
			
		||||
StringStyle=BOLD
 | 
			
		||||
StringEffect=SHADOW
 | 
			
		||||
FontEffectColor=0,0,0,20
 | 
			
		||||
FontColor=#colorText#
 | 
			
		||||
FontFace=#fontName#
 | 
			
		||||
FontSize=#textSize#
 | 
			
		||||
AntiAlias=1
 | 
			
		||||
ClipString=1
 | 
			
		||||
 | 
			
		||||
[styleSeperator]
 | 
			
		||||
SolidColor=255,255,255,15
 | 
			
		||||
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
; METERS display images, text, bars, etc.
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
 | 
			
		||||
[meterTitle]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleTitle
 | 
			
		||||
; Using MeterStyle=styleTitle will basically "copy" the
 | 
			
		||||
; contents of the [styleTitle] section here during runtime.
 | 
			
		||||
X=100
 | 
			
		||||
Y=12
 | 
			
		||||
W=190
 | 
			
		||||
H=18
 | 
			
		||||
Text="Google"
 | 
			
		||||
 | 
			
		||||
[meterSearch]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleLeftText
 | 
			
		||||
X=10
 | 
			
		||||
Y=40
 | 
			
		||||
W=190
 | 
			
		||||
H=14
 | 
			
		||||
Text="Search..."
 | 
			
		||||
LeftMouseUpAction=!PluginBang "measureInput ExecuteBatch 1"
 | 
			
		||||
 | 
			
		||||
[meterSeperator]
 | 
			
		||||
Meter=IMAGE
 | 
			
		||||
MeterStyle=styleSeperator
 | 
			
		||||
X=10
 | 
			
		||||
Y=52
 | 
			
		||||
W=190
 | 
			
		||||
H=1
 | 
			
		||||
							
								
								
									
										215
									
								
								Build/Skins/illustro/Network/Network.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										215
									
								
								Build/Skins/illustro/Network/Network.ini
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,215 @@
 | 
			
		||||
; Lines starting ; (semicolons) are commented out.
 | 
			
		||||
; That is, they do not affect the code and are here for demonstration purposes only.
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
 | 
			
		||||
[Rainmeter]
 | 
			
		||||
; This section contains general settings that can be used to change how Rainmeter behaves.
 | 
			
		||||
Author=poiru
 | 
			
		||||
AppVersion=2003000
 | 
			
		||||
Update=1000
 | 
			
		||||
Background=#@#Background.png
 | 
			
		||||
; #@# is equal to Rainmeter\Skins\illustro\@Resources
 | 
			
		||||
BackgroundMode=3
 | 
			
		||||
BackgroundMargins=0,34,0,14
 | 
			
		||||
 | 
			
		||||
[Metadata]
 | 
			
		||||
; Contains basic information of the skin.
 | 
			
		||||
Description=Shows your IP address and network activity.
 | 
			
		||||
License=Creative Commons BY-NC-SA 3.0
 | 
			
		||||
Version=1.0.0
 | 
			
		||||
 | 
			
		||||
[Variables]
 | 
			
		||||
; Variables declared here can be used later on between two # characters (e.g. #MyVariable#).
 | 
			
		||||
fontName=Trebuchet MS
 | 
			
		||||
textSize=8
 | 
			
		||||
colorBar=235,170,0,255
 | 
			
		||||
colorText=255,255,255,205
 | 
			
		||||
maxDownload=10485760
 | 
			
		||||
MaxUpload=10485760
 | 
			
		||||
; Set maxDownload and maxUpload to your maximum download and upload speed in bits.
 | 
			
		||||
; To convert kilobits, megabits, kilobytes, and megabytes into bits, go to www.google.com
 | 
			
		||||
; and search for something like "10 megabytes in bits".
 | 
			
		||||
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
; MEASURES return some kind of value
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
 | 
			
		||||
[measureIP]
 | 
			
		||||
; This measure returns your IP. WebParser measures are relatively complicated. If you're a beginner with
 | 
			
		||||
; Rainmeter, take a look at some of the other illustro skins before modifying this one.
 | 
			
		||||
Measure=Plugin
 | 
			
		||||
Plugin=WebParser.dll
 | 
			
		||||
Url=http://checkip.dyndns.org
 | 
			
		||||
UpdateRate=14400
 | 
			
		||||
RegExp="(?siU)Address: (.*)</body>"
 | 
			
		||||
StringIndex=1
 | 
			
		||||
Substitute="":"N/A"
 | 
			
		||||
; Substitute works as follows: "A":"B" where A is a string to substitute and B is a string
 | 
			
		||||
; to substitute with. In this case, it substutes "" (i.e. empty) to N/A
 | 
			
		||||
 | 
			
		||||
[measureNetIn]
 | 
			
		||||
Measure=NetIn
 | 
			
		||||
NetInSpeed=#maxDownload#
 | 
			
		||||
; NetInSpeed must be set so your maximun download speed for the download bar to scale correctly
 | 
			
		||||
 | 
			
		||||
[measureNetOut]
 | 
			
		||||
Measure=NetOut
 | 
			
		||||
NetOutSpeed=#maxUpload#
 | 
			
		||||
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
; STYLES are used to "centralize" options
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
 | 
			
		||||
[styleTitle]
 | 
			
		||||
StringAlign=CENTER
 | 
			
		||||
StringCase=UPPER
 | 
			
		||||
StringStyle=BOLD
 | 
			
		||||
StringEffect=SHADOW
 | 
			
		||||
FontEffectColor=0,0,0,50
 | 
			
		||||
FontColor=#colorText#
 | 
			
		||||
FontFace=#fontName#
 | 
			
		||||
FontSize=10
 | 
			
		||||
AntiAlias=1
 | 
			
		||||
ClipString=1
 | 
			
		||||
 | 
			
		||||
[styleLeftText]
 | 
			
		||||
StringAlign=LEFT
 | 
			
		||||
; Meters using styleLeftText will be left-aligned.
 | 
			
		||||
StringCase=NONE
 | 
			
		||||
StringStyle=BOLD
 | 
			
		||||
StringEffect=SHADOW
 | 
			
		||||
FontEffectColor=0,0,0,20
 | 
			
		||||
FontColor=#colorText#
 | 
			
		||||
FontFace=#fontName#
 | 
			
		||||
FontSize=#textSize#
 | 
			
		||||
AntiAlias=1
 | 
			
		||||
ClipString=1
 | 
			
		||||
 | 
			
		||||
[styleRightText]
 | 
			
		||||
StringAlign=RIGHT
 | 
			
		||||
StringCase=NONE
 | 
			
		||||
StringStyle=BOLD
 | 
			
		||||
StringEffect=SHADOW
 | 
			
		||||
FontEffectColor=0,0,0,20
 | 
			
		||||
FontColor=#colorText#
 | 
			
		||||
FontFace=#fontName#
 | 
			
		||||
FontSize=#textSize#
 | 
			
		||||
AntiAlias=1
 | 
			
		||||
ClipString=1
 | 
			
		||||
 | 
			
		||||
[styleBar]
 | 
			
		||||
BarColor=#colorBar#
 | 
			
		||||
BarOrientation=HORIZONTAL
 | 
			
		||||
SolidColor=255,255,255,15
 | 
			
		||||
 | 
			
		||||
[styleSeperator]
 | 
			
		||||
SolidColor=255,255,255,15
 | 
			
		||||
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
; METERS display images, text, bars, etc.
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
 | 
			
		||||
[meterTitle]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleTitle
 | 
			
		||||
; Using MeterStyle=styleTitle will basically "copy" the
 | 
			
		||||
; contents of the [styleTitle] section here during runtime.
 | 
			
		||||
X=100
 | 
			
		||||
Y=12
 | 
			
		||||
W=190
 | 
			
		||||
H=18
 | 
			
		||||
Text="Network"
 | 
			
		||||
; Even though the text is set to Network, Rainmeter will display
 | 
			
		||||
; it as NETWORK, because styleTitle contains StringCase=UPPER.
 | 
			
		||||
 | 
			
		||||
[meterIPLabel]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleLeftText
 | 
			
		||||
X=10
 | 
			
		||||
Y=40
 | 
			
		||||
W=190
 | 
			
		||||
H=14
 | 
			
		||||
Text="IP Address"
 | 
			
		||||
 | 
			
		||||
[meterIPValue]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleRightText
 | 
			
		||||
MeasureName=measureIP
 | 
			
		||||
X=200
 | 
			
		||||
Y=0r
 | 
			
		||||
; r stands for relative. In this case, the Y postition of meterValueCPU is 0 pixels
 | 
			
		||||
; below the Y value of the previous meter (i.e it's the same as in meterLabelCPU).
 | 
			
		||||
W=190
 | 
			
		||||
H=14
 | 
			
		||||
Text="%1"
 | 
			
		||||
; %1 stands for the value of MeasureName (measureIP in this case).
 | 
			
		||||
 | 
			
		||||
[meterSeperator]
 | 
			
		||||
Meter=IMAGE
 | 
			
		||||
MeterStyle=styleSeperator
 | 
			
		||||
X=10
 | 
			
		||||
Y=52
 | 
			
		||||
W=190
 | 
			
		||||
H=1
 | 
			
		||||
 | 
			
		||||
[meterUploadLabel]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleLeftText
 | 
			
		||||
X=10
 | 
			
		||||
Y=60
 | 
			
		||||
W=190
 | 
			
		||||
H=14
 | 
			
		||||
Text="Upload"
 | 
			
		||||
 | 
			
		||||
[meterUploadValue]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleRightText
 | 
			
		||||
MeasureName=measureNetOut
 | 
			
		||||
X=200
 | 
			
		||||
Y=0r
 | 
			
		||||
W=190
 | 
			
		||||
H=14
 | 
			
		||||
Text="%1B/s"
 | 
			
		||||
NumOfDecimals=1
 | 
			
		||||
AutoScale=1
 | 
			
		||||
; Because measureIP returns the current upload speed in bytes, we must use AutoScale=1 to
 | 
			
		||||
; automatically scale the value into a more readable figure.
 | 
			
		||||
 | 
			
		||||
[meterUploadBar]
 | 
			
		||||
Meter=BAR
 | 
			
		||||
MeterStyle=styleBar
 | 
			
		||||
MeasureName=measureNetOut
 | 
			
		||||
X=10
 | 
			
		||||
Y=72
 | 
			
		||||
W=190
 | 
			
		||||
H=1
 | 
			
		||||
 | 
			
		||||
[meterDownloadLabel]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleLeftText
 | 
			
		||||
X=10
 | 
			
		||||
Y=80
 | 
			
		||||
W=190
 | 
			
		||||
H=14
 | 
			
		||||
Text="Download"
 | 
			
		||||
 | 
			
		||||
[meterDownloadValue]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleRightText
 | 
			
		||||
MeasureName=measureNetIn
 | 
			
		||||
X=200
 | 
			
		||||
Y=0r
 | 
			
		||||
W=190
 | 
			
		||||
H=14
 | 
			
		||||
Text="%1B/s"
 | 
			
		||||
NumOfDecimals=1
 | 
			
		||||
AutoScale=1
 | 
			
		||||
 | 
			
		||||
[meterDownloadBar]
 | 
			
		||||
Meter=BAR
 | 
			
		||||
MeterStyle=styleBar
 | 
			
		||||
MeasureName=measureNetIn
 | 
			
		||||
X=10
 | 
			
		||||
Y=92
 | 
			
		||||
W=190
 | 
			
		||||
H=1
 | 
			
		||||
							
								
								
									
										147
									
								
								Build/Skins/illustro/Recycle Bin/Recycle Bin.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										147
									
								
								Build/Skins/illustro/Recycle Bin/Recycle Bin.ini
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,147 @@
 | 
			
		||||
; Lines starting ; (semicolons) are commented out.
 | 
			
		||||
; That is, they do not affect the code and are here for demonstration purposes only.
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
 | 
			
		||||
[Rainmeter]
 | 
			
		||||
; This section contains general settings that can be used to change how Rainmeter behaves.
 | 
			
		||||
Author=poiru
 | 
			
		||||
AppVersion=2003000
 | 
			
		||||
Update=1000
 | 
			
		||||
Background=#@#Background.png
 | 
			
		||||
; #@# is equal to Rainmeter\Skins\illustro\@Resources
 | 
			
		||||
BackgroundMode=3
 | 
			
		||||
BackgroundMargins=0,34,0,14
 | 
			
		||||
 | 
			
		||||
[Metadata]
 | 
			
		||||
; Contains basic information of the skin.
 | 
			
		||||
Description=Shows the state and size of your Recycle Bin.
 | 
			
		||||
License=Creative Commons BY-NC-SA 3.0
 | 
			
		||||
Version=1.0.0
 | 
			
		||||
 | 
			
		||||
[Variables]
 | 
			
		||||
; Variables declared here can be used later on between two # characters (e.g. #MyVariable#).
 | 
			
		||||
fontName=Trebuchet MS
 | 
			
		||||
textSize=8
 | 
			
		||||
colorBar=235,170,0,255
 | 
			
		||||
colorText=255,255,255,205
 | 
			
		||||
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
; MEASURES return some kind of value
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
 | 
			
		||||
[measureBinItems]
 | 
			
		||||
; This measure returns the amount of items in the Recycle Bin.
 | 
			
		||||
Measure=Plugin
 | 
			
		||||
Plugin=RecycleManager.dll
 | 
			
		||||
RecycleType=COUNT
 | 
			
		||||
UpdateDivider=3
 | 
			
		||||
; UpdateDivider sets the rate at which the value of the measure is updated. It is
 | 
			
		||||
; calculated as follows: UpdateDivider x Update. In this case, Update is set to
 | 
			
		||||
; 1000 milliseconds (in the [Rainmeter] section). 1000 x 3 = 3000 ms or 3 seconds.
 | 
			
		||||
 | 
			
		||||
[measureBinSize]
 | 
			
		||||
; Returns the total size of the Recycle Bin in bytes.
 | 
			
		||||
Measure=Plugin
 | 
			
		||||
Plugin=RecycleManager.dll
 | 
			
		||||
RecycleType=SIZE
 | 
			
		||||
UpdateDivider=3
 | 
			
		||||
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
; STYLES are used to "centralize" options
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
 | 
			
		||||
[styleTitle]
 | 
			
		||||
StringAlign=CENTER
 | 
			
		||||
StringCase=UPPER
 | 
			
		||||
StringStyle=BOLD
 | 
			
		||||
StringEffect=SHADOW
 | 
			
		||||
FontEffectColor=0,0,0,50
 | 
			
		||||
FontColor=#colorText#
 | 
			
		||||
FontFace=#fontName#
 | 
			
		||||
FontSize=10
 | 
			
		||||
AntiAlias=1
 | 
			
		||||
ClipString=1
 | 
			
		||||
 | 
			
		||||
[styleLeftText]
 | 
			
		||||
StringAlign=LEFT
 | 
			
		||||
; Meters using styleLeftText will be left-aligned.
 | 
			
		||||
StringCase=NONE
 | 
			
		||||
StringStyle=BOLD
 | 
			
		||||
StringEffect=SHADOW
 | 
			
		||||
FontEffectColor=0,0,0,20
 | 
			
		||||
FontColor=#colorText#
 | 
			
		||||
FontFace=#fontName#
 | 
			
		||||
FontSize=#textSize#
 | 
			
		||||
AntiAlias=1
 | 
			
		||||
ClipString=1
 | 
			
		||||
 | 
			
		||||
[styleRightText]
 | 
			
		||||
StringAlign=RIGHT
 | 
			
		||||
StringCase=NONE
 | 
			
		||||
StringStyle=BOLD
 | 
			
		||||
StringEffect=SHADOW
 | 
			
		||||
FontEffectColor=0,0,0,20
 | 
			
		||||
FontColor=#colorText#
 | 
			
		||||
FontFace=#fontName#
 | 
			
		||||
FontSize=#textSize#
 | 
			
		||||
AntiAlias=1
 | 
			
		||||
ClipString=1
 | 
			
		||||
 | 
			
		||||
[styleSeperator]
 | 
			
		||||
SolidColor=255,255,255,15
 | 
			
		||||
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
; METERS display images, text, bars, etc.
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
 | 
			
		||||
[meterTitle]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleTitle
 | 
			
		||||
; Using MeterStyle=styleTitle will basically "copy" the
 | 
			
		||||
; contents of the [styleTitle] section here during runtime.
 | 
			
		||||
X=100
 | 
			
		||||
Y=12
 | 
			
		||||
W=190
 | 
			
		||||
H=18
 | 
			
		||||
Text="Recycle Bin"
 | 
			
		||||
; Even though the text is set to Recycle Bin, Rainmeter will display
 | 
			
		||||
; it as RECYCLE BIN, because styleTitle contains StringCase=UPPER.
 | 
			
		||||
LeftMouseUpAction=!Execute [!PluginBang "measureBinItems OpenBin"]
 | 
			
		||||
RightMouseUpAction=!Execute [!PluginBang "measureBinItems EmptyBin"]
 | 
			
		||||
ToolTipText="Left-click to open Recycle Bin#CRLF#Right-click to empty"
 | 
			
		||||
; Hovering over this meter will display a tooltip with the text above.
 | 
			
		||||
; The #CRLF# variable creates a new line.
 | 
			
		||||
 | 
			
		||||
[meterBinItems]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleLeftText
 | 
			
		||||
MeasureName=measureBinItems
 | 
			
		||||
X=10
 | 
			
		||||
Y=40
 | 
			
		||||
W=190
 | 
			
		||||
H=14
 | 
			
		||||
Text="%1 items"
 | 
			
		||||
; %1 stands for the value of MeasureName (measureBinItems in this case).
 | 
			
		||||
 | 
			
		||||
[meterBinSize]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleRightText
 | 
			
		||||
MeasureName=measureBinSize
 | 
			
		||||
X=200
 | 
			
		||||
Y=0r
 | 
			
		||||
; r stands for relative. In this case, the Y postition of meterValueCPU is 0 pixels
 | 
			
		||||
; below the Y value of the previous meter (i.e it's the same as in meterLabelCPU).
 | 
			
		||||
W=190
 | 
			
		||||
H=14
 | 
			
		||||
Text="%1B"
 | 
			
		||||
AutoScale=1
 | 
			
		||||
; Because measureBinSize returns the size in bytes, we must use AutoScale=1 to
 | 
			
		||||
; automatically scale the value into a more readable figure.
 | 
			
		||||
 | 
			
		||||
[meterSeperator]
 | 
			
		||||
Meter=IMAGE
 | 
			
		||||
MeterStyle=styleSeperator
 | 
			
		||||
X=10
 | 
			
		||||
Y=52
 | 
			
		||||
W=190
 | 
			
		||||
H=1
 | 
			
		||||
							
								
								
									
										206
									
								
								Build/Skins/illustro/System/System.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										206
									
								
								Build/Skins/illustro/System/System.ini
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,206 @@
 | 
			
		||||
; Lines starting ; (semicolons) are commented out.
 | 
			
		||||
; That is, they do not affect the code and are here for demonstration purposes only.
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
 | 
			
		||||
[Rainmeter]
 | 
			
		||||
; This section contains general settings that can be used to change how Rainmeter behaves.
 | 
			
		||||
Author=poiru
 | 
			
		||||
AppVersion=2003000
 | 
			
		||||
Update=1000
 | 
			
		||||
Background=#@#Background.png
 | 
			
		||||
; #@# is equal to Rainmeter\Skins\illustro\@Resources
 | 
			
		||||
BackgroundMode=3
 | 
			
		||||
BackgroundMargins=0,34,0,14
 | 
			
		||||
 | 
			
		||||
[Metadata]
 | 
			
		||||
; Contains basic information of the skin.
 | 
			
		||||
Description=Displays basic system stats.
 | 
			
		||||
License=Creative Commons BY-NC-SA 3.0
 | 
			
		||||
Version=1.0.0
 | 
			
		||||
 | 
			
		||||
[Variables]
 | 
			
		||||
; Variables declared here can be used later on between two # characters (e.g. #MyVariable#).
 | 
			
		||||
fontName=Trebuchet MS
 | 
			
		||||
textSize=8
 | 
			
		||||
colorBar=235,170,0,255
 | 
			
		||||
colorText=255,255,255,205
 | 
			
		||||
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
; MEASURES return some kind of value
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
 | 
			
		||||
[measureCPU]
 | 
			
		||||
; This measure returns the average CPU load between all cores.
 | 
			
		||||
Measure=CPU
 | 
			
		||||
Processor=0
 | 
			
		||||
 | 
			
		||||
[measureRAM]
 | 
			
		||||
; Returns the amount of RAM used in bytes.
 | 
			
		||||
Measure=PhysicalMemory
 | 
			
		||||
UpdateDivider=20
 | 
			
		||||
; UpdateDivider sets the rate at which the value of the measure is updated. It is
 | 
			
		||||
; calculated as follows: UpdateDivider x Update. In this case, Update is set to
 | 
			
		||||
; 1000 milliseconds (in the [Rainmeter] section). 1000 x 20 = 20000 ms or 20 seconds.
 | 
			
		||||
 | 
			
		||||
[measureSWAP]
 | 
			
		||||
; Returns the amount of SWAP (pagefile) used in bytes.
 | 
			
		||||
Measure=SWAPMemory
 | 
			
		||||
UpdateDivider=20
 | 
			
		||||
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
; STYLES are used to "centralize" options
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
 | 
			
		||||
[styleTitle]
 | 
			
		||||
StringAlign=CENTER
 | 
			
		||||
StringCase=UPPER
 | 
			
		||||
StringStyle=BOLD
 | 
			
		||||
StringEffect=SHADOW
 | 
			
		||||
FontEffectColor=0,0,0,50
 | 
			
		||||
FontColor=#colorText#
 | 
			
		||||
FontFace=#fontName#
 | 
			
		||||
FontSize=10
 | 
			
		||||
AntiAlias=1
 | 
			
		||||
ClipString=1
 | 
			
		||||
 | 
			
		||||
[styleLeftText]
 | 
			
		||||
StringAlign=LEFT
 | 
			
		||||
; Meters using styleLeftText will be left-aligned.
 | 
			
		||||
StringCase=NONE
 | 
			
		||||
StringStyle=BOLD
 | 
			
		||||
StringEffect=SHADOW
 | 
			
		||||
FontEffectColor=0,0,0,20
 | 
			
		||||
FontColor=#colorText#
 | 
			
		||||
FontFace=#fontName#
 | 
			
		||||
FontSize=#textSize#
 | 
			
		||||
AntiAlias=1
 | 
			
		||||
ClipString=1
 | 
			
		||||
 | 
			
		||||
[styleRightText]
 | 
			
		||||
StringAlign=RIGHT
 | 
			
		||||
StringCase=NONE
 | 
			
		||||
StringStyle=BOLD
 | 
			
		||||
StringEffect=SHADOW
 | 
			
		||||
FontEffectColor=0,0,0,20
 | 
			
		||||
FontColor=#colorText#
 | 
			
		||||
FontFace=#fontName#
 | 
			
		||||
FontSize=#textSize#
 | 
			
		||||
AntiAlias=1
 | 
			
		||||
ClipString=1
 | 
			
		||||
 | 
			
		||||
[styleBar]
 | 
			
		||||
BarColor=#colorBar#
 | 
			
		||||
BarOrientation=HORIZONTAL
 | 
			
		||||
SolidColor=255,255,255,15
 | 
			
		||||
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
; METERS display images, text, bars, etc.
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
 | 
			
		||||
[meterTitle]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleTitle
 | 
			
		||||
; Using MeterStyle=styleTitle will basically "copy" the
 | 
			
		||||
; contents of the [styleTitle] section here during runtime.
 | 
			
		||||
X=100
 | 
			
		||||
Y=12
 | 
			
		||||
W=190
 | 
			
		||||
H=18
 | 
			
		||||
Text="System"
 | 
			
		||||
; Even though the text is set to System, Rainmeter will display
 | 
			
		||||
; it as SYSTEM, because styleTitle contains StringCase=UPPER.
 | 
			
		||||
LeftMouseUpAction=!Execute ["taskmgr.exe"]
 | 
			
		||||
; Left-clicking this meter will launch taskmgr.exe (the Task Manager).
 | 
			
		||||
ToolTipText="Open Task Manager"
 | 
			
		||||
; Hovering over this meter will display a tooltip with the text above.
 | 
			
		||||
 | 
			
		||||
[meterLabelCPU]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleLeftText
 | 
			
		||||
X=10
 | 
			
		||||
Y=40
 | 
			
		||||
W=190
 | 
			
		||||
H=14
 | 
			
		||||
Text="CPU Usage"
 | 
			
		||||
 | 
			
		||||
[meterValueCPU]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleRightText
 | 
			
		||||
MeasureName=measureCPU
 | 
			
		||||
X=200
 | 
			
		||||
Y=0r
 | 
			
		||||
; r stands for relative. In this case, the Y postition of meterValueCPU is 0 pixels
 | 
			
		||||
; below the Y value of the previous meter (i.e it's the same as in meterLabelCPU).
 | 
			
		||||
W=190
 | 
			
		||||
H=14
 | 
			
		||||
Text="%1%"
 | 
			
		||||
; %1 stands for the value of MeasureName (measureCPU in this case).
 | 
			
		||||
 | 
			
		||||
[meterBarCPU]
 | 
			
		||||
Meter=BAR
 | 
			
		||||
MeterStyle=styleBar
 | 
			
		||||
MeasureName=measureCPU
 | 
			
		||||
X=10
 | 
			
		||||
Y=52
 | 
			
		||||
W=190
 | 
			
		||||
H=1
 | 
			
		||||
 | 
			
		||||
[meterLabelRAM]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleLeftText
 | 
			
		||||
X=10
 | 
			
		||||
Y=60
 | 
			
		||||
W=190
 | 
			
		||||
H=14
 | 
			
		||||
Text="RAM Usage"
 | 
			
		||||
 | 
			
		||||
[meterValueRAM]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleRightText
 | 
			
		||||
MeasureName=measureRAM
 | 
			
		||||
X=200
 | 
			
		||||
Y=0r
 | 
			
		||||
W=190
 | 
			
		||||
H=14
 | 
			
		||||
Text="%1%"
 | 
			
		||||
Percentual=1
 | 
			
		||||
; Percentual=1 needs to be added her because measureRAM returns the amount
 | 
			
		||||
; of RAM used in bytes. Using Percentual=1 will convert that into a percentual value.
 | 
			
		||||
 | 
			
		||||
[meterBarRAM]
 | 
			
		||||
Meter=BAR
 | 
			
		||||
MeterStyle=styleBar
 | 
			
		||||
MeasureName=measureRAM
 | 
			
		||||
X=10
 | 
			
		||||
Y=72
 | 
			
		||||
W=190
 | 
			
		||||
H=1
 | 
			
		||||
 | 
			
		||||
[meterLabelSWAP]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleLeftText
 | 
			
		||||
X=10
 | 
			
		||||
Y=80
 | 
			
		||||
W=190
 | 
			
		||||
H=14
 | 
			
		||||
Text="SWAP Usage"
 | 
			
		||||
 | 
			
		||||
[meterValueSWAP]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleRightText
 | 
			
		||||
MeasureName=measureSWAP
 | 
			
		||||
X=200
 | 
			
		||||
Y=0r
 | 
			
		||||
W=190
 | 
			
		||||
H=14
 | 
			
		||||
Text="%1%"
 | 
			
		||||
Percentual=1
 | 
			
		||||
 | 
			
		||||
[meterBarSWAP]
 | 
			
		||||
Meter=BAR
 | 
			
		||||
MeterStyle=styleBar
 | 
			
		||||
MeasureName=measureSWAP
 | 
			
		||||
X=10
 | 
			
		||||
Y=92
 | 
			
		||||
W=190
 | 
			
		||||
H=1
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Build/Skins/illustro/Welcome/Background.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Build/Skins/illustro/Welcome/Background.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 1.8 KiB  | 
							
								
								
									
										173
									
								
								Build/Skins/illustro/Welcome/Welcome.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										173
									
								
								Build/Skins/illustro/Welcome/Welcome.ini
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,173 @@
 | 
			
		||||
; Lines starting ; (semicolons) are commented out.
 | 
			
		||||
; That is, they do not affect the code and are here for demonstration purposes only.
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
 | 
			
		||||
[Rainmeter]
 | 
			
		||||
; This section contains general settings that can be used to change how Rainmeter behaves.
 | 
			
		||||
Author=poiru
 | 
			
		||||
AppVersion=2003000
 | 
			
		||||
Update=1000
 | 
			
		||||
 | 
			
		||||
[Metadata]
 | 
			
		||||
; Contains basic information of the skin.
 | 
			
		||||
Description=The welcome skin for illustro.
 | 
			
		||||
License=Creative Commons BY-NC-SA 3.0
 | 
			
		||||
Version=1.0.0
 | 
			
		||||
 | 
			
		||||
[Variables]
 | 
			
		||||
; Variables declared here can be used later on between two # characters (e.g. #MyVariable#).
 | 
			
		||||
fontName=Trebuchet MS
 | 
			
		||||
textSize=9
 | 
			
		||||
colorBar=235,170,0,255
 | 
			
		||||
colorText=255,255,255,205
 | 
			
		||||
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
; STYLES are used to "centralize" options
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
 | 
			
		||||
[styleTitle]
 | 
			
		||||
StringAlign=LEFT
 | 
			
		||||
StringCase=UPPER
 | 
			
		||||
StringStyle=BOLD
 | 
			
		||||
StringEffect=SHADOW
 | 
			
		||||
FontEffectColor=0,0,0,50
 | 
			
		||||
FontColor=#colorText#
 | 
			
		||||
FontFace=#fontName#
 | 
			
		||||
FontSize=10
 | 
			
		||||
AntiAlias=1
 | 
			
		||||
ClipString=1
 | 
			
		||||
 | 
			
		||||
[styleLeftText]
 | 
			
		||||
StringAlign=LEFT
 | 
			
		||||
; Meters using styleLeftText will be left-aligned.
 | 
			
		||||
StringCase=NONE
 | 
			
		||||
StringStyle=BOLD
 | 
			
		||||
StringEffect=SHADOW
 | 
			
		||||
FontEffectColor=0,0,0,20
 | 
			
		||||
FontColor=#colorText#
 | 
			
		||||
FontFace=#fontName#
 | 
			
		||||
FontSize=#textSize#
 | 
			
		||||
AntiAlias=1
 | 
			
		||||
ClipString=1
 | 
			
		||||
 | 
			
		||||
[styleSeperator]
 | 
			
		||||
SolidColor=255,255,255,15
 | 
			
		||||
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
; METERS display images, text, bars, etc.
 | 
			
		||||
; ----------------------------------
 | 
			
		||||
 | 
			
		||||
[meterBackground]
 | 
			
		||||
Meter=IMAGE
 | 
			
		||||
ImageName=Background.png
 | 
			
		||||
X=0
 | 
			
		||||
Y=0
 | 
			
		||||
 | 
			
		||||
[meterMidLine]
 | 
			
		||||
Meter=IMAGE
 | 
			
		||||
SolidColor=255,255,255,80
 | 
			
		||||
W=1
 | 
			
		||||
H=200
 | 
			
		||||
X=245
 | 
			
		||||
Y=60
 | 
			
		||||
 | 
			
		||||
[meterTitle]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleTitle
 | 
			
		||||
; Using MeterStyle=styleTitle will basically "copy" the
 | 
			
		||||
; contents of the [styleTitle] section here during runtime.
 | 
			
		||||
X=20
 | 
			
		||||
Y=18
 | 
			
		||||
W=400
 | 
			
		||||
H=18
 | 
			
		||||
FontSize=11
 | 
			
		||||
Text="Welcome to Rainmeter!"
 | 
			
		||||
 | 
			
		||||
[meterIllustroTitle]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleLeftText
 | 
			
		||||
X=20
 | 
			
		||||
Y=55
 | 
			
		||||
W=240
 | 
			
		||||
H=30
 | 
			
		||||
FontColor=255,217,120,255
 | 
			
		||||
FontSize=10
 | 
			
		||||
Text="illustro: Getting started with Rainmeter skinning"
 | 
			
		||||
 | 
			
		||||
[meterIllustroLine]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleLeftText
 | 
			
		||||
X=20
 | 
			
		||||
Y=95
 | 
			
		||||
W=225
 | 
			
		||||
H=175
 | 
			
		||||
FontColor=#colorText#
 | 
			
		||||
FontSize=9
 | 
			
		||||
Text="illustro is a simple set of skins designed to show some of the capabilities of Rainmeter. It offers a good place to start learning how to edit Rainmeter to make it your own. Use the "Rainmeter 101" link on the right to learn the basics.#CRLF##CRLF#To explore installed skins and change Rainmeter settings, simply click on the Rainmeter tray icon."
 | 
			
		||||
; #CRLF# is a pre-defined varaible for newline.
 | 
			
		||||
 | 
			
		||||
[meterLinksTitle]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleLeftText
 | 
			
		||||
X=260
 | 
			
		||||
Y=55
 | 
			
		||||
W=235
 | 
			
		||||
H=30
 | 
			
		||||
FontColor=255,217,120,255
 | 
			
		||||
FontSize=10
 | 
			
		||||
Text=Recommended skin suites: Start using Rainmeter now!
 | 
			
		||||
 | 
			
		||||
[meterLinksLine]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleLeftText
 | 
			
		||||
X=260
 | 
			
		||||
Y=95
 | 
			
		||||
W=225
 | 
			
		||||
H=80
 | 
			
		||||
FontColor=#colorText#
 | 
			
		||||
FontSize=9
 | 
			
		||||
Text=There are literally thousands of skins available for Rainmeter. We have a few popular ones we recommend, which you can install with just a few clicks. 
 | 
			
		||||
 | 
			
		||||
[meterLink1]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleLeftText
 | 
			
		||||
X=260
 | 
			
		||||
Y=175
 | 
			
		||||
W=225
 | 
			
		||||
H=14
 | 
			
		||||
FontColor=255,217,120,255
 | 
			
		||||
Text="<22> Recommended Skin Suites"
 | 
			
		||||
LeftMouseUpAction=!Execute ["http://rainmeter.net/cms/Discover"]
 | 
			
		||||
 | 
			
		||||
[meterLink2]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleLeftText
 | 
			
		||||
X=260
 | 
			
		||||
Y=195
 | 
			
		||||
W=225
 | 
			
		||||
H=14
 | 
			
		||||
FontColor=255,174,69,255
 | 
			
		||||
Text="<22> Rainmeter 101"
 | 
			
		||||
LeftMouseUpAction=!Execute ["http://rainmeter.net/cms/Rainmeter101"]
 | 
			
		||||
 | 
			
		||||
[meterLink3]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleLeftText
 | 
			
		||||
X=260
 | 
			
		||||
Y=215
 | 
			
		||||
W=225
 | 
			
		||||
H=14
 | 
			
		||||
FontColor=255,174,69,255
 | 
			
		||||
Text="<22> Rainmeter Manual"
 | 
			
		||||
LeftMouseUpAction=!Execute ["http://rainmeter.net/cms/Support"]
 | 
			
		||||
 | 
			
		||||
[meterLink4]
 | 
			
		||||
Meter=STRING
 | 
			
		||||
MeterStyle=styleLeftText
 | 
			
		||||
X=260
 | 
			
		||||
Y=235
 | 
			
		||||
W=225
 | 
			
		||||
H=14
 | 
			
		||||
FontColor=255,174,69,255
 | 
			
		||||
Text="<22> Rainmeter Forums"
 | 
			
		||||
LeftMouseUpAction=!Execute ["http://rainmeter.net/forums"]
 | 
			
		||||
							
								
								
									
										31
									
								
								Build/VS/Rainmeter.Cpp.Default.props
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								Build/VS/Rainmeter.Cpp.Default.props
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,31 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<!-- Visual C++ project options meant to applied before the default Microsoft property sheets. -->
 | 
			
		||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 | 
			
		||||
  <PropertyGroup Label="UserMacros">
 | 
			
		||||
    <WinDDK71Dir>$(SolutionDir)..\WinDDK\7600.16385.1\</WinDDK71Dir>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
  <ItemGroup Label="ProjectConfigurations">
 | 
			
		||||
    <ProjectConfiguration Include="Debug|Win32">
 | 
			
		||||
      <Configuration>Debug</Configuration>
 | 
			
		||||
      <Platform>Win32</Platform>
 | 
			
		||||
    </ProjectConfiguration>
 | 
			
		||||
    <ProjectConfiguration Include="Debug|x64">
 | 
			
		||||
      <Configuration>Debug</Configuration>
 | 
			
		||||
      <Platform>x64</Platform>
 | 
			
		||||
    </ProjectConfiguration>
 | 
			
		||||
    <ProjectConfiguration Include="Release|Win32">
 | 
			
		||||
      <Configuration>Release</Configuration>
 | 
			
		||||
      <Platform>Win32</Platform>
 | 
			
		||||
    </ProjectConfiguration>
 | 
			
		||||
    <ProjectConfiguration Include="Release|x64">
 | 
			
		||||
      <Configuration>Release</Configuration>
 | 
			
		||||
      <Platform>x64</Platform>
 | 
			
		||||
    </ProjectConfiguration>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
 | 
			
		||||
  <PropertyGroup Label="Configuration">
 | 
			
		||||
    <CharacterSet>Unicode</CharacterSet>
 | 
			
		||||
    <PlatformToolset>v120_xp</PlatformToolset>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
</Project>
 | 
			
		||||
							
								
								
									
										129
									
								
								Build/VS/Rainmeter.Cpp.props
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										129
									
								
								Build/VS/Rainmeter.Cpp.props
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,129 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<!-- Visual C++ project options meant to applied after the default Microsoft property sheets. -->
 | 
			
		||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 | 
			
		||||
  <PropertyGroup>
 | 
			
		||||
    <!-- Use the Win8 SDK headers even though we are using the v120_xp toolset. -->
 | 
			
		||||
    <IncludePath>$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);</IncludePath>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
  <PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
 | 
			
		||||
    <UseDebugLibraries>true</UseDebugLibraries>
 | 
			
		||||
    <LinkIncremental>true</LinkIncremental>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
  <PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
 | 
			
		||||
    <WholeProgramOptimization>true</WholeProgramOptimization>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
  <PropertyGroup>
 | 
			
		||||
    <!-- This is overridden by Build.bat during full build. -->
 | 
			
		||||
    <RmOutDirRoot Condition=" '$(Platform)' == 'Win32' ">$(SolutionDir)x32-$(Configuration)\</RmOutDirRoot>
 | 
			
		||||
    <RmOutDirRoot Condition=" '$(Platform)' == 'x64' ">$(SolutionDir)x64-$(Configuration)\</RmOutDirRoot>
 | 
			
		||||
 | 
			
		||||
    <OutDir>$(RmOutDirRoot)</OutDir>
 | 
			
		||||
    <IntDir>$(OutDir)\Obj\$(ProjectName)\</IntDir>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
  <PropertyGroup>
 | 
			
		||||
    <!-- Avoid .lib files in TestBench. -->
 | 
			
		||||
    <OutDir Condition="'$(ConfigurationType)'=='StaticLibrary'">$(IntDir)</OutDir>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
  <!-- Macros for unit testing. -->
 | 
			
		||||
  <PropertyGroup Label="UserMacros">
 | 
			
		||||
    <!-- This is set to true by Build.bat when building full builds. -->
 | 
			
		||||
    <ExcludeTests>false</ExcludeTests>
 | 
			
		||||
 | 
			
		||||
    <!-- Non-static projects must delayload CppUnitTestFramework.dll to avoid the "module not found"
 | 
			
		||||
         errors (since CppUnitTestFramework.dll is available only when running tests). -->
 | 
			
		||||
    <DelayLoadTestDLL>Microsoft.VisualStudio.TestTools.CppUnitTestFramework.dll</DelayLoadTestDLL>
 | 
			
		||||
    <DelayLoadTestDLL Condition="'$(Platform)'=='x64'">Microsoft.VisualStudio.TestTools.CppUnitTestFramework.x64.dll</DelayLoadTestDLL>
 | 
			
		||||
    <DelayLoadTestDLL Condition="'$(ConfigurationType)'=='StaticLibrary'"></DelayLoadTestDLL>
 | 
			
		||||
    <DelayLoadTestDLL Condition="'$(ExcludeTests)'=='true'"></DelayLoadTestDLL>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
  <ItemDefinitionGroup Condition="'$(ExcludeTests)'=='false'">
 | 
			
		||||
    <ClCompile>
 | 
			
		||||
      <AdditionalIncludeDirectories>$(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
 | 
			
		||||
    </ClCompile>
 | 
			
		||||
    <Link>
 | 
			
		||||
      <AdditionalLibraryDirectories>$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
 | 
			
		||||
    </Link>
 | 
			
		||||
  </ItemDefinitionGroup>
 | 
			
		||||
 | 
			
		||||
  <ItemDefinitionGroup>
 | 
			
		||||
    <ClCompile>
 | 
			
		||||
      <!-- Ignore C4351 to get rid of "new behavior: elements of array 'array' will be default initialized" -->
 | 
			
		||||
      <DisableSpecificWarnings>4351;%(DisableSpecificWarnings)</DisableSpecificWarnings>
 | 
			
		||||
 | 
			
		||||
      <ExceptionHandling>false</ExceptionHandling>
 | 
			
		||||
 | 
			
		||||
      <!-- Set WINVER=0x0601 and friends (Win7) to avoid using Win8 specific features in the Win8 SDK. -->
 | 
			
		||||
      <!-- Set _HAS_EXCEPTIONS=0 to accompany the disabled exception handling above. -->
 | 
			
		||||
      <PreprocessorDefinitions>WIN32;_WINDOWS;WINVER=0x0601;_WIN32_WINNT=0x0601;_WIN32_IE=0x0601;PSAPI_VERSION=1;_CRT_SECURE_NO_WARNINGS;WIN32_LEAN_AND_MEAN;_HAS_EXCEPTIONS=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 | 
			
		||||
      <WarningLevel>Level3</WarningLevel>
 | 
			
		||||
    </ClCompile>
 | 
			
		||||
    <Link>
 | 
			
		||||
      <SubSystem>Windows</SubSystem>
 | 
			
		||||
      <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
 | 
			
		||||
      <ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
 | 
			
		||||
      <RuntimeTypeInfo>false</RuntimeTypeInfo>
 | 
			
		||||
    </Link>
 | 
			
		||||
    <ResourceCompile>
 | 
			
		||||
      <Culture>0x0409</Culture>
 | 
			
		||||
    </ResourceCompile>
 | 
			
		||||
  </ItemDefinitionGroup>
 | 
			
		||||
 | 
			
		||||
  <ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'">
 | 
			
		||||
    <ClCompile>
 | 
			
		||||
      <Optimization>Disabled</Optimization>
 | 
			
		||||
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 | 
			
		||||
      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
 | 
			
		||||
    </ClCompile>
 | 
			
		||||
    <Link>
 | 
			
		||||
      <GenerateDebugInformation>true</GenerateDebugInformation>
 | 
			
		||||
    </Link>
 | 
			
		||||
    <ResourceCompile>
 | 
			
		||||
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 | 
			
		||||
    </ResourceCompile>
 | 
			
		||||
  </ItemDefinitionGroup>
 | 
			
		||||
 | 
			
		||||
  <ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
 | 
			
		||||
    <ClCompile>
 | 
			
		||||
      <MultiProcessorCompilation>true</MultiProcessorCompilation>
 | 
			
		||||
      <Optimization>MaxSpeed</Optimization>
 | 
			
		||||
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 | 
			
		||||
      <WholeProgramOptimization>true</WholeProgramOptimization>
 | 
			
		||||
      <FunctionLevelLinking>true</FunctionLevelLinking>
 | 
			
		||||
      <AdditionalOptions>/Gw %(AdditionalOptions)</AdditionalOptions>
 | 
			
		||||
    </ClCompile>
 | 
			
		||||
    <Link>
 | 
			
		||||
      <GenerateDebugInformation>false</GenerateDebugInformation>
 | 
			
		||||
      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
 | 
			
		||||
      <MergeSections>.rdata=.text</MergeSections>
 | 
			
		||||
      <OptimizeReferences>true</OptimizeReferences>
 | 
			
		||||
      <EnableCOMDATFolding>true</EnableCOMDATFolding>
 | 
			
		||||
    </Link>
 | 
			
		||||
    <ResourceCompile>
 | 
			
		||||
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 | 
			
		||||
    </ResourceCompile>
 | 
			
		||||
  </ItemDefinitionGroup>
 | 
			
		||||
 | 
			
		||||
  <ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
 | 
			
		||||
    <ClCompile>
 | 
			
		||||
      <EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
 | 
			
		||||
    </ClCompile>
 | 
			
		||||
    <Link>
 | 
			
		||||
      <TargetMachine>MachineX86</TargetMachine>
 | 
			
		||||
    </Link>
 | 
			
		||||
  </ItemDefinitionGroup>
 | 
			
		||||
 | 
			
		||||
  <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
 | 
			
		||||
    <ResourceCompile>
 | 
			
		||||
      <PreprocessorDefinitions>_WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 | 
			
		||||
    </ResourceCompile>
 | 
			
		||||
    <Link>
 | 
			
		||||
      <TargetMachine>MachineX64</TargetMachine>
 | 
			
		||||
    </Link>
 | 
			
		||||
  </ItemDefinitionGroup>
 | 
			
		||||
</Project>
 | 
			
		||||
							
								
								
									
										18
									
								
								Build/VS/RainmeterPlugin.Cpp.props
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								Build/VS/RainmeterPlugin.Cpp.props
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 | 
			
		||||
  <PropertyGroup>
 | 
			
		||||
    <GenerateManifest>false</GenerateManifest>
 | 
			
		||||
    <OutDir>$(OutDir)Plugins\</OutDir>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
  <ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
 | 
			
		||||
    <Link>
 | 
			
		||||
      <AdditionalDependencies>$(SolutionDir)Plugins\API\x32\Rainmeter.lib;%(AdditionalDependencies)</AdditionalDependencies>
 | 
			
		||||
    </Link>
 | 
			
		||||
  </ItemDefinitionGroup>
 | 
			
		||||
  <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
 | 
			
		||||
    <Link>
 | 
			
		||||
      <AdditionalDependencies>$(SolutionDir)Plugins\API\x64\Rainmeter.lib;%(AdditionalDependencies)</AdditionalDependencies>
 | 
			
		||||
    </Link>
 | 
			
		||||
  </ItemDefinitionGroup>
 | 
			
		||||
</Project>
 | 
			
		||||
							
								
								
									
										9
									
								
								Build/VS/RainmeterPlugin.Cs.props
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								Build/VS/RainmeterPlugin.Cs.props
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 | 
			
		||||
  <PropertyGroup>
 | 
			
		||||
    <!-- This is overridden by Build.bat during full build. -->
 | 
			
		||||
    <RmOutDirRoot Condition=" '$(Platform)' == 'x86' ">$(SolutionDir)x32-$(Configuration)\</RmOutDirRoot>
 | 
			
		||||
    <RmOutDirRoot Condition=" '$(Platform)' == 'x64' ">$(SolutionDir)x64-$(Configuration)\</RmOutDirRoot>
 | 
			
		||||
 | 
			
		||||
    <OutputPath>$(RmOutDirRoot)Plugins\</OutputPath>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
</Project>
 | 
			
		||||
		Reference in New Issue
	
	Block a user