[HOME] [DOWNLOAD] [DOCS] [BLOG] [SUPPORT] [TIPS] [ISSUES] [Priority Support]

Testing Whonix-Installer for Windows


#41

My build is still in process. So far it looks everything put together very well.

Just the UI could perhaps be a bit bigger? Perhaps double the size? It’s so small that I at first didn’t notice there was a new window.


#42

Good day,

Sure, will adjust the size as well.

Have a nice day,

Ego


#43

Good day,

Size has been adjusted and error message has been included.

Have a nice day,

Ego


#44

Whonix-Windows-Installer build is failing.

MakeNSIS v01-Nov-2016.cvs - Copyright 1999-2016 Contributors
See the file COPYING for license details.
Credits can be found in the Users Manual.

Processing config: C:\Users\user\Downloads\nsis-binary-6770-2\nsis-binary-6770-2\nsisconf.nsh
Processing default plugins: "C:\Users\user\Downloads\nsis-binary-6770-2\nsis-binary-6770-2\Plugins\x86-ansi\*.dll"
 + AdvSplash::show
 + Banner::destroy
 + Banner::getWindow
 + Banner::show
 + BgImage::AddImage
 + BgImage::AddText
 + BgImage::Clear
 + BgImage::Destroy
 + BgImage::Redraw
 + BgImage::SetBg
 + BgImage::SetReturn
 + BgImage::Sound
 + Dialer::AttemptConnect
 + Dialer::AutodialHangup
 + Dialer::AutodialOnline
 + Dialer::AutodialUnattended
 + Dialer::GetConnectedState
 + InstallOptions::dialog
 + InstallOptions::initDialog
 + InstallOptions::show
 + LangDLL::LangDialog
 + Math::Script
 + NSISdl::download
 + NSISdl::download_quiet
 + Splash::show
 + StartMenu::Init
 + StartMenu::Select
 + StartMenu::Show
 + System::Alloc
 + System::Call
 + System::Copy
 + System::Free
 + System::Get
 + System::Int64Op
 + System::Store
 + System::StrAlloc
 + TypeLib::GetLibVersion
 + TypeLib::Register
 + TypeLib::UnRegister
 + UserInfo::GetAccountType
 + UserInfo::GetName
 + UserInfo::GetOriginalAccountType
 + VPatch::GetFileCRC32
 + VPatch::GetFileMD5
 + VPatch::vpatchfile
 + nsDialogs::Create
 + nsDialogs::CreateControl
 + nsDialogs::CreateItem
 + nsDialogs::CreateTimer
 + nsDialogs::GetUserData
 + nsDialogs::KillTimer
 + nsDialogs::OnBack
 + nsDialogs::OnChange
 + nsDialogs::OnClick
 + nsDialogs::OnNotify
 + nsDialogs::SelectFileDialog
 + nsDialogs::SelectFolderDialog
 + nsDialogs::SetRTL
 + nsDialogs::SetUserData
 + nsDialogs::Show
 + nsExec::Exec
 + nsExec::ExecToLog
 + nsExec::ExecToStack

!define: "MUI_INSERT_NSISCONF"=""

Changing directory to: "E:\build"

Processing script file: "E:\build\Whonix.nsi" (ACP)
!define: "APPNAME"="Whonix for Windows"
!define: "COMPANYNAME"="Whonix"
!define: "DESCRIPTION"="The easy way to use Whonix on Windows"
!define: "VERSIONMAJOR"="13"
!define: "VERSIONMINOR"="0"
!define: "VERSIONBUILD"="0"
!define: "HELPURL"="https://forums.whonix.org"
!define: "UPDATEURL"="https:/whonix.org/download"
!define: "ABOUTURL"="https://whonix.org"
!define: "INSTALLSIZE"="3894304"
InstallDir: "$PROGRAMFILES\Whonix\Whonix for Windows"
LicenseData: "license.rtf"
Name: "Whonix"
Icon: "logo.ico"
BrandingText: "Whonix 13"
OutFile: "Whonix-Installer.exe"
!include: "C:\Users\user\Downloads\nsis-binary-6770-2\nsis-binary-6770-2\Include\LogicLib.nsh" (ACP)
!include: closed: "C:\Users\user\Downloads\nsis-binary-6770-2\nsis-binary-6770-2\Include\LogicLib.nsh"
!include: "C:\Users\user\Downloads\nsis-binary-6770-2\nsis-binary-6770-2\Include\x64.nsh" (ACP)
!define: "__X64NSH__"=""
!include: "C:\Users\user\Downloads\nsis-binary-6770-2\nsis-binary-6770-2\Include\LogicLib.nsh" (ACP)
!include: closed: "C:\Users\user\Downloads\nsis-binary-6770-2\nsis-binary-6770-2\Include\LogicLib.nsh"
!define: "IsWow64"=""" IsWow64 """
!define: "RunningX64"=""" RunningX64 """
!define: "DisableX64FSRedirection"="!insertmacro DisableX64FSRedirection"
!define: "EnableX64FSRedirection"="!insertmacro EnableX64FSRedirection"
!include: closed: "C:\Users\user\Downloads\nsis-binary-6770-2\nsis-binary-6770-2\Include\x64.nsh"
Page: license
Page: directory
Page: instfiles
Function: ".onInit"
SetShellVarContext: all
!insertmacro: VerifyUserIsAdmin
File: "UserInfo.dll"->"$PLUGINSDIR\UserInfo.dll" [compress] 1325/4096 bytes
Plugin Command: GetAccountType
Pop: $0
!insertmacro: _If
!insertmacro: end of _If
MessageBox: 16: "Administrator rights required!"
SetErrorLevel: 740
Quit
!insertmacro: _EndIf
!insertmacro: end of _EndIf
!insertmacro: end of VerifyUserIsAdmin
FunctionEnd
Section: "install"
SetOutPath: "$INSTDIR"
File: "Whonix.exe" [compress] 36977/210432 bytes
File: "7za.exe" [compress] 361897/652800 bytes
File: "virtualbox_x64.msi" [compress] 34818443/36122624 bytes
File: "virtualbox_x86.msi" [compress] 31138109/32055296 bytes
File: "common.cab" [compress] 53470156/53537121 bytes
File: "VBoxManage.exe" [compress] 411602/1060896 bytes
File: "gateway.7z" [compress]
Internal compiler error #12345: error creating mmap the size of -2103126574.

Note: you may have one or two (large) stale temporary file(s) left in your temporary directory (Generally this only happens on Windows 9x).

#45

gateway.7z seems fine. Can be opened in 7z without error.


#46

Good day,

Know that error. Occurs if either, you don’t have used NSISBI but NSIS or you don’t have enough space left on your HDD.

Have a nice day,

Ego


#47

From https://sourceforge.net/projects/nsisbi/files/nsisbi3.0rc2.3/ I got nsis-binary-6770-2.zip -> makensisw.exe. Does that look right?


#48

I might have too less free space on device C:. Only 1 of 25 GB free. Tried to build on another disk with 100 GB free, but it may still require lots of free space on C:. So I am getting a 100 GB Windows device C: VM to try again.


#49

Good day,

Yes.

Yes, that might have a “small” impact on it. I slimmed the finished package as much as possible with 7z, but getting 4GB of images down to 1GB sadly isn’t possible…

Have a nice day,

Ego


#50

Good day,

Yes. The reason for that is that during the build process, all the used by the installer are copied into the Temp folder on Windows to make the necessary changes. Changing the location of the Temp folder to the “other disk” would thus also be a potential solution.

Have a nice day,

Ego

P.S.: Added information on the necessary size to the tutorial.


#51

Can we move this thread to public development forum once we move into public testing?

:slight_smile:

Yes, that was it. The build now progressed that point.


#52

Good day,

Sure, moving it would definetly be a good idea.

Have a nice day,

Ego


#53

Another build error.

MakeNSIS v01-Nov-2016.cvs - Copyright 1999-2016 Contributors
See the file COPYING for license details.
Credits can be found in the Users Manual.

Processing config: E:\nsis-binary-6770-2\nsisconf.nsh
Processing default plugins: "E:\nsis-binary-6770-2\Plugins\x86-ansi\*.dll"
 + AdvSplash::show
 + Banner::destroy
 + Banner::getWindow
 + Banner::show
 + BgImage::AddImage
 + BgImage::AddText
 + BgImage::Clear
 + BgImage::Destroy
 + BgImage::Redraw
 + BgImage::SetBg
 + BgImage::SetReturn
 + BgImage::Sound
 + Dialer::AttemptConnect
 + Dialer::AutodialHangup
 + Dialer::AutodialOnline
 + Dialer::AutodialUnattended
 + Dialer::GetConnectedState
 + InstallOptions::dialog
 + InstallOptions::initDialog
 + InstallOptions::show
 + LangDLL::LangDialog
 + Math::Script
 + NSISdl::download
 + NSISdl::download_quiet
 + Splash::show
 + StartMenu::Init
 + StartMenu::Select
 + StartMenu::Show
 + System::Alloc
 + System::Call
 + System::Copy
 + System::Free
 + System::Get
 + System::Int64Op
 + System::Store
 + System::StrAlloc
 + TypeLib::GetLibVersion
 + TypeLib::Register
 + TypeLib::UnRegister
 + UserInfo::GetAccountType
 + UserInfo::GetName
 + UserInfo::GetOriginalAccountType
 + VPatch::GetFileCRC32
 + VPatch::GetFileMD5
 + VPatch::vpatchfile
 + nsDialogs::Create
 + nsDialogs::CreateControl
 + nsDialogs::CreateItem
 + nsDialogs::CreateTimer
 + nsDialogs::GetUserData
 + nsDialogs::KillTimer
 + nsDialogs::OnBack
 + nsDialogs::OnChange
 + nsDialogs::OnClick
 + nsDialogs::OnNotify
 + nsDialogs::SelectFileDialog
 + nsDialogs::SelectFolderDialog
 + nsDialogs::SetRTL
 + nsDialogs::SetUserData
 + nsDialogs::Show
 + nsExec::Exec
 + nsExec::ExecToLog
 + nsExec::ExecToStack

!define: "MUI_INSERT_NSISCONF"=""

Changing directory to: "E:\build"

Processing script file: "E:\build\Whonix.nsi" (ACP)
!define: "APPNAME"="Whonix for Windows"
!define: "COMPANYNAME"="Whonix"
!define: "DESCRIPTION"="The easy way to use Whonix on Windows"
!define: "VERSIONMAJOR"="13"
!define: "VERSIONMINOR"="0"
!define: "VERSIONBUILD"="0"
!define: "HELPURL"="https://forums.whonix.org"
!define: "UPDATEURL"="https:/whonix.org/download"
!define: "ABOUTURL"="https://whonix.org"
!define: "INSTALLSIZE"="3894304"
InstallDir: "$PROGRAMFILES\Whonix\Whonix for Windows"
LicenseData: "license.rtf"
Name: "Whonix"
Icon: "logo.ico"
BrandingText: "Whonix 13"
OutFile: "Whonix-Installer.exe"
!include: "E:\nsis-binary-6770-2\Include\LogicLib.nsh" (ACP)
!include: closed: "E:\nsis-binary-6770-2\Include\LogicLib.nsh"
!include: "E:\nsis-binary-6770-2\Include\x64.nsh" (ACP)
!define: "__X64NSH__"=""
!include: "E:\nsis-binary-6770-2\Include\LogicLib.nsh" (ACP)
!include: closed: "E:\nsis-binary-6770-2\Include\LogicLib.nsh"
!define: "IsWow64"=""" IsWow64 """
!define: "RunningX64"=""" RunningX64 """
!define: "DisableX64FSRedirection"="!insertmacro DisableX64FSRedirection"
!define: "EnableX64FSRedirection"="!insertmacro EnableX64FSRedirection"
!include: closed: "E:\nsis-binary-6770-2\Include\x64.nsh"
Page: license
Page: directory
Page: instfiles
Function: ".onInit"
SetShellVarContext: all
!insertmacro: VerifyUserIsAdmin
File: "UserInfo.dll"->"$PLUGINSDIR\UserInfo.dll" [compress] 1325/4096 bytes
Plugin Command: GetAccountType
Pop: $0
!insertmacro: _If
!insertmacro: end of _If
MessageBox: 16: "Administrator rights required!"
SetErrorLevel: 740
Quit
!insertmacro: _EndIf
!insertmacro: end of _EndIf
!insertmacro: end of VerifyUserIsAdmin
FunctionEnd
Section: "install"
SetOutPath: "$INSTDIR"
File: "Whonix.exe" [compress] 36977/210432 bytes
File: "7za.exe" [compress] 361897/652800 bytes
File: "virtualbox_x64.msi" [compress] 34818443/36122624 bytes
File: "virtualbox_x86.msi" [compress] 31138109/32055296 bytes
File: "common.cab" [compress] 53470156/53537121 bytes
File: "VBoxManage.exe" [compress] 411602/1060896 bytes
File: "gateway.7z" [compress] 1639637759/1643859153 bytes
File: "workstation.7z" [compress] 1922552997/1927629555 bytes
File: "MahApps.Metro.dll" -> no files found.
Usage: File [/nonfatal] [/a] ([/r] [/x filespec [...]] filespec [...] |
   /oname=outfile one_file_only)
Error in script "E:\build\Whonix.nsi" on line 63 -- aborting creation process

#54

E:\ is a VirtualBox shared folder. Theoretically that’s also a source for issues. Does anything speak against that?


#55

Good day,

Yes, what speaks against that is that I am sometimes an imbecile. I forgot to remove the reference to dll files I removed when making changes to the UI. Should now work flawlessly.

Have a nice day,

Ego


#56

MahApps.Metro.dll is not part of https://www.whonix.org/wiki/Building_the_Whonix-Installer_for_Windows. Btw by looking at https://github.com/EgoBits1/Whonix-Windows-Installer/blob/b3713ee620d5da183b3a8ad9c1884b67b8fd7340/Whonix.nsi – neither is System.Windows.Interactivity.dll.


#57

I see you removed them from git.

https://github.com/EgoBits1/Whonix-Windows-Installer/commit/1ad4f0bb9ccdf250130ca02dcd0da9c844cbb769

Will merge your changes and try again.


#58

Good day,

Like mentioned, they were dll files used by an old version of Whonix-UI and aren’t needed anymore and thus had to be removed from the script. That was what I forgot which is what caused the script to fail.

Have a nice day,

Ego


#59

Did you try to start Whonix-Installer.exe multiple times? I mean, like double clicking it then making a mistake or being inpatient and double clicking it again. Does (ideal case…) the second process just terminate itself? Or does it fail in other ways?

That’s not imbecile. Then I’d have to be imbecile^2. It happens seldom to provide flawless build documentation and sources that someone else can rebuild at the first try. So don’t worry about that.


Build successfully completed [inside VirtualBox shared folder].

Running Whonix-Installer.exe from VirtualBox shared folder failed.

Copied Whonix-Installer.exe to C:. Running Whonix-Installer.exe from there worked. (Probably few are running a Windows VirtualBox VM and then try to run Whonix-Installer.exe there from a shared folder.)


  • After double clicking the installer, the loading symbol appeared for a long term. It could be due to my ultra slow VM, so I cannot say if this will be a blocker for users. Perhaps that’s a limitation by nsis that we have to live with?

  • Then the Windows security prompt said publisher: unknown. I wonder how many users are trained to just click yes or being discouraged by that. However, solving that would require the Windows style signing (as discussed above)?

  • The Whonix Setup License Agreement window cannot be maximized. Is this something fixable?

  • The Whonix Setup License Agreement contains some new (?) text that should probably be removed. (attached at the bottom of this post) INAL, but probably not great to include an eula. It’s probably there by mistake?

  • Create shortcut Whonix for Windows apparently(!) (not actually) hangs. I guess during that time it’s importing the Whonix VM images into VirtualBox. Could you improve the output of the installer a bit? By having the installer say (just like the other messages) “importing Whonix VM images into VirtualBox” or so? Otherwise I guess advanced users will think it cannot take such a long time to create desktop shortcut and kill the installer.

  • The only option to choose “close” at the end is non-ideal. I’ve seen Windows users being lost at that point because they didn’t know how to actually start the application. Could you add a page please that says “If you like to start Whonix, there should be a desktop shortcut named Whonix for Windows”?

  • Whonix.exe did not start for me out of the box (Windows 7 SP1) because .NET framework version 4 is not installed. (Originally you wanted to do it with .NET framework version 1?) If that’s just my horribly broken Windows installation, never mind.

  • Maybe that’s something we have to live with.

  • I guess bundling .NET framework 4.0 is not an option? Legally possible? If so, it would make the whole package non-free.

  • When I press Start Whonix in Whonix.exe, I get only two command prompts (cmd.exe) saying `VBoxManage.exe error: Machine ‘Whonix-Gateway’ is not currently running.’ (same vice versa for the workstation).


Most of these are just smaller imperfections.

Overall I am very excited about this. It is a huge step forward for usability on the Windows platform. A great way to generate first time Linux users.


Please read this End­User License Agreement (“Agreement”) carefully before clicking the "I Agree"
button or using Whonix (“Application”).
By clicking the “I Agree” button, downloading or using the Application, you are agreeing to be bound
by the terms and conditions of this Agreement.
If you do not agree to the terms of this Agreement, do not click on the “I Agree” button and do not
download or use the Application.
Modifications to Application
Whonix reserves the right to modify, suspend or discontinue, temporarily or
permanently, the Application or any service to which it connects, with or without notice and without
liability to you.
Term and Termination
This Agreement shall remain in effect until terminated by you or Whonix.
Whonix may, in its sole discretion, at any time and for any or no reason,
suspend or terminate this Agreement with or without prior notice.
This Agreement will terminate immediately, without prior notice from Whonix, in
the event that you fail to comply with any provision of this Agreement. You may also terminate this
Agreement by deleting the Application and all copies thereof from your mobile device or from your
desktop.
Upon termination of this Agreement, you shall cease all use of the Application and delete all copies
of the Application from your mobile device or from your desktop.
Severability
If any provision of this Agreement is held to be unenforceable or invalid, such provision will be
changed and interpreted to accomplish the objectives of such provision to the greatest extent
possible under applicable law and the remaining provisions will continue in full force and effect.
Amendments to this Agreement
Whonix reserves the right, at its sole discretion, to modify or replace this
Agreement at any time.
Contact Information
If you have any questions about this Agreement, please contact us.


#60

Good day,

By design, Windows then opens the installer a second time. That’s expected standard behavior under Windows.

The reason for that is that, due to UAC settings (admin/root permissions), shared folders would have to be added to a special user group for this to work directly. Is a safety feature.

I usually don’t experience a delay before the verification window, though all my systems use SSDs, so that could be it. Will try on a HDD if I get access to one.

Like mentioned, this would require a signature for Authenticode which sadly cost 75$ a year.

Quote:

I purchased my personal Software Publisher’s certificate from Comodo via TuCows, a reseller. Their current prices are $75 for a certificate valid for one year, $140 for two years, or $195 for three years. Generally speaking, it’s a good idea to buy a certificate with the longest possible validity period because renewing certificates is not a fun experience, and it also helps to mitigate the problem of certificate rollover. Certificate rollover occurs when your old certificate expires and you begin signing your code with a new replacement certificate; all of your reputation was accumulated against the old certificate, and hence there may be a time lag for your new certificate to acquire a good reputation.

Source: https://blogs.msdn.microsoft.com/ieinternals/2011/03/22/everything-you-need-to-know-about-authenticode-code-signing/

Could be done by using Resource Hacker. This would however require us to use a secondary compiler which isn’t open source.

Yes, needs to be removed.

During that time the images are extracted and imported. Will add some output at the point.

Will see if that can be changed.

The problem with net framework 1 was that it simply isn’t usable anymore. Will do some adjustments to fix that.

Odd. Since I don’t know how VBoxManage behaves when used in a VBox session, I don’t know the reason for that.

Either way, will make the adjustments and report back.

Have a nice day,

Ego