Windows Plone Installer project

Hello,

My name is Kyle Arthurs, I was part of a University of Wisconsin team which began developing a Windows installer for Plone during the Spring semester. I will be continuing this project over the summer and wanted to introduce myself and the project. Plenty of kinks to work out, but the repo is here on GitHub. Kim Nguyen is already involved with this project and wanted to help gauge the community's interest and get some feedback, he'll be posting here as well.

Thanks!
Kyle

1 Like

I'd like to be kept informed ... and will be watching MW

@kyleArthurs and his teammates have produced a working Windows installer for Plone... yay!

Essentially how it works (Kyle, please correct me):

  • if run on Windows 10, it installs some requirements, the Linux subsystem, then downloads and runs the Plone unified installer
  • if run on older versions of Windows (7 at minimum), it installs some requirements then uses the "simple Plone buildout"

It is built with tkinter, Chocolatey, and PowerShell scripts.

At the moment it has a few bugs, and so I'd like to find out if generally the Plone community (that is you people) would like to help fund some of Kyle's time this summer to fix the bugs, develop some documentation and tests, and hand off his project for us to maintain in the long run.

I think this is a better Windows installer for us than the "usual" binary installers we have used in the past, because below the surface it uses the Plone installers we maintain assiduously for non-Windows platforms.

Would you participate in a crowdfunding effort to help finish this Windows installer?

Please respond here or to me privately if you prefer...

I'm on Windows 7 and would be interested in helping

2 Likes

Thank you for the interest in the project!

I am wondering if there are any features I should look into adding at this stage. Are there add-ons that are commonly added or configuration files that are commonly tweaked soon after installation that I might be able to automate? Anything of this nature would be considered.

Do you have suggestions for me to get a VM up and running 7 so that I can see how it is doing? Someone else on the university team had 8 running but I had not done much testing of that end of the project myself yet.

Kyle, try https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/

Hi Kyle, from memory, Chrissy Wainwright sent me a working example three + years ago. It worked, but I was spoilt by the Windows installer and the windows environment.
My job is now to find a copy of the buildout.cfg in my archives. BBS MW

Hi everyone,

Check out this link if you'd like to see the formal description of what I'll be doing for the installer project this summer! This includes a calendar of some goals I have, some of which I've started making progress on already. Some small tweaks/additions might be made of course but the project is on track. I also acquired copies of Win 7 and 8 from the university so I can test more effectively.

Thanks!

An excerpt from the description document linked above:

#Milestone Calendar
5/31/17 - Clean up and prepare the project, create the /docs folder and a initialize a few documentation files. Introduce myself and the project to the Plone community.

6/14/17 - Fix the GUI bugs which are causing the state values in the registry to be incorrect. If necessary, this could include replacing TkInter with a different python GUI framework.

6/21/17 - Ensure that the state variables are correct, make sure the user is ready to restart and perform the restart programmatically when user is ready. Ensure that the installer runs automatically and picks back up where it left off after said restart.

6/30/17 - Implement the logging mechanism which will make the process more transparent and allow the user to debug the installation process might things go wrong.

7/21/17 - Implement the additional GUI improvements laid out in the document.

Through end of term - Reach out to the Plone community to learn what configuration features or add-ons we might be able to automate in our installer. Implement a selection of those features suggested by the Plone community.

#Validation & Testing
The installer will be rigorously tested on various machines in various environments.

After the installer is run, the functionality of the Plone instance generated will be validated.

Feedback from the Plone community will be taken into account.

1 Like

I've taken the liberty of setting up a crowdfunding campaign for this important project for Plone:

https://crowdspire.org/campaign/windows-installer-for-plone

Note: Crowdspire is a new service created by Wildcard Corp., my employer.

loved the story behind Crowdspire; good luck on that, we need this kind of alternatives.

Progress

See the project's GitHub wiki for weekly updates throughout the summer.

Windows 7/8 Versions

As a part of the team at UW Oshkosh I did not do any testing on Windows 7 until my continuation began a couple weeks ago. So far I'm having trouble getting PyInstaller to run on 7. Does anyone in the community have experience with PyInstaller?

Thank you

We have 3 donors! thx @wm_fennie :slight_smile:

In https://github.com/lucid-0/WinPloneInstaller/wiki/June-1st,-2017-:-Fixed-Registry-Problems,-Update-on-"legacy"-version you mention wanting to use stackedit.io. If possible, you should use what Plone add-on developers use, which is RST, as in https://github.com/plone/ploneorg.addonlisting/tree/master/docs and there are nice tools to support that - see https://docs.plone.org/about/index.html

We just landed 2 more donations - thank you @pbauer and @Rotonen!

We'll post Kyle's progress updates here in addition to the project wiki at https://github.com/lucid-0/WinPloneInstaller/wiki

#May 26th, 2017 : Introduction to Project and its Initial State

##Restructuring and Cleaning Up

I am picking up where my team in the Software Engineering course last semester left off. The structure of the project had been influenced by the merging together of pieces completed by each member of the team and their different perspectives of the project. My first step was to clean all the files, merge some of the scripts, add some resources and folders for organization, etc. The project is now organized more consistently, more conventional syntax is used, and more informative comments have been added throughout. A few functions have been broken up to serve more specific purposes; I figured this helped the readability and reusability of the code.

##Plone Community

Another member of the team had asked for advice from the Plone Community on the project during the semester, but I hadn't done so myself. After I got the project closer to my standards, I introduced myself and the project to the Plone community. Kim suggested that I ask right away if there were suggestions for add-on/configuration features rather than waiting for a basic version of the installer to be complete first. I thought this was a good idea so I posted there right away. One member of the community sent me some configuration files which were used in another project that might help me, especially with the finishing touches of the Windows 7 version. I'll be keeping in touch about these files, at the moment they may be beyond my understanding of Plone so that is something I will have to research soon. I believe they are mostly buildout configuration files.

##Preparing Server for this Blog

I have had the foundation of a LAMP server set up on my home desktop for some time, and had purchased the kylearthurs.com domain name, but have never done much with it yet. This will be a very simple blog that I will maintain manually rather than using any complex framework. I will do my best to have the server running for the duration of this practicum term and beyond.

##Recent Progress

On top of the aforementioned reorganization, I've also recently fixed a problem with the script sometimes passing off to bash in the wrong working directory, and a bug that existed due to improper usage of Python's 'time' package.

#June 1st, 2017 : Fixed Registry Problems, Update on "legacy" version

Plone Installer Project Wiki

##Progress on GUI/Registry Problems

I have rearranged the code regarding the registry values which represent the state of the installation. Now, the code which initializes the GUI does not alter this data at all. This has fixed the problem where the install status was reset to “begin” in the middle of the process, causing the first PowerShell script to run again unnecessarily.

##Markdown documentation and StackEdit

I've decided to use Markdown for the project documentation. stackedit.io is an online Markdown editor that allows me to export my documents in Markdown, HTML, or pdf formats. It also integrates well with online storage services such as Google Drive and Microsoft OneDrive which has been convenient. I will include the HTML version of the documentation in the project's /docs directory, as well as the Markdown in a sub-directory for easy editing as the project evolves.

##Windows 7 VMs and Project Tests

Throughout the semester in which this project originated, I focused on the Windows 10 (Linux Subsystem) aspect; now I will be diving into the Windows 7/8 side as well. Microsoft offers free downloads of virtual machines for developer use in retrotesting web products in old platforms and browsers. I thought I'd take advantage of this to test the installer on Windows 7/8. I downloaded a VM with Win7 preinstalled, but when I booted it and tested the installer for the first time I was disappointed, it simply said it was not Windows 7 software and would not run. I soon realized this was a 32 bit installation, however, and wondered if this was the problem since PyInstaller builds its executables for the environment it is being run on. As a student at UW Oshkosh I have access to ISO images and software keys for both Windows 7 and 8. This week I downloaded a copy of both of these and created test environments for the Plone installer. So far, I have struggled to get these "legacy" versions running and have come to find no proof of concept from the other members of the team that started the project. I will keep everyone posted on this aspect of the project!

#June 8th, 2017 : Some convenient tweaks, additions, and fixes; documentation progress

Plone Installer Project Wiki

##Moving some Windows functionality over to PowerShell

In previous versions I’ve used Python’s platform package to gather info about the machine I was running on. As it turns out, this is unreliable to the extent that it suddenly started telling me my Windows 10 machine was running an outdated Windows 8. I’ve started calling out to a PowerShell script to gather that information into a convenient spot in the PloneInstaller registry entry instead.

##Python version confusion

A couple of the python packages being used (e.g. winreg, tkinter) have different names and structure depending on what version of Python you are running. I have a couple machines I’ve been developing this project on and I’m realizing I might not be as consistent as I should be right now. I played around in a couple versions of Python and squared things away again. The project is currently building on Python 3.5.0.

##Changed the name in Windows registry entry

Changed to PloneInstaller (from Plone), in case Plone wants to use its own name in the registry before installation is complete at any point in time.

##Added the timeout parameter to wait_for_status_change() function

Now, if there is no status update in the registry after calling out to PowerShell for example, we escape after timeout and handle it as an error. For now I put some estimates in for timeout ranges but we can fine tune them.

##Added freshwin10.ps1

Restore your Windows 10 machine to a clean state after a test run.

##More documentation and wiki

  • Created build-debugging-suggestions in the docs; a place to note solutions for common build problems in terms of their system indicators.
  • Also added markdown and HTML docs for build.ps1, installChocolatey.ps1, Chocolatey, PyInstaller, WSL, and winreg. Updated the existing docs.
  • Now to convert to reStructedText as soon as possible per Kim’s suggestion. Will follow these guidelines

##Setting up an infrastructure for campaign, social media, etc.

At the beginning of this week I moved the project updates to the wiki section of the GitHub repo. I created a twitter account and introduced the project to some personal space. Thank you for checking out the campaign on Crowdspire

##Fatal Error!

Suddenly started sometimes getting “Fatal Error! Failed to execute script WinPloneInstaller” when clicking on the executable output from PyInstaller. Never seen this one before...I’m not sure what I changed that might cause this but I’m confident I’ll figure it out before next post. The usual fun, no worries yet!

In my experience PyInstaller does not fully handle NTFS when writing to the disk, so you can end up with a partially complete .exe (some .dll or script part missing). This seems to happen less often when bundling into a single bundled .exe vs. a bunch of files.

An another thing to be aware of is this can also happen at installer runtime when using open source tools not fully implementing all the failure modes and other warts of NTFS.

As circumventions one can implement a smoke test script to be run in-process step by step which makes the overall progress retry subparts of it or alternatively do what is often done in the games industry for asset bundles - go for a system of total checksumming and subpart checksumming (ref. eg. the Quake game engine family .pak / .pk3 format as that is open source).

1 Like

Plone Foundation Code of Conduct