Skip to content

Commit

Permalink
Updated to v2.1 and Added x86_64 Dual Hybrid Mode
Browse files Browse the repository at this point in the history
Fixed a bunch of bugs in the code. Added a "Dual Mode" setting for x86_64 hybrid launchers. [Activate]DualMode. See the read me file for more information.
  • Loading branch information
daemondevin committed Dec 5, 2017
1 parent 41adda1 commit ddb7c31
Show file tree
Hide file tree
Showing 15 changed files with 1,012 additions and 682 deletions.
12 changes: 6 additions & 6 deletions App/AppInfo/appinfo.ini
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@ Version=3.5

[Details]
Name=PortableApps Compiler
AppID=PortableAppsComiler
Publisher=demon.devin
Homepage=https://github.com/demondevin/pac-man
AppID=PortableAppsCompiler
Publisher=daemon.devin
Homepage=https://github.com/daemondevin/pac-man
Category=Development
Description=A better alternative to the PortableApps.com Launcher—PortableApps Compiler & Management
Language=English

[Team]
Developer=demon.devin
Developer=daemon.devin

[License]
Shareable=true
Expand All @@ -21,8 +21,8 @@ Freeware=true
CommercialUse=true

[Version]
PackageVersion=2.0.1.0
DisplayVersion=2.0.1 Dev
PackageVersion=2.1.0.0
DisplayVersion=2.1.0 Dev

[Control]
Icons=1
Expand Down
Binary file modified PortableAppsCompiler.exe
Binary file not shown.
40 changes: 21 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,17 +24,16 @@ With all that said, enjoy the fresh ideas which are currently being worked out.
> | 7-ZipPortable.ini (User Config File)
> |
> +---app
> | +---AppInfo (Kept for Compatibility with PA.c Menu)
> | +---AppInfo (Kept for Compatibility with PA.c Menu)
> | | AppIcon.ico (Needed with PA.c Menu)
> | | AppIcon_128.png ' ' ' ' ' '
> | | AppIcon_16.png ' ' ' ' ' '
> | | AppIcon_32.png ' ' ' ' ' '
> | | AppInfo.ini ' ' ' ' ' '
> | | CompilerInstaller.ini (Formally Installer.ini)
> | | CompilerWrapper.ini (Formally Launcher.ini)
> | | Installer.ini
> | | EULA.txt
> | | ExtendedInstaller.nsh (Formally InstallerCustom.nsh)
> | | ExtendedWrapper.nsh (Formally Custom.nsh)
> | | ExtendWrapper.nsh (Formally Custom.nsh)
> | | Wrapper.ini (Formally Launcher.ini)
> | |
> | \---DefaultSettings (Formally DefaultData)
> | | DEFAULT 7-ZIP SETTINGS HERE
Expand Down Expand Up @@ -84,15 +83,15 @@ With all that said, enjoy the fresh ideas which are currently being worked out.
##### PAF to PAC Conversion
- The compiler can now handle converting PAF PortableApps to the above folder layout. Everything is handled automatically so you do not need to manually set the files in the correct place. I also added support for converting FukenGruven's old PAFs as well.
- Do not expect the PA.c Installer to work out of the box for this new folder structure. Since I've renamed and moved around the applicable configuration files, PA.c Installer won't be able to locate the right files anymore and most likely won't be able to pack your portable anymore. However, I haven't tested this out yet.
- Do not expect the PA.c Installer to work out of the box for this new folder structure. Since I've renamed and moved around the applicable configuration files, PA.c Installer won't be able to locate the right files any more and most likely won't be able to pack your portable. However, I haven't tested this out yet.

## Features
----------

The following is a list of features that is currently available with PortableApps Compiler. Everything listed here has been tested and is in working order.

- Everything that is available with [PortableApps.com Launcher](https://portableapps.com/apps/development/portableapps.com_launcher) is also available with PortableApps Compiler.
- Manipulating Windows Services.
- Minipulating Windows Services.
- Dealing with Windows Tasks.
- Registering DLL files.
- Registry redirection support.
Expand All @@ -107,7 +106,7 @@ The following is a list of features that is currently available with PortableApp

__Environment Variables__

- `%PROGRAMDATA%` has now been added and kept `%ALLUSERSAPPDATA%` for backwards compatibility. Both can be used anywhere you can use an environment variable.
- `%PROGRAMDATA%` has now been added and kept `%ALLUSERSAPPDATA%` for backwards compatibility. Both can be used anywhere you can use an evironment variable.
- `%PAC:CommonFiles%` may now be used within the _Launcher.ini_ configuration file. This environment variable will point to `..\PortableApps\CommonFiles` if applicable. Can be used anywhere you can use an environment variable.
> Example:
> ```INI
Expand All @@ -120,6 +119,7 @@ Added new keys to the `[Activate]` section. They are as follows (a short descrip
> Note: You should only use the following keys if you need them, otherwise they should be omitted entirely.
```INI
[Activate]
DualMode=7-ZIP
Registry=true
RegRedirection=true
RegCopyKeys=true
Expand All @@ -138,12 +138,14 @@ FileCleanup=true
DirectoryCleanup=true
```
* __DualMode:__ For a x86_64 hybrid wrapper. If you want to run 32-bit/64-bit side-by-side in _"Dual Mode"_. Just specify a short name (usually the AppID in all caps) in which you may use inside the Wrapper.ini as an environment variable. (e.g. `%7-ZIP%`)

* __Registry:__ Add support for manipulating the Windows Registry.

* __RegRedirection:__ Enable support for enabling/disabling registry redirection.

* __RegCopyKeys:__ Enable support for copying registry keys to a special hive (`HKCU\Software\PortableApps.com`) before launching the application and restoring the keys after the application exits. See `RegistryCopyKeys.nsh` in the Segments directory.
> To use this feature add the section `[RegistryCopyKeys]` to the `Launcher.ini` file. Each entry should be the path to the registry key to be copied back and forth. Example usage:
> To use this feature add the section `[RegistryCopyKeys]` to the `Wrapper.ini` file. Each entry should be the path to the registry key to be copied back and forth. Example usage:
> ```INI
> [RegistryCopyKeys]
> 1=HKCU\Software\MyProgram\ExtraCareNeededKey
Expand All @@ -154,10 +156,10 @@ DirectoryCleanup=true
* __ForceRedirection:__ Checks using the variable `$Bit` to disable/enable file system redirection.
* __ExecAsUser:__ For applications which need to run as normal user but need the launcher to have elevated privileges. [Read this](http://mdb-blog.blogspot.com/2013/01/nsis-lunch-program-as-user-from-uac.html) for more information on this concept.
* __ExecAsUser:__ For applications which need to run as normal user but need the wrapper to have elevated privileges. [Read this](http://mdb-blog.blogspot.com/2013/01/nsis-lunch-program-as-user-from-uac.html) for more information on this concept.
* __Services:__ Add support for handling Windows Services.
> To use this feature add the section `[Service1]` (numerical ordering) to the `Launcher.ini` file. Each entry supports six keys which are as follows:
> To use this feature add the section `[Service1]` (numerical ordering) to the `Wrapper.ini` file. Each entry supports six keys which are as follows:
| __Key__ | __Value__ |
|:-------- |:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
Expand Down Expand Up @@ -188,7 +190,7 @@ DirectoryCleanup=true
> ```
* __RegDLLs:__ Add support for handling library (DLLs) file registration.
> To use this feature add the section `[RegisterDLL1]` (numerical ordering) to the `Launcher.ini` file. Each entry supports two keys; _ProgID_ (The DLL's ProgID) and _File_ (The path to DLL. Supports environment variables). Example usage:
> To use this feature add the section `[RegisterDLL1]` (numerical ordering) to the `Wrapper.ini` file. Each entry supports two keys; _ProgID_ (The DLL's ProgID) and _File_ (The path to DLL. Supports environment variables). Example usage:
> ```INI
> [RegisterDLL1]
> ProgID=MyAppControlPanel
Expand All @@ -200,7 +202,7 @@ DirectoryCleanup=true
> ```
* __Tasks:__ Enable the TaskCleanup segment for removing any Windows Tasks that were added during runtime.
> To use this feature add the section `[TaskCleanup]` to the `Launcher.ini` file. Each entry should be the Windows Task name to be removed. Example usage:
> To use this feature add the section `[TaskCleanup]` to the `Wrapper.ini` file. Each entry should be the Windows Task name to be removed. Example usage:
> ```INI
> [TaskCleanup]
> 1=MyAppTask1
Expand All @@ -215,7 +217,7 @@ DirectoryCleanup=true
* __Ghostscript:__ Add Ghostscript support.
* __FontsFolder:__ Allows the portable application to support fonts within the directory `..\Data\Fonts`. Any fonts added in this folder will be added and are available for usage during runtime. Be aware, the more fonts to process the longer it will take for the launcher to load and unload these fonts.
* __FontsFolder:__ Allows the portable application to support fonts within the directory `..\Data\Fonts`. Any fonts added in this folder will be added and are available for usage during runtime. Be aware, the more fonts to process the longer it will take for the wrapper to load and unload these fonts.
> Supported Fonts:
> - .fon
> - .fnt
Expand All @@ -227,15 +229,15 @@ DirectoryCleanup=true
> - .pfb
> - .pfm
* __FileCleanup:__ Enable support for adding the section `[FilesCleanup]` in `Launcher.ini`. See `FilesCleanup.nsh` in the Segments directory.
> To use this feature add the section `[FilesCleanup]` to the `Launcher.ini` file. Each entry should be the path to the file that needs deleting. Supports environment variables. Example usage:
* __FileCleanup:__ Enable support for adding the section `[FilesCleanup]` in `Wrapper.ini`. See `FilesCleanup.nsh` in the Segments directory.
> To use this feature add the section `[FilesCleanup]` to the `Wrapper.ini` file. Each entry should be the path to the file that needs deleting. Supports environment variables. Example usage:
> ```INI
> [FilesCleanup]
> 1=%PAC:DataDir%\uselessUpgradeFile.xml
> 2=%APPDATA%\MyProgram\purposelessCfg.ini
> ```
* __DirectoryCleanup:__ Enable support for the sections `[DirectoriesCleanupIfEmpty]` and `[DirectoriesCleanupForce]` in `Launcher.ini`. See `DirectoriesCleanup.nsh` in the Segments directory.
* __DirectoryCleanup:__ Enable support for the sections `[DirectoriesCleanupIfEmpty]` and `[DirectoriesCleanupForce]` in `Wrapper.ini`. See `DirectoriesCleanup.nsh` in the Segments directory.
----------
Expand All @@ -257,7 +259,7 @@ CertTimestamp=VeriSign

* __Creator:__ Specify here the original developer of the PAF if you're updating someone else's work.

* __CertSigning:__ If set to true, the `Launcher.exe` will automatically be signed using dual signature hashing algorithm standards (_SHA256_ and _SHA1_). I decided to use dual signing because Windows 8 supports SHA256 Code Signing Certificates (SHA-2 hashing algorithm); whereas, Windows 7 may only support SHA-1 Code Signing Certificates (SHA-1 hashing algorithm). It should be noted that Windows 10 has stopped accepting SHA-1 certificates and certificate chains for Authenticode-signed binaries (unless a timestamp marked the binary as being signed before 1/1/2016). You can visit this [Microsoft Security Advisory article][MSAdvisory] on the availability of SHA-2 code signing support for Windows 7 and Windows Server 2008 R2 for more information about this topic.
* __CertSigning:__ If set to true, the `Wrapper.exe` will automatically be signed using dual signature hashing algorithm standards (_SHA256_ and _SHA1_). I decided to use dual signing because Windows 8 supports SHA256 Code Signing Certificates (SHA-2 hashing algorithm); whereas, Windows 7 may only support SHA-1 Code Signing Certificates (SHA-1 hashing algorithm). It should be noted that Windows 10 has stopped accepting SHA-1 certificates and certificate chains for Authenticode-signed binaries (unless a timestamp marked the binary as being signed before 1/1/2016). You can visit this [Microsoft Security Advisory article][MSAdvisory] on the availability of SHA-2 code signing support for Windows 7 and Windows Server 2008 R2 for more information about this topic.
>__*ATTENTION:*__ As it is written right now, the `PortableApps.comLauncherGenerator.exe` expects the certificate file to be the developer's name (same as the `[Team]Developer` key's value) and located in `..\Other\Source\Contrib\certificates`.
>
> _NOTE_: If your certificate requires you to use a password, refer to lines 741 and 742 and input your password on column 62.
Expand Down Expand Up @@ -313,7 +315,7 @@ GetBetween=true

* __UsesGhostscript:__ Specifies whether the portable application makes use of [Ghostscript Portable][GhostscriptPortable].

* __UsesDotNetVersion:__ Specify the minimum required version of the .NET framework the portable application needs. Values can be from `1.0` through `4.7` (*e.g.* `UsesDotNetVersion=1.1` or `UsesDotNetVersion=4.6.2`).
* __UsesDotNetVersion:__ Specify the minimum required version of the .NET framework the portable application needs. Values can be from `1.0` thru `4.7` (*e.g.* `UsesDotNetVersion=1.1` or `UsesDotNetVersion=4.6.2`).

* __UseStdUtils:__ Include the _StdUtils_ plug-in without `ExecAsUser`

Expand Down
1 change: 1 addition & 0 deletions etc/help.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<html><h1>Dummy help file.</h1></html>
2 changes: 1 addition & 1 deletion etc/source/Debug.nsh
Original file line number Diff line number Diff line change
Expand Up @@ -118,4 +118,4 @@
!macroend
!define DebugMsg "!insertmacro DebugMsg" ; }}}

!include /NONFATAL "${PACKAGE}\app\AppInfo\ExtendedDebug.nsh"
!include /NONFATAL "${PACKAGE}\app\AppInfo\Debug.nsh"
53 changes: 46 additions & 7 deletions etc/source/Languages.nsh
Original file line number Diff line number Diff line change
Expand Up @@ -22,31 +22,70 @@
!appendfile "${LangAutoDetectFile}" "${Case} ${LANG_${_LANG}}$\n"
!macroend
!define IncludeLang "!insertmacro IncludeLang"
${IncludeLang} ARABIC
${IncludeLang} AFRIKAANS
${IncludeLang} AZERBAIJANI
${IncludeLang} BELARUSIAN
${IncludeLang} BULGARIAN
${IncludeLang} CATALAN
${IncludeLang} CZECH
${IncludeLang} DUTCH
${IncludeLang} WELSH
${IncludeLang} DANISH
${IncludeLang} GERMAN
${IncludeLang} GREEK
${IncludeLang} ENGLISH
${IncludeLang} ESPERANTO
${IncludeLang} SPANISH
${IncludeLang} ESTONIAN
${IncludeLang} BASQUE
${IncludeLang} FARSI
${IncludeLang} FINNISH
${IncludeLang} FRENCH
${IncludeLang} GERMAN
${IncludeLang} GREEK
${IncludeLang} IRISH
${IncludeLang} GALICIAN
${IncludeLang} GUJARATI
${IncludeLang} HEBREW
${IncludeLang} HINDI
${IncludeLang} CROATIAN
${IncludeLang} HUNGARIAN
${IncludeLang} ARMENIAN
${IncludeLang} INDONESIAN
${IncludeLang} ICELANDIC
${IncludeLang} ITALIAN
${IncludeLang} JAPANESE
${IncludeLang} GEORGIAN
${IncludeLang} KOREAN
${IncludeLang} LITHUANIAN
${IncludeLang} KURDISH
${IncludeLang} LATVIAN
${IncludeLang} MACEDONIAN
${IncludeLang} MONGOLIAN
${IncludeLang} MARATHI
${IncludeLang} MALAY
${IncludeLang} NORWEGIAN
${IncludeLang} NEPALI
${IncludeLang} DUTCH
${IncludeLang} NORWEGIANNYNORSK
${IncludeLang} PUNJABI
${IncludeLang} POLISH
${IncludeLang} PORTUGUESE
${IncludeLang} PORTUGUESEBR
${IncludeLang} ROMANIAN
${IncludeLang} RUSSIAN
${IncludeLang} SIMPCHINESE
${IncludeLang} SINHALESE
${IncludeLang} SLOVAK
${IncludeLang} SLOVENIAN
${IncludeLang} SPANISH
${IncludeLang} ALBANIAN
${IncludeLang} SERBIAN
${IncludeLang} SERBIANLATIN
${IncludeLang} SWEDISH
${IncludeLang} TRADCHINESE
${IncludeLang} TAMIL
${IncludeLang} THAI
${IncludeLang} TURKISH
${IncludeLang} UKRAINIAN
${IncludeLang} VALENCIAN
${IncludeLang} VIETNAMESE
${IncludeLang} SIMPCHINESE
${IncludeLang} TRADCHINESE
!macro LanguageCases
!include "${LangAutoDetectFile}"
!delfile "${LangAutoDetectFile}"
Expand Down
Loading

0 comments on commit ddb7c31

Please sign in to comment.