最近发布了我们产品的新版本(软件包)。为了扩展功能,我们之后开发了一个插件。现在我们想要将这些文件(两个新文件和现有文件的更新版本)作为带有MSI补丁(msp)的修补程序(或更新)进行部署。我从MSDN网站下载了一个空白的PCP文件并对其进行了一些更改。更改涉及以下表格:
ImageFamilies
PatchMetadata
PatchSequence
属性
TargetImages
UpgradedImages
所有其他表格保持空白。
然后,我设法使用此PCP文件创建一个msp文件,该文件基于软件包管理映像的两个版本,这两个版本都是从Visual Studio安装项目(VS 2010)构建的。这两个msi包之间的区别在于我替换了一个文件并添加了两个新文件,但没有别的。我没有更改产品代码(GUID),升级代码(GUID)和版本号。
然后我试图在发布的版本之上安装这个msp文件。
出现的第一个屏幕是要求修理或删除产品。这不是我们想要的。我们希望安装程序就像一个全新安装,包括显示许可协议。如何为MSI补丁定义UI?
在安装补丁的过程中,我收到如下错误信息,然后安装失败:
Error 1001. Exception occurred while initializing the installation: System.IO.FileNotFoundException: Could not load file or assembly 'file:///C:\WINDOWS\system32\Files\BPS\TestApp' or one of its dependencies. This system cannot find the file specified.
BPS是我们在[ProgramFilesFolder]中安装产品的文件夹。我想知道为什么MSI试图在“C:\ Windows \ system32”中搜索[ProgramFilesFolder]中安装的文件。此外,此修补程序中更改的文件位于其他位置([CommonAppDataFolder])而不是在此“BPS”文件夹中。
任何人都可以帮我解决这些问题吗?如果需要更多信息来确定问题,请告诉我。任何想法,建议和建议都会非常感激。
丹
答案 0 :(得分:0)
出现的第一个屏幕是询问 修理或删除产品。这个 不是我们想要的。
在升级包中增加产品版本。这样您就可以使用minor upgrade而非小更新。
您也可以尝试使用MSIEXEC命令行应用补丁:
http://msdn.microsoft.com/en-us/library/aa367574(VS.85).aspx
http://msdn.microsoft.com/en-us/library/aa367575(VS.85).aspx
在安装补丁的过程中, 我收到如下错误信息,然后 安装失败
安装程序中是否有使用该文件的内容?也许是自定义动作?尝试查看日志以查看哪些操作尝试访问该文件。