使用 Inno Setup 更新文件后,应用程序看到旧版本的文件
Application sees old version of files after updating the files with Inno Setup-made update
在 Windows 10 下遇到以下情况的问题:
Inno Setup 脚本有 PrivilegesRequired=admin
标志
初始安装没有任何问题
安装了一个更新,修改了一些.exe和软件相关的本地环境文件(也安装在软件安装文件夹C:\Program Files\XYZ\
中的文本文件)。
当 运行 用户帐户下的软件出现问题:
一个。当 运行 在用户帐户下时:软件会看到初始安装时已安装的文本文件(旧文件)。但是,.EXE 文件来自更新(新文件)
b。当 运行 在 Admin 帐户下时:没问题,一切正常,软件可以看到新的 .EXE 和文本文件
c。在用户帐户和 运行 软件下创建了 C:\Program Files\XYZ\
文件夹的副本:一切正常,软件可以看到新的 .EXE 和文本文件
[Setup]
DefaultDirName={pf}\XYZ\MyProgramName
PrivilegesRequired=admin
UsePreviousAppDir=false
AppendDefaultDirName=false
[Files]
Source: E:\App1.exe; DestDir: {app}; Flags: ignoreversion; Check: InstStandalone
Source: E:\App2.exe; DestDir: {app}; Flags: ignoreversion; Check: InstStandalone
Source: {#MyInstlSourceDir}Hed\mastlca12i.hed; DestDir: {app}; Flags: ignoreversion
Source: {#MyInstlSourceDir}Hed\mastlca12m.hed; DestDir: {app}; Flags: ignoreversion
Source: {#MyInstlSourceDir}Hed\mastlca12Pi.hed; DestDir: {app}; Flags: ignoreversion
Source: {#MyInstlSourceDir}Hed\mastlca12Pm.hed; DestDir: {app}; Flags: ignoreversion
我应该在安装更新时设置一些特殊权限吗?
提前致谢。
我的大胆猜测是您的应用程序写入文件。如果应用程序没有应用程序清单,Windows 会将其视为遗留应用程序,从而启用兼容模式。在该模式下,当应用程序尝试在其安装文件夹中写入文件时,用户实际上没有写入权限,Windows 会将写入重定向到虚拟存储。下次应用程序 运行 时,它会从虚拟存储中读取文件,而不是从原始安装文件夹中读取文件。因此,即使您更新了原始文件,应用程序仍会使用它自己从虚拟商店中获得的副本。
详情见Application installed with Inno Setup writes files to unknown location instead of its installation folder
在 Windows 10 下遇到以下情况的问题:
Inno Setup 脚本有
PrivilegesRequired=admin
标志初始安装没有任何问题
安装了一个更新,修改了一些.exe和软件相关的本地环境文件(也安装在软件安装文件夹
C:\Program Files\XYZ\
中的文本文件)。当 运行 用户帐户下的软件出现问题:
一个。当 运行 在用户帐户下时:软件会看到初始安装时已安装的文本文件(旧文件)。但是,.EXE 文件来自更新(新文件)
b。当 运行 在 Admin 帐户下时:没问题,一切正常,软件可以看到新的 .EXE 和文本文件
c。在用户帐户和 运行 软件下创建了
C:\Program Files\XYZ\
文件夹的副本:一切正常,软件可以看到新的 .EXE 和文本文件
[Setup]
DefaultDirName={pf}\XYZ\MyProgramName
PrivilegesRequired=admin
UsePreviousAppDir=false
AppendDefaultDirName=false
[Files]
Source: E:\App1.exe; DestDir: {app}; Flags: ignoreversion; Check: InstStandalone
Source: E:\App2.exe; DestDir: {app}; Flags: ignoreversion; Check: InstStandalone
Source: {#MyInstlSourceDir}Hed\mastlca12i.hed; DestDir: {app}; Flags: ignoreversion
Source: {#MyInstlSourceDir}Hed\mastlca12m.hed; DestDir: {app}; Flags: ignoreversion
Source: {#MyInstlSourceDir}Hed\mastlca12Pi.hed; DestDir: {app}; Flags: ignoreversion
Source: {#MyInstlSourceDir}Hed\mastlca12Pm.hed; DestDir: {app}; Flags: ignoreversion
我应该在安装更新时设置一些特殊权限吗?
提前致谢。
我的大胆猜测是您的应用程序写入文件。如果应用程序没有应用程序清单,Windows 会将其视为遗留应用程序,从而启用兼容模式。在该模式下,当应用程序尝试在其安装文件夹中写入文件时,用户实际上没有写入权限,Windows 会将写入重定向到虚拟存储。下次应用程序 运行 时,它会从虚拟存储中读取文件,而不是从原始安装文件夹中读取文件。因此,即使您更新了原始文件,应用程序仍会使用它自己从虚拟商店中获得的副本。
详情见Application installed with Inno Setup writes files to unknown location instead of its installation folder