windows 如何让py2exe内置版权信息

ogsagwnx  于 2023-03-04  发布在  Windows
关注(0)|答案(4)|浏览(235)

我正在使用Py2exe从我的Python脚本创建一个Windows.exe。我希望有版权信息以及产品版本,描述等。我已经能够得到所有显示(在属性〉详细信息的exe),除了版权信息。我尝试了以下没有成功:

from distutils.core import setup
import py2exe
import sys

if len(sys.argv) == 1:
    sys.argv.append("py2exe")
    sys.argv.append("-q")

class Target:
    def __init__(self, **kw):
        self.__dict__.update(kw)
        # for the versioninfo resources
        self.version = "1.0.0.0"
        self.company_name = "ACME."
        self.copyright = "Copyright (c) 2014 ACME."
        self.name = "My Program"

# create an instance of class Target
# and give it additional needed info
target = Target(
    description = "Test Description",
    # this is your code file
    script = "Main.py",
    # this will form TestProgram.exe
    dest_base = "TestProgram")

setup(
    options = {'py2exe': {'bundle_files': 1,
                          'compressed': 1}},
    console = [{'script': "Main.py"}],
    zipfile = None,
)

当使用这种方法时,我在.exe的属性〉详细信息中获得了文件描述,产品名称和产品版本,但我缺少版权。

nnsrf1az

nnsrf1az1#

我得到了以下工作。我意识到我没有设置正确的目标。在底部修复我做的console = [target]

from distutils.core import setup
import py2exe
import sys

if len(sys.argv) == 1:
    sys.argv.append("py2exe")
    sys.argv.append("-q")

class Target:
    def __init__(self, **kw):
        self.__dict__.update(kw)
        self.version = "1.0.0.0"
        self.company_name = "ACME."
        self.copyright = "Copyright (c) 2014 ACME."
        self.name = "My Program"

target = Target(
    description = "Test Description",
    script = "Main.py",
    dest_base = "TestProgram")

setup(
    options = {'py2exe': {'bundle_files': 1,
                          'compressed': True}},
    zipfile = None,
    console = [target]
)
vx6bjr1n

vx6bjr1n2#

user2643864的答案比实际需要的要复杂得多。jgritty的答案差不多了,只需要简单的修改,在分配给console的字典中添加几个条目:

from distutils.core import setup
import py2exe

setup(
    options = {'py2exe': {'bundle_files': 1,
                          'compressed': 1}},
    console = [{
        'script': 'Main.py',
        'copyright': 'Copyright (C) 2016 ACME Pty Ltd',
        'company_name': 'ACME Pty Ltd',
    }],
    zipfile = None,
    version = '1.0.0.0',
    name = 'My Program',
    description = 'Test Description',
)
yks3o0rb

yks3o0rb3#

我认为您的代码确实有问题,因为它没有更新exe中的文件描述、产品名称和产品版本。但是,此代码可以:

from distutils.core import setup
import py2exe

setup(
    options = {'py2exe': {'bundle_files': 1,
                          'compressed': 1}},
    console = [{'script': "Main.py"}],
    zipfile = None,
    version = "1.0.0.0",
    name = "My Program",
    description = "Test Description",
)

将公司名称和版权信息放入可执行文件中更具挑战性,不幸的是,我还不知道如何做到这一点。This可能会有用。

des4xlb0

des4xlb04#

2023年更新。有一个新的freeze API,这是编译代码的新方法。我发现这是唯一可靠的方法,我可以得到版权和产品版本出现使用Python 3. 11+。

from py2exe import freeze
 
freeze(
   console = [myservice],
   zipfile = None,
   options = {'bundle_files': 3,'compressed': 1},
   version_info={
      'version':'1.0.0',
      'product_version':'03012023',
      'product_name':'My Service',
      'copyright':'Copyright 2023 My Company',
   }
)

相关问题