亲爱的程序员们,您好,
我已经用 pyinstaller 生成了一个 EXE。然而,我希望这个 EXE 的有效期只有 6 个月,这样用户就必须从下载中心重新下载带有更新的改进版 EXE。有什么办法可以在程序代码中添加这个吗?
不幸的是,我无法包含标准更新功能,因为用户通常没有互联网。
我很好奇你的建议。非常感谢大家!我附上了下面的一小段程序。
import tkinter as tk
from tkinter import ttk
class Win1:
def __init__(self, master):
self.master = master
self.topFrame = tk.Frame(self.master)
self.topFrame.grid(row=0, column=0, sticky='news', ipady = 5)
self.B_GapFrame = tk.Frame(self.master)
self.master.resizable(False, False)
self.gapType = tk.StringVar(self.master)
self.choiceGap = ['RBC, TUR']
self.gapType.set('') # set the default option
self.ctngMenu = tk.OptionMenu(self.topFrame, self.gapType, *self.choiceGap, command=self.choose_gap_handle)
self.ctngMenu.config(width=40)
self.LabelGap = tk.Label(self.topFrame, text="Select TYPE")
self.LabelGap.grid(row = 3, column = 0,sticky = "W")
self.ctngMenu.grid(row = 3, column =2,sticky = "W", columnspan = 3)
self.frameVar = tk.StringVar(self.master)
self.choiceFrame = "Test"
self.frameVar.set('') # set the default option
self.frameMenu = ttk.Combobox(self.topFrame, values= self.choiceFrame, state = "readonly", justify = "center", textvariable = self.frameVar, width = 12)
self.frameMenu.grid(row = 1, column =2,sticky = "W", pady = 7, columnspan = 3)
self.LabelFrame = tk.Label(self.topFrame, text="Select TUR ")
self.LabelFrame.grid(row = 1, column = 0,sticky = "W",pady =7)
def choose_gap_handle(self, selected_Gap):
if selected_Gap == 'RBC, TUR':
self.B_GapFrame.tkraise()
self.B_GapFrame.grid(row=2, column=0, sticky='news')
root = tk.Tk()
root.geometry("+50+50")
app = Win1(root)
root.mainloop()
最佳答案
这完全取决于你想变得多么“残酷”。
一种选择可能是在代码中添加硬编码日期,例如
import datetime
RLS_DATE = datetime.date(2021, 02, 24)
然后在主代码部分之前,如下所示:
if datetime.date.today() - RLS_DATE > 7 * 30: # about 7 months
# as @TheLizzard suggested delete the executable.
# You might do this only if running under
# py2exe to avoid deleting your own source code
if getattr(sys, 'frozen', False):
os.remove(sys.argv[0])
elif datetime.date.today() - RLS_DATE > 6 * 30: # about 6 months
# write your own coded, that shows just a popup and lets the user
# continue using the app.
如果您不想硬编码发布日期,您可以编写一个更智能的脚本来创建可执行文件并为 py2exe 添加一些数据,其中包含编译可执行文件的日期。
我所说的残忍是什么意思。
要么只显示一个弹出窗口,用户应该更新,
或添加弹出窗口并阻止用户界面 x 秒。 用户不更新的时间越长,延迟可能会增加
或者直接退出程序
甚至删除该程序
当然,所有这些选项都不安全。 这仅适用于标准用户。
如果有人坚持运行您的程序,他可以修改生成的可执行文件以忽略日期。
关于python - 设置 python 应用程序的到期日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66349225/