gpt4 book ai didi

inno-setup - Inno Setup是否应在Update上删除旧文件?

转载 作者:行者123 更新时间:2023-12-04 03:11:37 26 4
gpt4 key购买 nike

我正在使用Inno Setup安装和更新我的python应用程序。

更新时,安装程​​序不会从以前的安装中删除py文件,这会导致两个问题:

  • 我正在使用插件:如果删除新版本的插件,执行更新的用户仍然可以使用。
  • 卸载更新的安装时,不会删除旧安装中的文件。 (无法复制...)

  • 如何在升级之前强制Inno Setup卸载我的应用程序?

    这是我的脚本:
    [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

    最佳答案

    虽然可以在升级之前运行卸载,但不建议这样做。

    相反,您应该使用[InstallDelete]条目来删除现在多余的特定文件。您应该知道这些文件。

    [InstallDelete]
    Type: files; Name: {app}\foo.bar
    Type: files; Name: {app}\baz\quux.txt

    尽管可以使用通配符,但不建议这样做(尤其是不忽略文件扩展名的通配符),因为它可能会无意间删除用户文件,尤其是在 {app}出乎意料的情况下(也许它们直接安装在Windows文件夹中)。

    至于第二个断言,即“当卸载更新的安装时,不会删除旧安装中的文件。”,这完全是不正确的。只要您将 AppId和destination文件夹保持不变,那么即使更新后,卸载也会卸载所有以前安装的文件。您应该使用以下设置来帮助确保这一点:
    [Setup]
    DisableDirPage=auto

    另外,如果您尚未发布此应用程序,则应考虑将其 DefaultDirName更改为 {userpf}\YourAppName;这是安装每个用户应用程序的更好位置。 (如果您已经发布了该应用程序,则只要不更改 AppId,就可以安全地更改此值,但必须记住,较旧的安装将保留在较旧的路径上。)

    关于inno-setup - Inno Setup是否应在Update上删除旧文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23287193/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com