mirror of
https://github.com/dkmstr/openuds.git
synced 2024-12-23 17:34:17 +03:00
Added sample py2exe and pyinstaller for exe generation
This commit is contained in:
parent
f1593c0957
commit
10d85df2e1
17
windowsActor/UDSActorConfig.manifest
Normal file
17
windowsActor/UDSActorConfig.manifest
Normal file
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
|
||||
<assemblyIdentity
|
||||
type="win32"
|
||||
name="UDSActorConfig"
|
||||
version="1.6.0.0"
|
||||
processorArchitecture="x86"
|
||||
/>
|
||||
<description>Description</description>
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<security>
|
||||
<requestedPrivileges>
|
||||
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
|
||||
</requestedPrivileges>
|
||||
</security>
|
||||
</trustInfo>
|
||||
</assembly>
|
@ -14,4 +14,4 @@ exe = EXE(pyz,
|
||||
debug=False,
|
||||
strip=None,
|
||||
upx=True,
|
||||
console=False, icon="uds.ico", manifest="UDSActorConfig_enterprise.manifest", version="UDSActorConfig_version_info.txt", append_pkg=True)
|
||||
console=False, icon="uds.ico", manifest="UDSActorConfig.manifest", version="UDSActorConfig_version_info.txt", append_pkg=True)
|
||||
|
@ -34,7 +34,7 @@ VSVersionInfo(
|
||||
StringStruct(u'CompanyName', u'Virtual Cable S.L.'),
|
||||
StringStruct(u'FileDescription', u'UDSActorConfig'),
|
||||
StringStruct(u'FileVersion', u'1.6.0.0'),
|
||||
StringStruct(u'InternalName', u'udsService.exe'),
|
||||
StringStruct(u'InternalName', u'UDSActorConfig.exe'),
|
||||
StringStruct(u'LegalCopyright', u'Copyright © Virtual Cable S.L. 2014'),
|
||||
StringStruct(u'LegalTrademarks', u'UDS'),
|
||||
StringStruct(u'OriginalFilename', u'UDSActorConfig.exe'),
|
||||
|
17
windowsActor/UDSActorService.manifest
Normal file
17
windowsActor/UDSActorService.manifest
Normal file
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
|
||||
<assemblyIdentity
|
||||
type="win32"
|
||||
name="UDSActorService"
|
||||
version="1.6.0.0"
|
||||
processorArchitecture="x86"
|
||||
/>
|
||||
<description>Description</description>
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<security>
|
||||
<requestedPrivileges>
|
||||
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
|
||||
</requestedPrivileges>
|
||||
</security>
|
||||
</trustInfo>
|
||||
</assembly>
|
42
windowsActor/UDSActorService.py
Normal file
42
windowsActor/UDSActorService.py
Normal file
@ -0,0 +1,42 @@
|
||||
import pythoncom
|
||||
import win32serviceutil
|
||||
import win32service
|
||||
import win32event
|
||||
import servicemanager
|
||||
import socket
|
||||
|
||||
|
||||
class AppServerSvc (win32serviceutil.ServiceFramework):
|
||||
_svc_name_ = "UDSActor"
|
||||
_svc_display_name_ = "UDS Actor Service"
|
||||
_svc_description_ = "UDS Actor for machines managed by UDS Broker"
|
||||
|
||||
def __init__(self,args):
|
||||
win32serviceutil.ServiceFramework.__init__(self,args)
|
||||
self.hWaitStop = win32event.CreateEvent(None,0,0,None)
|
||||
self.isAlive = True
|
||||
socket.setdefaulttimeout(60)
|
||||
|
||||
def SvcStop(self):
|
||||
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
|
||||
self.isAlive = False
|
||||
win32event.SetEvent(self.hWaitStop)
|
||||
|
||||
|
||||
def SvcDoRun(self):
|
||||
servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,
|
||||
servicemanager.PYS_SERVICE_STARTED,
|
||||
(self._svc_name_,''))
|
||||
|
||||
while self.isAlive:
|
||||
win32event.WaitForSingleObject(self.hWaitStop, 1000) # In milliseconds
|
||||
|
||||
servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,
|
||||
servicemanager.PYS_SERVICE_STOPPED,
|
||||
(self._svc_name_,''))
|
||||
|
||||
self.ReportServiceStatus(win32service.SERVICE_STOPPED)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
win32serviceutil.HandleCommandLine(AppServerSvc)
|
22
windowsActor/UDSActorService.spec
Normal file
22
windowsActor/UDSActorService.spec
Normal file
@ -0,0 +1,22 @@
|
||||
# -*- mode: python -*-
|
||||
a = Analysis(['UDSActorService.py'],
|
||||
pathex=['M:\\projects\\uds\\openuds\\windowsActor'],
|
||||
hiddenimports=[],
|
||||
hookspath=None,
|
||||
runtime_hooks=None)
|
||||
pyz = PYZ(a.pure)
|
||||
exe = EXE(pyz,
|
||||
a.scripts,
|
||||
exclude_binaries=True,
|
||||
name='UDSActorService.exe',
|
||||
debug=False,
|
||||
strip=None,
|
||||
upx=True,
|
||||
console=False )
|
||||
coll = COLLECT(exe,
|
||||
a.binaries,
|
||||
a.zipfiles,
|
||||
a.datas,
|
||||
strip=None,
|
||||
upx=True,
|
||||
name='UDSActorService')
|
46
windowsActor/UDSActorService_version_info.txt
Normal file
46
windowsActor/UDSActorService_version_info.txt
Normal file
@ -0,0 +1,46 @@
|
||||
# UTF-8
|
||||
#
|
||||
# For more details about fixed file info 'ffi' see:
|
||||
# http://msdn.microsoft.com/en-us/library/ms646997.aspx
|
||||
VSVersionInfo(
|
||||
ffi=FixedFileInfo(
|
||||
# filevers and prodvers should be always a tuple with four items: (1, 2, 3, 4)
|
||||
# Set not needed items to zero 0.
|
||||
filevers=(1, 6, 0, 0),
|
||||
prodvers=(1, 6, 0, 0),
|
||||
# Contains a bitmask that specifies the valid bits 'flags'r
|
||||
mask=0x3f,
|
||||
# Contains a bitmask that specifies the Boolean attributes of the file.
|
||||
flags=0x0,
|
||||
# The operating system for which this file was designed.
|
||||
# 0x4 - NT and there is no need to change it.
|
||||
OS=0x4,
|
||||
# The general type of file.
|
||||
# 0x1 - the file is an application.
|
||||
fileType=0x1,
|
||||
# The function of the file.
|
||||
# 0x0 - the function is not defined for this fileType
|
||||
subtype=0x0,
|
||||
# Creation date and time stamp.
|
||||
date=(0, 0)
|
||||
),
|
||||
kids=[
|
||||
VarFileInfo([VarStruct(u'Translation', [0, 1200])]),
|
||||
StringFileInfo(
|
||||
[
|
||||
StringTable(
|
||||
u'000004b0',
|
||||
[StringStruct(u'Comments', u'UDS Actor Service Application'),
|
||||
StringStruct(u'CompanyName', u'Virtual Cable S.L.U.'),
|
||||
StringStruct(u'FileDescription', u'UDSActorService'),
|
||||
StringStruct(u'FileVersion', u'1.6.0.0'),
|
||||
StringStruct(u'InternalName', u'UDSActorService.exe'),
|
||||
StringStruct(u'LegalCopyright', u'Copyright © Virtual Cable S.L.U. 2014'),
|
||||
StringStruct(u'LegalTrademarks', u'UDS'),
|
||||
StringStruct(u'OriginalFilename', u'UDSActorService.exe'),
|
||||
StringStruct(u'ProductName', u'UDSActorService'),
|
||||
StringStruct(u'ProductVersion', u'1.6.0.0'),
|
||||
StringStruct(u'Assembly Version', u'1.6.0.0')])
|
||||
])
|
||||
]
|
||||
)
|
75
windowsActor/setup-config.py
Normal file
75
windowsActor/setup-config.py
Normal file
@ -0,0 +1,75 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Copyright (c) 2014 Virtual Cable S.L.
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without modification,
|
||||
# are permitted provided that the following conditions are met:
|
||||
#
|
||||
# * Redistributions of source code must retain the above copyright notice,
|
||||
# this list of conditions and the following disclaimer.
|
||||
# * Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the following disclaimer in the documentation
|
||||
# and/or other materials provided with the distribution.
|
||||
# * Neither the name of Virtual Cable S.L. nor the names of its contributors
|
||||
# may be used to endorse or promote products derived from this software
|
||||
# without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
'''
|
||||
@author: Adolfo Gómez, dkmaster at dkmon dot com
|
||||
'''
|
||||
|
||||
# ModuleFinder can't handle runtime changes to __path__, but win32com uses them
|
||||
try:
|
||||
# py2exe 0.6.4 introduced a replacement modulefinder.
|
||||
# This means we have to add package paths there, not to the built-in
|
||||
# one. If this new modulefinder gets integrated into Python, then
|
||||
# we might be able to revert this some day.
|
||||
# if this doesn't work, try import modulefinder
|
||||
try:
|
||||
import py2exe.mf as modulefinder
|
||||
except ImportError:
|
||||
import modulefinder
|
||||
import win32com, sys
|
||||
for p in win32com.__path__[1:]:
|
||||
modulefinder.AddPackagePath("win32com", p)
|
||||
for extra in ["win32com.shell"]: #,"win32com.mapi"
|
||||
__import__(extra)
|
||||
m = sys.modules[extra]
|
||||
for p in m.__path__[1:]:
|
||||
modulefinder.AddPackagePath(extra, p)
|
||||
except ImportError:
|
||||
# no build path setup, no worries.
|
||||
pass
|
||||
|
||||
from distutils.core import setup
|
||||
import py2exe
|
||||
|
||||
# Now you need to pass arguments to setup
|
||||
# windows is a list of scripts that have their own UI and
|
||||
# thus don't need to run in a console.
|
||||
|
||||
setup(
|
||||
windows=[{'script': 'UDSActorConfig.py', 'icon_resources': [(0, 'uds.ico')]} ],
|
||||
options={ 'py2exe': {
|
||||
'bundle_files': 3, 'compressed': True,
|
||||
'includes': [ 'sip', 'PyQt4', 'win32com.shell' ] }
|
||||
},
|
||||
name = 'UDSActorConfig',
|
||||
version = '1.6.0.0',
|
||||
description = 'UDS Actor Configuration Tool',
|
||||
author = 'Adolfo Gomez',
|
||||
author_email = 'agomez@virtualcable.es',
|
||||
#zipfile=None,
|
||||
)
|
32
windowsActor/setup-service.py
Normal file
32
windowsActor/setup-service.py
Normal file
@ -0,0 +1,32 @@
|
||||
from distutils.core import setup
|
||||
import py2exe, sys
|
||||
|
||||
sys.argv.append('py2exe')
|
||||
|
||||
class Target:
|
||||
|
||||
def __init__(self, **kw):
|
||||
self.__dict__.update(kw)
|
||||
# for the versioninfo resources
|
||||
self.version = "1.6.0"
|
||||
self.name = 'UDSActorService'
|
||||
self.description = 'UDS Actor Service for managing UDS Broker controlled machines'
|
||||
self.author = 'VirtualCable S.L.U.'
|
||||
self.url = 'http://www.udsenterprise.com'
|
||||
self.company_name = "VirtualCable S.L.U."
|
||||
self.copyright = "(c) 2014 VirtualCable S.L.U."
|
||||
self.name = "UDS Actor"
|
||||
|
||||
|
||||
myservice = Target(
|
||||
description = 'UDS Actor Service for managing machine from UDS Broker',
|
||||
modules = ['UDSActorService'],
|
||||
cmdline_style='pywin32'
|
||||
)
|
||||
|
||||
setup(
|
||||
options = {"py2exe": {"compressed": 1, "bundle_files": 1} },
|
||||
console=["UDSActorService.py"],
|
||||
zipfile = None,
|
||||
service=[myservice]
|
||||
)
|
99
windowsActor/setup.py
Normal file
99
windowsActor/setup.py
Normal file
@ -0,0 +1,99 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Copyright (c) 2014 Virtual Cable S.L.
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without modification,
|
||||
# are permitted provided that the following conditions are met:
|
||||
#
|
||||
# * Redistributions of source code must retain the above copyright notice,
|
||||
# this list of conditions and the following disclaimer.
|
||||
# * Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the following disclaimer in the documentation
|
||||
# and/or other materials provided with the distribution.
|
||||
# * Neither the name of Virtual Cable S.L. nor the names of its contributors
|
||||
# may be used to endorse or promote products derived from this software
|
||||
# without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
'''
|
||||
@author: Adolfo Gómez, dkmaster at dkmon dot com
|
||||
'''
|
||||
|
||||
# ModuleFinder can't handle runtime changes to __path__, but win32com uses them
|
||||
try:
|
||||
# py2exe 0.6.4 introduced a replacement modulefinder.
|
||||
# This means we have to add package paths there, not to the built-in
|
||||
# one. If this new modulefinder gets integrated into Python, then
|
||||
# we might be able to revert this some day.
|
||||
# if this doesn't work, try import modulefinder
|
||||
try:
|
||||
import py2exe.mf as modulefinder
|
||||
except ImportError:
|
||||
import modulefinder
|
||||
import win32com, sys
|
||||
for p in win32com.__path__[1:]:
|
||||
modulefinder.AddPackagePath("win32com", p)
|
||||
for extra in ["win32com.shell"]: #,"win32com.mapi"
|
||||
__import__(extra)
|
||||
m = sys.modules[extra]
|
||||
for p in m.__path__[1:]:
|
||||
modulefinder.AddPackagePath(extra, p)
|
||||
except ImportError:
|
||||
# no build path setup, no worries.
|
||||
pass
|
||||
|
||||
from distutils.core import setup
|
||||
import py2exe
|
||||
|
||||
#sys.argv.append('py2exe')
|
||||
|
||||
class Target:
|
||||
|
||||
def __init__(self, **kw):
|
||||
self.__dict__.update(kw)
|
||||
# for the versioninfo resources
|
||||
self.version = "1.6.0"
|
||||
self.name = 'UDSActorService'
|
||||
self.description = 'UDS Actor Service for managing UDS Broker controlled machines'
|
||||
self.author = 'VirtualCable S.L.U.'
|
||||
self.url = 'http://www.udsenterprise.com'
|
||||
self.company_name = "VirtualCable S.L.U."
|
||||
self.copyright = "(c) 2014 VirtualCable S.L.U."
|
||||
self.name = "UDS Actor"
|
||||
|
||||
# Now you need to pass arguments to setup
|
||||
# windows is a list of scripts that have their own UI and
|
||||
# thus don't need to run in a console.
|
||||
|
||||
|
||||
udsservice = Target(
|
||||
description = 'UDS Actor Service for managing machine from UDS Broker',
|
||||
modules = ['UDSActorService'],
|
||||
cmdline_style='pywin32'
|
||||
)
|
||||
|
||||
setup(
|
||||
windows=[{'script': 'UDSActorConfig.py', 'icon_resources': [(0, 'uds.ico')]} ],
|
||||
service=[udsservice],
|
||||
options={ 'py2exe': {
|
||||
'bundle_files': 3, 'compressed': True,
|
||||
'includes': [ 'sip', 'PyQt4', 'win32com.shell' ] }
|
||||
},
|
||||
name = 'UDSActorConfig',
|
||||
version = '1.6.0.0',
|
||||
description = 'UDS Actor Configuration Tool',
|
||||
author = 'Adolfo Gomez',
|
||||
author_email = 'agomez@virtualcable.es',
|
||||
zipfile='uds.zip',
|
||||
)
|
Loading…
Reference in New Issue
Block a user