我应该何时更改或不更改WIX中的组件GUID? Microsoft SDK信息令人困惑.
Glytzhkof编辑:为了澄清,该问题涉及何时应该为MSI组件更改组件GUID.组件可以通过以下方面进行更改:更改目标路径,向/从同一组件添加或删除文件,添加注册表数据等...这会导致所谓的组件引用问题,即最佳实践在MSI中创建组件.
我对msi版本号感到困惑. 此处,Property表和Update表中用于ProductVersion的版本号限制为256或更少的主要和次要部分. 这里 File表中使用的版本号可以包含65536或更少的主要和次要部分.
其中一个错了吗?这两个"版本"完全无关或者是什么?
另外,我不明白在File表文件表的描述中发现了以下内容.
"版
此字段是版本化文件的版本字符串.对于非版本化文件,此字段为空.输入此字段的文件版本必须与安装包中包含的文件版本相同."
如何确定" 安装包中包含的文件版本 "?例如,Visual Studio的VS_VERSION_INFO资源中的FILEVERSION值是多少?使用NotePad或Word创建的某些文件意味着什么?
究竟什么是"非版本化"文件?在VS_VERSION_INFO资源中有一个FILEVERSION = 0.0.0.0吗?或者是其他东西?是否所有.exe文件都被视为版本?
如何避免WiX/MSI部署解决方案中的常见设计缺陷?
部署是大多数开发的关键部分 - 部署失败意味着您的最终用户永远无法评估您的产品.这很容易成为软件开发中最昂贵的错误.请给这个内容一个机会.我坚信,通过应用程序设计的微小变化可以显着提高软件质量,使部署更加合理,更可靠 - 这就是"答案"的全部 - 软件开发.
这是一个Q/A风格的问题,答案只列出了MSI文件中不要做的一些事情,以避免最常见的设计缺陷.
windows-installer installshield wix advanced-installer installshield-le
我们来讨论以下主题.目前正在部署的应用程序有很好的知道xcopy方法.这种方法很难管理依赖项,文件更新等.有一些软件包的帮助下启动应用程序部署的想法,你知道你在Linux的帮助下RPM,但适用于Windows.
所以我有疑问:在Windows经典Windows安装程序(msi)或nuget或其他东西上使用什么包系统更好?
我正在为基于WiX的安装程序进行升级功能.
作为安装的一部分,我们正在安装web.config文件,然后使用自定义操作更新文件中的连接字符串.
但是,当我们运行升级时,这会导致问题.我们希望在InstallFinalize之后安排RemoveExistingProducts,因为这在不删除和重新安装未更改的文件方面效率最高.但是,当Windows Installer尝试确定是否应该更新它时,这会留下原始的web.config文件.由于它的上次修改日期比其创建日期更新,因此Windows Installer决定不更新它(请参阅Windows Installer使用的版本控制规则).但我们需要更新它.
一个显而易见的解决方案是将RemoveExistingProducts的调度更改为InstallValidate之后 - 但这样效率很低,而且,我认为如果我们需要这样做,我认为它不会让我们有机会从现有文件迁移设置.
还有其他想法吗?
当产品A和B各自安装多个MSI并且某些MSI相同时,卸载A或B会影响另一个吗?安装位置是否重要?
此外,当安装时产品B和B升级C中的常见MSI C版本较高时会发生什么?现在卸载B将删除打破产品A的常见MSI C.如何在不使用永久标志的情况下优雅地处理此问题?
为WIX的wxs文件中的组件提供guid的正确语法是什么?
在我找到的大多数样品中
Guid="00AD2D6E-BF8A-4EA8-BE9A-57380DECD0E6"
Run Code Online (Sandbox Code Playgroud)
但是在一些样品中我发现了
Guid="{00AD2D6E-BF8A-4EA8-BE9A-57380DECD0E6}"
Run Code Online (Sandbox Code Playgroud)
我更喜欢第二个版本,因为这是由GuidGen工具直接生成的.但这是对的吗?
我有一个.NET winform应用程序,需要在安装过程中注册本机DLL.我的问题是如何在MSI安装过程中注册一个DLL(regsvr32 ABC.dll)?类似如何取消注册dll作为卸载过程的一部分?