我正在使用Inno Setup安装和更新我的python应用程序。
更新时,安装程序不会删除以前安装的py文件,这会产生两个问题:
>
我使用的是插件:如果我在新版本中删除了插件,它仍然适用于执行更新的用户。
<罢工>卸载更新的安装时,将不会删除旧安装中的文件。(无法复制…)
如何在升级之前强制Inno安装程序卸载我的应用程序?
这是我的脚本:
[Setup]
AppName=Foo
AppVersion=0.1
PrivilegesRequired=lowest
AppId=FooID
RestartIfNeededByRun=False
DefaultDirName={localappdata}\Foo
DisableWelcomePage=True
DisableReadyPage=True
OutputDir=.\win
OutputBaseFilename=setup_Foo
AllowNoIcons=yes
DefaultGroupName=Foo
[Files]
Source: "dist\Foo.exe"; DestDir: "{app}"
Source: "..\*"; DestDir: "{app}\"; Flags: recursesubdirs; Excludes: "*.pyc,installer"
[Icons]
Name: "{group}\Foo"; Filename: "{app}\Foo.exe"; WorkingDir: "{app}"
Name: "{group}\Uninstall Foo"; Filename: "{uninstallexe}"
[Dirs]
Name: "{app}\plugins"
[Run]
Filename: "{app}\Foo.exe"; WorkingDir: "{app}"; Flags: nowait postinstall
对于很难确定需要删除哪些旧文件、应该删除哪些旧注册表值等的用例,在安装升级之前卸载以前的版本可能更有效。如果这是您的用例,并且您使用的是Inno Setup 6或更高版本,您可以使用UninsIS.dll提供的功能先卸载现有版本:
https://github.com/Bill-Stewart/UninsIS
DLL提供了一些函数来确定应用程序是否已经安装,以及它是当前安装的版本的相同版本、较新版本还是较旧版本。
虽然可以在升级之前运行卸载,但不建议这样做。
相反,您应该使用 [InstallDelete]
条目来删除现在冗余的特定文件。您应该知道这些是哪些文件。
[InstallDelete]
Type: files; Name: {app}\foo.bar
Type: files; Name: {app}\baz\quux.txt
虽然可以使用通配符,但不建议这样做(尤其是不要忽略文件扩展名的通配符),因为它可能会无意中删除用户文件,特别是如果 {app}
在某个意外的地方(也许它们直接安装到他们的 Windows 文件夹中)。
至于您的第二个断言,“当卸载一个更新的安装时,旧安装中的文件不会被删除。”,这根本就是不真实的。只要您保持< code>AppId和目标文件夹相同,那么卸载将卸载所有以前安装的文件,即使在更新之后。您应该使用以下设置来帮助确保这一点:
[Setup]
DisableDirPage=auto
此外,如果您尚未发布此应用程序,则应考虑将其 DefaultDirName
更改为 {userpf}\YourAppName
;这是安装每用户应用程序的更好位置。(如果已发布应用,则只要不更改 AppId
,更改此值仍然是安全的,但必须记住,较旧的安装将保留在较旧的路径上。
问题内容: 我知道该ValueEventListener线程在新线程中运行,是否应该在任何时间删除此线程以进行适当的线程管理?(例如,没有太多并行运行的线程)。如果是,该怎么办? 问题答案: 在谈论监听器时,是的,您需要根据活动的生命周期将其删除,为此,您需要使用以下代码行: 请记住,如果不这样做,最终将浪费您的电池和带宽。所以: 如果已在中添加了侦听器,则onStart必须在中将其删除onSto
我的代码有点纠结。我已经搜索并尝试了许多方法。我的目标是删除Firebase之前提供给我的应用程序的条目,Firebase数据来自嵌入式设备。我想替换android应用程序中的值。 Firebase工作正常,应用程序将显示Firebase提供的新值,但不会删除以前的条目。 我还有很多事情要做,但想在继续前进之前解决基础问题。 因此,OnChildChanged基本上会显示新的firebase条目,
问题内容: 我使用以下crontab记录来每天备份数据库: 我想添加另一个crontab记录,该记录将删除早于一个月的数据库转储。 有什么想法吗? 问题答案: 只需创建另一个cron: 它将查找所有早于30天的备份并将其删除。
我需要删除每天滚动的旧日志文件。要限制我尝试的文件数,请执行以下操作: 但是日志没有被删除。 现在我在尝试 但我得到了一个错误: 错误DefaultRolloverStrategy包含无效元素或属性“Delete” 我的log4j2有点问题。xml文件? 我将maven与以下内容一起使用:
我使用下面的log4j2。xml 我想要的是旧的日志文件被删除,如果累积的大小超过。但是log4j2首先删除最近修改的文件。https://logging.apache.org/log4j/2.x/manual/appenders.html说有一个路径排序参数可以做到这一点。有人能告诉我如何指定相反的将逻辑排序为默认值?
我正在寻找一个简单的批处理脚本,它将允许我删除旧文件并记录它是否删除了旧文件。搜索完网站后,我发现“forfiles”非常有用: 来自:批处理文件以删除超过N天的文件 正如我所说,我关心的是记录已删除的内容。我尝试了很多东西,但仍然不起作用。这是我的实际代码: 日志文件已创建,但为空,旧文件不会被删除。(它应该删除我2016年的8个文件)当我使用原始代码时,它会删除文件。我可能读过关于逃离 目标是