Visual Studio 安装程序 msi 未更新 UI
Posted
技术标签:
【中文标题】Visual Studio 安装程序 msi 未更新 UI【英文标题】:Visual studio installer msi is not updating UI 【发布时间】:2014-02-22 05:10:21 【问题描述】:奇怪的问题,但它困扰着我。
当我尝试部署 msi 包时并没有完全更新以前的版本。但版本已在控制面板中更新,但 UI 未更新(UI 中所做的更改未反映)。
DetectPreviousVersion = True;
RemovePreviousVersion =True;
Installallausers=true;
产品版本号比之前安装的版本号大,每高一个版本就更改产品代码。
以前安装的版本和新版本的升级代码是一样的。
如果我手动删除以前的版本,然后安装最新版本,那么我可以在 UI 中看到更改。
【问题讨论】:
【参考方案1】:对您的 DLL 和 EXE 进行适当的版本控制可以防止这种情况发生。
File Versioning Rules
任何安装程序的核心都是文件的实际安装。 确定是否安装文件是一个复杂的过程。在 ***别,此确定取决于组件是否 文件所属的标记为安装。一旦确定 一个文件应该被复制,如果另一个文件过程很复杂 目标文件夹中存在同名的。在这样的情况下, 做出决定需要一套规则,涉及 以下属性:
•版本
•日期
•语言
【讨论】:
由于本次升级是对现有形式的微小改动,显然文件会存在于目标位置,因此确定规则将检查版本、日期和语言。这里版本适用于安装程序,而不适用于项目中使用的每个 dll 或表单。在将属性 REINSTALLMODE 添加到 amus 之前,即使没有替换表单,版本副升级也会增加值。你是说也应该有文件版本控制吗?猜猜当安装程序给出版本时,它适用于包内的所有文件!!与版本内的 assemblyinfo.cs 有什么关系? 当我更改 assemblyinfo.cs -[assembly: AssemblyVersion("1.1.7.0")] [assembly: AssemblyFileVersion("1.1.7.0")]... 然后安装程序版本为 1.1。 7(升级)..安装删除了以前的版本,并且没有属性“REINSTALLMODE”的情况下反映了更改...在升级中还需要在安装程序版本之后对程序集版本和文件版本进行版本控制以避免此问题。 对组件密钥文件进行评估。在托管世界中,AssemblyFileVersion 属性成为 Win32 文件版本资源记录。在构建期间,版本被获取并放置在文件表中。在安装过程中,文件成本过程使用文件表中的信息和磁盘上找到的文件进行评估。不需要为此目的更新 AssemblyVersion。只有在将文件放入 GAC 时,AssemblyVersion 才变得重要。【参考方案2】:可能重复的问题:
但对于观众来说,答案是使用 orca 向 msi 包添加一个额外的属性。
REINSTALLMODE=amus
amus-更新升级时的所有文件 omus- 更新仅在安装程序识别时更改的文件
参考原答案here
【讨论】:
虽然上面对我有用,但实际的解决方案应该是相应地对 assemblyinfo.cs 程序集版本和 AssemblyFileVersion 进行版本控制。 仅 AssemblyFileVersion。【参考方案3】:旧版本的 Visual Studio 设置用于有效地卸载所有旧文件,然后安装产品及其文件。 VS 2008 及更高版本要求您更新要在升级中覆盖的文件的文件版本。
【讨论】:
以上是关于Visual Studio 安装程序 msi 未更新 UI的主要内容,如果未能解决你的问题,请参考以下文章
WiX 安装程序 msi 未安装使用 Visual Studio 2017 创建的 Winform 应用程序
从 MSI 安装程序的命令行覆盖“文本框”对话框字段(Visual Studio 2010 Web 设置)
使用 Visual Studio 2012 创建 MSI 或设置项目
在Visual Studio 2017中为WPF应用程序创建MSI安装程序后,EXE不执行任何操作
安装Visual Studio 2015(VS2015)时提示安装包JavaScript_ProjectSystem.msi丢失或损坏的解决方法