gpt4 book ai didi

visual-studio-2010 - 我认为 WiX 库项目不适合共享组件定义(并且没有办法对 Guid 进行参数化)是对的吗?

转载 作者:行者123 更新时间:2023-12-04 18:23:13 24 4
gpt4 key购买 nike

WiX 组件通常应该有一个 指导 属性,所以如果我想移动组件的 定义 例如将 iis:WebAppPool 和 iis:WebVirtualDir 的组件(或另一个示例 - 包含具有权限的日志文件夹的组件)放入 WiX 库项目 我将无法使用不同的 guid 重用这些定义......对我来说这是一个问题,我想共享定义以定义不同的组件(具有不同的 guid)!

而且没有办法做点什么。

我试图通过像这样的属性来设置 guid

<Component Name="cmpKuku" Guid="[cmpGUID]" />

但这不起作用 => 组件的 GUID 不接受参数。可能还有其他方法可以参数化组件的 guid 吗?当然,在 Wix 库项目的情况下,通过预处理器变量进行参数化也不起作用。

Guid="*"是可计算的,但据我了解,它仅取决于组件的内容,而不取决于 parent 、产品、功能?如果在不同的功能/产品中引用,wix 为 * 计算不同的 guid,这对我有好处。

x) 我们是否有其他方式来共享 iis:WebVirtualPage 和 iis:WebAppPool 定义,而无需框架组件?

最佳答案

我读过完全相同的帖子。 Rob Mensching 这么说的原因是您不能将 wixlibs 与其他工具一起使用,因为它们是特定于 wix 的。
但是,wixlibs 和合并模块都非常相似(尽管 wixlibs 是更好/更快和更新的选择)。
因此,要回答您的问题,是的,您可以使用 wixlibs 来包含组件,因为正如我上面提到的,它们类似于合并模块。本质上,单个共享组件在其整个生命周期内必须具有相同的 GUID,并且 Windows 安装程序知道如何跟踪它们。

因此,例如,假设您有一个包含某些组件的 a.wixlib。然后创建两个单独的安装程序 b.msi 和 c.msi,引用相同的 wixlib 并安装它们。 Windows 安装程序将组件的引用计数设置为 2。
稍后您决定卸载 b.msi。 Windows 安装程序将组件的引用计数减少到 1,但尚未卸载它。原因是wixlibs,就像合并模块一样用于共享组件(http://msdn.microsoft.com/en-us/library/windows/desktop/aa369820(v=vs.85).aspx)。因此,在您卸载 c.msi 后,只会删除该组件。

还有一件事。您可以通过放置 guid="*"属性在链接期间生成 GUID。我通常反对它,但它是有效的。

编辑:为了避免误导人们对星号,使用它们并不是一个坏习惯,因为这可能是构建准备升级的产品的最简单方法,因为对于升级,无论如何您都需要生成一个新的 GUID。因此,如果构建中没有额外的复杂性,使用星号可能就可以了。

关于visual-studio-2010 - 我认为 WiX 库项目不适合共享组件定义(并且没有办法对 Guid 进行参数化)是对的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10237522/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com