Roundup Tracker - Issues

Issue 2550720

classification
Title: Install on Win 7, fails to detect missing python dependency
Type: compile error Severity: major
Components: Installation Versions: 1.4
process
Status: new Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: ber, cscortes, rouilj, techtonik
Priority: Keywords:

Created on 2011-08-15 14:36 by cscortes, last changed 2017-10-21 04:06 by rouilj.

Messages
msg4376 Author: [hidden] (cscortes) Date: 2011-08-15 14:36
Missing pyWin32, Mark Harmond's windows library for python. I suppose
the installer could check for this and report the missing dependency.  I
have done this myself with DotNet dlls, and some installers give you a
chance to write a routine to check complex missing dependencies. 
Although the easiest way I can think of is wrap an import statement with
a try catch and report either success or failure.  

workaround, before you install roundup, make sure you have install
pywin32 from Mark Hammond's web site.
msg4377 Author: [hidden] (ber) Date: 2011-08-15 15:08
Luis,
thanks for creating this issue!

I wonder if we could just include the pyWin32 library in the installer?
msg4379 Author: [hidden] (cscortes) Date: 2011-08-16 15:31
I don't know.  I guess I would make a distinction between needing pywin
for the installer and needing it for roundup.

If the installer needs it then yes it could be included, but I think
that roundup needs it.  The problem is that there is a different pywin32
library for every version of python (2.5,2.6,2.7,...) so it is easier
just to throw an error and ask the user to figure out which version he
needs to install for his python setup.
msg4382 Author: [hidden] (ber) Date: 2011-08-16 18:53
Ah, you are right of course, that we cannot know the python binary unless we 
also include python itself. ;)

I wonder what roundup would use pywin, though.
msg5817 Author: [hidden] (rouilj) Date: 2016-07-10 18:47
The pyWin32 dependency was removed in 1.5.0 for most uses except
running roundup as a windows service.

I think it was used for portalocker. From CHANGES.txt:

- pywin32 is no longer required to run on Windows (anatoly techtonik)
- Rewritten portalocker.py logic in ctypes for Windows (anatoly techtonik)

I think this issue is a partial replacement for: issue2550718
msg6042 Author: [hidden] (rouilj) Date: 2017-10-21 04:06
I installed python 2.7.14 on windows 10.

Modified setup.py adding:

      scripts.append('scripts/windows_install_script.py')

after the definition of the script variable. Then ran:

  python setup.py bdist_wininst --user-access-control force --install-
script windows_install_script.py

with the contents of scripts/window_install_script.py:

====
from __future__ import print_function

import sys

# Log output to a file (for test)                                               
f = open(r"C:\temp\test.txt",'w')
print('Creating Shortcut', file=f)
f.close()

if sys.platform == 'win32':
    try:
        sys.stdout.write("write to sys.stdout\n")
        sys.stderr.write("write to sys.stderr\n")
        print ("Checking for pywin32")
        import win32serviceutil
        print ("Found win32serviceutil")
        import win32service
        print ("Found win32service")
        print ("Complete.")
    except:
        print ("""                                                              
        If you want to run roundup as a windows service you have to             
        install the pywin32 module from:                                        
                                                                                
        https://sourceforge.net/projects/pywin32/                               
                                                                                
        Otherwise you can run the roundup-server manually or use                
        demo mode.                                                              
        """)

print ("Install complete")
====

This created an installer, but when run the installer doesn't seem to 
run the python script.

Note the script above tries a few ways to write output.
No output ever showed up so I tried a few ways to write to the user.
Then I added the code to write to a file. The lack of a file in
c:\temp tells me that the script isn't being run.

No clue what the issue is but recording this here in case somebody else 
has a bright idea on telling the user to install the pywin32
module if it's not found.
History
Date User Action Args
2017-10-21 04:06:34rouiljsetmessages: + msg6042
2016-07-10 18:47:45rouiljsetnosy: + techtonik, rouilj
messages: + msg5817
2011-08-16 18:53:48bersetmessages: + msg4382
2011-08-16 15:31:31cscortessetmessages: + msg4379
2011-08-15 15:08:23bersetnosy: + ber
messages: + msg4377
2011-08-15 14:36:38cscortescreate