Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wishlist: install securefs on windows using an installer #62

Open
mhogomchungu opened this issue Jun 1, 2018 · 3 comments
Open

Wishlist: install securefs on windows using an installer #62

mhogomchungu opened this issue Jun 1, 2018 · 3 comments

Comments

@mhogomchungu
Copy link

mhogomchungu commented Jun 1, 2018

It will be a lot easier for windows users to install securefs and for its frontends to notice if its installed and where it is located on the file system if securefs used an installer and created appropriate registry keys to inform the system where it is installed.

An installer i am familiar with is Inno Setup[1] since i am using it with SiriKali and an example of an install script is below and attached image shows how the installer looks like when it is run.

  1. AppId is already unique since i just created it but you can create a new one to be certain.
  2. MyEXELocation can be changed to a folder where you have securefs binary folder on your system.
  3. Myarch should hold either win32 or win64 and i think you will need two scripts with each script having its own value. These values will direct the installer which binary to package
  4. MyOutPutPath variable should point to where you want the installer to be created on your system.
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "securefs"
#define MyAppVersion "0.8.1"
#define MyAppPublisher "netheril96"
#define MyAppURL "https://github.com/netheril96/securefs"
#define MyAppExeName "securefs.exe"
#define MyEXELocation "C:\projects\securefs"
#define MyOutPutPath "C:\projects\securefs.output"
#define Myarch "win64"

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{B091C801-B1EE-4D9A-9918-035C10B37964}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}

OutputDir={#MyOutPutPath}
Compression=lzma
SolidCompression=yes
DisableProgramGroupPage=yes
OutputBaseFilename=securefs-setup
      
[Files]
Source: "{#MyEXELocation}\{#Myarch}\Release\securefs.exe"; DestDir: "{app}\bin"; Flags: ignoreversion
Source: "{#MyEXELocation}\*md"; DestDir: "{app}"; Flags: ignoreversion

[Registry]
Root: HKLM; Subkey: "SOFTWARE\\WOW6432Node\\SECUREFS"; ValueType: string; ValueName: "InstallDir"; ValueData: "{app}" ;Flags: uninsdeletekey

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "brazilianportuguese"; MessagesFile: "compiler:Languages\BrazilianPortuguese.isl"
Name: "catalan"; MessagesFile: "compiler:Languages\Catalan.isl"
Name: "corsican"; MessagesFile: "compiler:Languages\Corsican.isl"
Name: "czech"; MessagesFile: "compiler:Languages\Czech.isl"
Name: "danish"; MessagesFile: "compiler:Languages\Danish.isl"
Name: "dutch"; MessagesFile: "compiler:Languages\Dutch.isl"
Name: "finnish"; MessagesFile: "compiler:Languages\Finnish.isl"
Name: "french"; MessagesFile: "compiler:Languages\French.isl"
Name: "german"; MessagesFile: "compiler:Languages\German.isl"
Name: "greek"; MessagesFile: "compiler:Languages\Greek.isl"
Name: "hebrew"; MessagesFile: "compiler:Languages\Hebrew.isl"
Name: "hungarian"; MessagesFile: "compiler:Languages\Hungarian.isl"
Name: "italian"; MessagesFile: "compiler:Languages\Italian.isl"
Name: "japanese"; MessagesFile: "compiler:Languages\Japanese.isl"
Name: "norwegian"; MessagesFile: "compiler:Languages\Norwegian.isl"
Name: "polish"; MessagesFile: "compiler:Languages\Polish.isl"
Name: "portuguese"; MessagesFile: "compiler:Languages\Portuguese.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
Name: "scottishgaelic"; MessagesFile: "compiler:Languages\ScottishGaelic.isl"
Name: "serbiancyrillic"; MessagesFile: "compiler:Languages\SerbianCyrillic.isl"
Name: "serbianlatin"; MessagesFile: "compiler:Languages\SerbianLatin.isl"
Name: "slovenian"; MessagesFile: "compiler:Languages\Slovenian.isl"
Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"
Name: "turkish"; MessagesFile: "compiler:Languages\Turkish.isl"
Name: "ukrainian"; MessagesFile: "compiler:Languages\Ukrainian.isl"

screenshot_20180601_073056

[1] http://www.jrsoftware.org/isdl.php

@netheril96
Copy link
Owner

It would certainly be convenient for Windows users, but I am not inclined to invest that amount of time to familarize myself with Windows installers.

SiriKali can just optionally bundle the executable files of securefs for maximum ease of use.

@mhogomchungu
Copy link
Author

Well, all you have to do to create a windows installer with the 64 bit securefs binary is to do the following:

  1. Go to here[1] and then download and install "innosetup-5.5.9-unicode.exe" executable.

  2. Create a text file and name it "securefs.iss" and put in it the contents of the script i posted above.

  3. Extract "securefs-win.7z" and put the contents of the archive at "C:\projects\securefs"

  4. Open the script with "inno setup" and then click menu->build->compile and you will have a securefs installer with the 64 bit binary at "C:\projects\securefs.output" a few seconds later.

The whole thing should take less than 10 minutes.

I do not think its will be best for SiriKali to start bundling some of its backends because that will amount to giving preferential treatment to bundled backends.

Alternatively, i can fork the project and start distributing securefs installers the same way i did with encfs as seen here[2]

[1] http://www.jrsoftware.org/isdl.php

[2] https://github.com/mhogomchungu/encfs/releases

@netheril96
Copy link
Owner

The whole thing should take less than 10 minutes.

If we create an installer, we should do it the Windows way, namely bundling all dependencies—WinFsp and VC++ redistributable as well. That will probably take more than 10 minutes.

because that will amount to giving preferential treatment to bundled backends.

You can just bundle all backends. Or provide a button to automatically download and install each of these backends without user interaction.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants