精华内容
下载资源
问答
  • 需求: 虽然odoo 13.0在我自己的电脑上已经安装好了,但是如果要放在另一台电脑上运行,就麻烦了。 1、还得按着配置一遍odoo运行环境,谁也知道会出...下面就把odoo 13.0打包安装程序的过程介绍一下。 1、pyins

    需求:
    虽然odoo 13.0在我自己的电脑上已经安装好了,但是如果要放在另一台电脑上运行,就麻烦了。
    1、还得按着配置一遍odoo运行环境,谁也不知道会出什么问题。
    2、如果用python.exe在命令行中运行,老是显示个命令行窗口,万一不小心被关掉了怎么办。
    3、不高大上,你看人家QQ、微信都是点下一步→下一步就可以用了,你这个怎么就这么麻烦呢。
    4、万一由于某种异常,导致了odoo服务崩溃了,没有一个机制把服务重新启动起来。
    下面就把odoo 13.0打包成安装程序的过程介绍一下。

    1、用pyinstaller生成exe程序

    pyinstaller的用法请参考
    Python PyInstaller安装和使用教程
    在这里插入图片描述
    我这里是这样用的:
    pyinstaller -w -D odoo-bin
    说明: 用的是-w,也就是不能要窗口,在调试的时候可以把窗口保留,以便发现问题,-D,因为-F只生成一个文件,让人看起来不专业的样子,这么大个系统总应该有好多文件吧。
    效果:理论上双击odoo-bin.exe就可以运行了,实际上,请往下看……。
    在这里插入图片描述

    2、把依赖的库文件在打包时配置上

    注意: 用pycharm和python命令行开启odoo服务和打包成exe运行是不同的,因为pycharm和python命令行可以根据配置或者环境变量自动找到要使用到的库文件,而打包成exe之后,程序就不知道你的库文件在哪里了,因此,在打包时,要把需要的库文件带上,这个工作量还是挺大的,我是怎么做的呢。
    在加载odoo时,抛出异常,只要出错了,就会打印出来。

    #D:\git\odoo-13.0\odoo-bin
    # set server timezone in UTC before time module imported
    __import__('os').environ['TZ'] = 'UTC'
    def logger(message):
        import os
        log_path = os.getcwd()
        f = open("%s\log.txt" % log_path, 'a', encoding='utf-8')
        f.write("[INFO] %s\n" % message)
        f.close()
    logger("import odoo start")
    try:
        import odoo
    except Exception as e:
        logger(e.args[0])
    logger("import odoo end")
    if __name__ == "__main__":
        odoo.cli.main()
    

    在这里插入图片描述
    把缺少的库文件加上后,在编译,发现又少了库文件。
    在这里插入图片描述
    继续加,最终写成一个批处理文件,‘^’是表示这里面的是一条命令:

    pyinstaller -D odoo-bin ^
    --hidden-import passlib.handlers ^
    --hidden-import passlib.handlers.md5_crypt ^
    --hidden-import passlib.handlers.argon2 ^
    --hidden-import passlib.handlers.pbkdf2 ^
    --hidden-import passlib.handlers.bcrypt ^
    --hidden-import passlib.handlers.des_crypt ^
    --hidden-import passlib.handlers.windows ^
    --hidden-import passlib.handlers.cisco ^
    --hidden-import passlib.handlers.django ^
    --hidden-import passlib.handlers.fshp ^
    --hidden-import passlib.handlers.digests ^
    --hidden-import passlib.handlers.ldap_digests ^
    --hidden-import passlib.handlers.roundup ^
    --hidden-import passlib.handlers.mssql ^
    --hidden-import passlib.handlers.mysql ^
    --hidden-import passlib.handlers.oracle ^
    --hidden-import passlib.handlers.phpass ^
    --hidden-import passlib.handlers.misc ^
    --hidden-import passlib.handlers.postgres ^
    --hidden-import passlib.handlers.scram ^
    --hidden-import passlib.handlers.scrypt ^
    --hidden-import passlib.handlers.sha1_crypt ^
    --hidden-import passlib.handlers.sha2_crypt ^
    --hidden-import passlib.handlers.sun_md5_crypt ^
    --hidden-import reportlab.graphics.barcode.common ^
    --hidden-import reportlab.graphics.barcode.code39 ^
    --hidden-import reportlab.graphics.barcode.code93 ^
    --hidden-import reportlab.graphics.barcode.code128 ^
    --hidden-import reportlab.graphics.barcode.usps ^
    --hidden-import reportlab.graphics.barcode.usps4s ^
    --hidden-import reportlab.graphics.barcode.widgets ^
    --hidden-import reportlab.graphics.barcode.eanbc ^
    --hidden-import reportlab.graphics.barcode.ecc200datamatrix ^
    --hidden-import reportlab.graphics.barcode.fourstate ^
    --hidden-import reportlab.graphics.barcode.lto ^
    --hidden-import reportlab.graphics.barcode.qr ^
    --hidden-import reportlab.graphics.barcode.qrencoder ^
    --hidden-import babel.messages.pofile
    

    执行完后,没有出现异常。
    在这里插入图片描述

    3、把配置文件拷贝到odoo-bin所在目录

    双击D:\git\odoo-13.0\dist\odoo-bin\odoo-bin.exe,服务启动
    在这里插入图片描述
    定位:

    D:\git\odoo-13.0\odoo\modules\module.py
    __FILE__LINE__:D:\git\odoo-13.0\odoo\modules\module.py  161       
    #for adp in odoo.addons.__path__:         
    #通过编译后运行odoo-bin.exe
    [INFO] ['D:\\git\\odoo-13.0\\dist\\odoo-bin\\odoo\\addons', 'c:\\users\\administrator\\appdata\\local\\openerp s.a\\odoo\\addons\\13.0', 'd:\\git\\odoo-13.0\\dist\\odoo-bin']
    
    #通过pycharm运行
    [INFO] ['D:\\git\\odoo-13.0\\odoo\\addons', 'c:\\users\\administrator\\appdata\\local\\openerp s.a\\odoo\\addons\\13.0', 'd:\\git\\odoo-13.0\\addons', 'd:\\git\\odoo-13.0\\mymodules', 'd:\\git\\odoo-13.0', 'd:\\git\\odoo-13.0\\odoo\\addons']
    

    因此把odoo目录和addons目录复制到D:\git\odoo-13.0\dist\odoo-bin目录下。
    在这里插入图片描述
    把odoo.conf复制到odoo-bin.exe目录下:
    在这里插入图片描述

    4、把addons和odoo下所有的py文件换成pyc文件。

    注意: 编译的时候会带.cpython-37的字样,拷贝过来时要把名字改成和py文件名一样。
    在这里插入图片描述

    5、把lxml、numpy等库文件的pyc文件从python目录拷过来。

    同步骤4一样。
    在这里插入图片描述
    在这里插入图片描述

    最终结果

    在这里插入图片描述

    结束语:

    仿崩溃机制下次再说。从整个编译过程来看,编译还是很复杂的,如果用到的模块比较多,编译也是一个非常消耗时间的过程。但是一旦编译正常运行,那么就不会再受到环境的影响,可以跨平台使用。否则,在现场运行,不知道会出现什么样的情况,一旦出问题,会给人不专业的样子。
    祝大家使用odoo愉快!!!

    展开全文
  • odoo 13.0pyinstaller打包安装程序的种种坑 这两天为此吃不好,睡香,终于成功了 pyinstaller -w -D odoo-bin 首先要在cmd模式下操作,能在虚拟环境中 pyinstaller -y -D odoo-bin PermissionError: ...

    odoo 13.0用pyinstaller打包成安装程序的种种坑

    这两天为此吃不好,睡不香,终于成功了

    pyinstaller -w -D odoo-bin

    首先要在cmd模式下操作,不能在虚拟环境中

    pyinstaller -y -D odoo-bin
    PermissionError: [Errno 13] Permission denied: 'C:\\Users\\xxx\\AppData\\Roa
    ming\\pyinstaller\\mapp\\api-ms-win-core-libraryloader-l1-1-0.d
    ll'这个报错困域了我半天,反复查找网上资料

    三种情况

    报错翻译过来是:

    权限错误:[errno 13]权限被拒绝:

    错误产生的原因是文件无法打开,可能产生的原因是文件找不到,或者被占用,或者无权限访问,或者打开的不是文件,而是一个目录

    要增加一条,关闭360

    解决方案如下:

    1.检查对应路径下的文件是否存在,且被占用。如果文件不存在,就找到对应文件即可;如果文件存在,被占用,将占用程序暂时关闭。

    2.修改cmd的权限,以管理员身份运行。

    3.检查是否是打开了文件夹。

    我的是因为360开着的,关了,立马可以了,呵呵

    下边接着在虚拟环境下:

    pyinstaller -D odoo-bin.spec
    小技巧,否则手点的疼
    调试disk下文件,查看却少哪些module可用的bat
    @echo off
    start cmd /k "E:\xzd13\dist\odoo-bin\odoo-bin.exe  --config e:\xzd13\debian\odoo.conf"

    修改.spec

    # -*- mode: python ; coding: utf-8 -*-
    
    block_cipher = None
    
    
    a = Analysis(['odoo-bin'],
                 pathex=['e:\\ddd13'],
                 binaries=[],
                 datas=[],
                 hiddenimports=[
                    'passlib.handlers.pbkdf2',
                    'passlib.handlers.misc',
                    'reportlab.graphics.barcode.common',
                 'reportlab.graphics.barcode.code128',
                 'reportlab.graphics.barcode.code93',
                 'reportlab.graphics.barcode.code39',
                 'reportlab.graphics.barcode.usps',
                 'reportlab.graphics.barcode.usps4s',
                  'reportlab.graphics.barcode.ecc200datamatrix',
                  'odoo.addons.web',
                  'babel.messages.pofile',
                  'poplib',
                  'imaplib',
                  'pyecharts',
                  'redis',
                  'modbus-tk',
                  'pandas',
                  'PyMuPDF',
                  'addons',
                  'addons.web',
                 ],
                 hookspath=[],
                 runtime_hooks=[],
                 excludes=[],
                 win_no_prefer_redirects=False,
                 win_private_assemblies=False,
                 cipher=block_cipher,
                 noarchive=False)
    pyz = PYZ(a.pure, a.zipped_data,
                 cipher=block_cipher)
    exe = EXE(pyz,
              a.scripts,
              [],
              exclude_binaries=True,
              name='odoo-bin',
              debug=False,
              bootloader_ignore_signals=False,
              strip=False,
              upx=True,
              console=True )
    coll = COLLECT(exe,
                   a.binaries,
                   a.zipfiles,
                   a.datas,
                   strip=False,
                   upx=True,
                   upx_exclude=[],
                   name='odoo-bin')

    应用:

    @echo off  

    start cmd /k "F:\ddd20200910\odoo-bin.exe  --config e:\ddd13\debian\odoo.conf"

    最后把addons,odoo两文件存一处

    把虚拟环境中的部分文件考至一处

    试试,大功告成!!

    展开全文
  • 我的应用程序 U3D 开发的 ,有两个Win services, advance installer 自带的安装服务 ,在安装过程中出现权限不够。 后来改用 .bat 来直接执行安装Services。 在查阅了好多资料或发现 居然资料多 再反复 ...

     Advanced Installer 11   基本操作网站都有介绍 


    这里和大家分享下 我遇到的一点小问题

    我的应用程序是用 U3D 开发的 ,有两个Win  services,用  advance installer 自带的安装服务 ,在安装过程中出现权限不够。 后来改用 .bat 来直接执行安装Services。

    在查阅了好多资料或发现 居然资料不多 再反复 测试后 得到点 小经验和 大家分享下,一遍节约大家时间

    上面是我 是我批处理 脚本


    具体操作如下:




    其他默认,直到这一步 选择我们的 .bat 批处理文件


    其他默认 直到 这一步 你会看见 现有自定义操作 有一个我们自己建立的



    然后打包 发布 就可以启动我们的 Services 了

    再和大家分享一个小经验

    怎么指定 安装目录,目前也只是指定 本来想实现  固定的, 目前就实现了 指定目录  



    补充: 实现指定安装目录了 , 首先你建立  企业版的项目 或者把当前项目修改为 企业版的 然后 编辑安装对话框



    这样 就可以固定安装目录了

    展开全文
  • 我再vs2010打包我的程序,想把驱动安装打包进去,我尝试了两种方法。 1、我利用wdk里面的DIFxCmd.exe添加到打包工程自定义操作里面。 ![图片说明]...
  • 前不久自己因为有需要,帮别人做了一个物理实验数据计算器,可以excel导出导入数据等。因为电脑装的是VS2015,但是对方要求的用户机是xp系统的,所以最后只能.Net ...如果有需要打包安装,需要使用一个叫Install

         前不久自己因为有需要,帮别人做了一个物理实验数据计算器,可以用excel导出导入数据等。因为电脑装的是VS2015,但是对方要求的用户机是xp系统的,所以最后只能用.Net framework 4.0进行开发,而后在打包程序时发现一个问题,找不到打包程序安装包的方法,搜索过后发现是因为visual studio自2012后似乎取消掉了自带的打包程序,如果有需要打包安装,需要使用一个叫用InstallShield for Visual Studio 的插件来进行打包
    (下载链接:http://download.csdn.net/download/youyo0u380/9019567 需要积分
    参考来源:
    http://blog.csdn.net/kingmax54212008/article/details/44303539
    http://jingyan.baidu.com/article/08b6a591c5c6eb14a9092249.html )
    但是我试过之后发现我的电脑并不能安装InstallShield,然后我便自己在vs里找了一下,最后找到了这个。其实直接项目右键发布就可以了。。

    右键项目,点击发布

    更改路径
    然后直接下一步下一步下一步完成(看你软件需求)

    这个是比较直接的,如果需要进行安装包的修改,右键项目属性里进行修改
    包括版本号,必备组件等等

    最后就是你的安装包了~~
    啦啦啦

    因为之前在这个卡了好久,可能是很多人都知道的小知识,但我是第一次知道,所以写了这篇博客,希望能帮到那些搜索到这篇博客的朋友!
                                                                                                   

    2015.11.20
                                                                                                    2016.01.28

    展开全文
  • 因手中项目需要C#编写一个桌面应用程序,需要打包发送给甲方离线使用。经过多天摸索和查阅,总结在Visual Studio 2019 上打包 C# winform程序,话多说,开始 操作环境 开发工具: Visual Studio 2019,.Net ...
  • OpenJDK社区发布了JEP 343:打包工具的早期访问版本。JEP 343:打包工具,又名jpackage,...\n长期以来,Java开发人员一直希望构建这样的应用程序:可以安装在本机平台上,而不是分发jar和配置类路径。借助jpackage...
  • 前几天,VB6.0+Access做了一个化工物性查询系统,在打包的过程中首先考虑的是VB自带的打包的软件,生成后个人感觉不是特别喜欢那种安装界面风格。然后就试了试网上最流行的InstallShield2009,可是每当快结束的...
  • 但是如果将程序**打包成apk文件**,然后传到平板里,**在平板里点击apk文件进行安装**,**就一直显示正在安装程序怎么都安装不了**,换过2个平板了,都不行,试过平板重启也是不**行,安装过程就卡在——正在**...
  • ____当年遇到PHP和Java,凭着直觉,一直坚持跟着php走,果不其然,经过多年之后,java无法再配置差来解释它的内存管理。虽然php的格式很喜欢,尤其讨厌->的引用方式,但依然坚持跟了下来。多年以后,终于...
  • 这里主要是自己在做项目中对安装打包的一个简单总结 1、 在解决方案中点击右键增加安装部署文件(或新建),设置名称为Setup1(最好不要汉字) 这里要注意安装路径,小心待会儿找到安装包在哪里。 ...
  • 你的邮箱注册,会免费发注册码的,需要破解 最近开发了一个小软件。由于需要打包。网上找了一些资料。然后整合了起来。希望对大家有所帮助。全面请见谅。 本人开发工具的是V
  • 执行pip installpyinstaller安装pyinstaller如果安装不了可以在命令框输入pyinstaller看一下是否已安装或者安装开发版本等其他版本。建议进入其网站具体的看一下。我无法安装然后就是进入网站看了之后pip install ...
  • 这里面的文件保存着应用程序的签名摘要,没有密钥是能反编译出来的,当签名摘要变化了,应用程序也就安装了。 打包步骤: ①android项目通过编译,dx.bat工具,将编译的多个.class文件打包成一个classes...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,069
精华内容 427
关键字:

打包安装程序用不了