相关疑难解决方法(0)

Inno Setup:如何自动卸载以前安装的版本?

我正在使用Inno Setup来创建安装程序.

我希望安装程序自动卸载以前安装的版本,而不是覆盖它.我怎样才能做到这一点?

installer inno-setup

82
推荐指数
4
解决办法
7万
查看次数

卸载 32 位应用程序并安装 64 位应用程序

是否有可能告诉 Innosetup 卸载应用程序的 32 位版本(通常驻留在 中Program Files (x86))以安装应用程序的 64 位版本(通常在 中Program Files)。如果没有卸载32位版本,那么它们的bot会在启动时启动,导致问题。

不知道有没有这方面的手续。鉴于 64 位应用程序基本上将是一个不同的应用程序,尝试卸载 32 位应用程序似乎试图卸载一个不相关的应用程序。

动机是越来越少的供应商提供对 32 位库的支持。例如,msvc2017 没有用于 Qt 的 32 位库。所以我越早迁移到 64 位越好。

注意:如果这在 Innosetup 中无法实现,欢迎使用任何其他替代方法。

inno-setup

5
推荐指数
1
解决办法
875
查看次数

Inno Setup:删除以前版本安装的文件

我正在使用Inno Setup为 Windows 打包 Java 应用程序;应用程序树是这样的:

|   MyApp.jar
\---lib
    |   dependency-A-1.2.3.jar
    |   dependency-B-2.3.4.jar
    |   dependency-Z-x.y.z.jar
Run Code Online (Sandbox Code Playgroud)

我使用Ant预先准备整个树(所有文件和文件夹),包括lib目录(使用*.jar通配符复制依赖项),然后我只需调用ISCC

[Files]
Source: "PreparedFolder\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs
Run Code Online (Sandbox Code Playgroud)

现在,每次用户升级应用程序时我都需要清理lib目录,因为我想删除任何过时的依赖项。我可以将以下部分添加到我的.iss文件中:

[InstallDelete]
{app}\lib\*.jar
Run Code Online (Sandbox Code Playgroud)

但我觉得不安全,因为如果用户决定将应用程序安装在包含非空文件夹的现有文件夹中 lib文件夹(罕见但并非不可能),则升级时可能会删除某些用户文件。

是否有一些最佳实践可以避免这种麻烦?其他安装人员是否会解决这些令人头疼的问题?谢谢。

java installation inno-setup jar upgrade

3
推荐指数
1
解决办法
5366
查看次数

如何在 Inno Setup 中覆盖安装但不覆盖更改?

我知道如何使用这种方法覆盖文件

[Files]
Source: "Project\*"; DestDir: "{app}"; \
    Flags: ignoreversion recursesubdirs onlyifdoesntexist; Permissions: everyone-full
Run Code Online (Sandbox Code Playgroud)

但是,当我使用“安装或更改程序”部分中的“更改”选项更改程序时,我不想覆盖这些文件。

我为我的安装程序创建更改选项,如下所示:

[setup]
AppModifyPath="{srcexe}" /modify=1
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

installation inno-setup

2
推荐指数
1
解决办法
4631
查看次数

标签 统计

inno-setup ×4

installation ×2

installer ×1

jar ×1

java ×1

upgrade ×1