最近,在64位Windows 7操作系统上安装32位应用程序(使用installshield创建)时,我开始观察到一个奇怪的问题。
以下内容可在日志中找到:
MSI(s)(68:64)[00:30:39:917]:执行操作: ActionStart(Name = ProcessComponents,Description =正在更新组件 注册,)MSI(s)(68:64)[00:30:39:917]:执行操作: ProgressTotal(总计= 1,Type = 1,ByteEquivalent = 24000)MSI(s)(68:64) [00:30:39:917]:执行操作: ComponentRegister(ComponentId = {0770248C-8066-4600-A88D-B83BE48A1B57},KeyPath = C:\ Program Files(x86)\ RI \ Port \ PortFTPA.exe,State = 3 ,, Disk = 1,SharedDllRefCount = 2,BinaryType = 0) MSI(s)(68:64)[00:30:39:917]: WIN64DUALFOLDERS:替换 'C:\ Program Files(x86)\ RI \ Port \ PortFTPA.exe' 文件夹已被1掩码参数(文件夹对)阻止 iSwapAttrib成员= 0)。
操作系统上已存在旧版本的EXE“ PortFTPA.exe ” C:\ Program Files(x86)\ RI \ Port 。我使用installshield创建了另一个自定义MSI,用更新版本的EXE覆盖EXE。
在“摘要信息流”中,我将其配置为32位安装程序,并将包含EXE的组件配置为安装到[ProgramFilesFolder]位置。
然而,该文件无法被替换。
请帮忙。
答案 0 :(得分:0)
有两种方法。
1.如果C:\Program Files (x86)\RI\Port\..
中已安装的文件是Windows Installer程序包,则必须卸载它并安装新文件,否则可以进行更新,但请记住,必须增加{的版本号。 {1}}。
2. PortFTPA.exe
下安装的程序是遗留的制造商设置。在这种情况下,您必须重新打包整个应用程序,并尝试通过制造商卸载例程卸载现有安装。
所以这不是一个简单的问题,我们需要更多的信息。