【问题标题】:Wix: Change arguments depending on OSWix:根据操作系统更改参数
【发布时间】:2023-03-27 05:45:02
【问题描述】:

听从 wcoenen 的建议,我决定尝试使用免注册 COM。当然,这在 XP 之前的机器上工作得很好。我认为一种简洁的想法是添加到一些文件中,SelfRegCost='[var]'。这很可能不是The Right Thing™,但我仍然想知道该怎么做,如果只是为了满足我自己的好奇心。如果 var 是空字符串,我假设 SelfRegCost='[var]' 不会导致自注册,这可能是错误的。但这可能是错误的。

这类似于"WIX: How can the registry key be changed based on the OS on which the installer is running ?",但就我而言,我意识到我可以(并且可能应该)使用不同的组件并且不在乎。

我很可能最终会使用不同的组件,但请满足我的好奇心。

【问题讨论】:

    标签: wix windows-installer


    【解决方案1】:

    我不必使用 WiX 进行 COM 安装(谢天谢地)。但从文档和this thread 看来,SelfRegCost 似乎只是为了让 MSI 知道它需要多少空间来验证可用。我猜空白要么是错误,要么被视为零并仍然安装 DLL。

    我肯定会选择多个组件。

    【讨论】:

    • 当然我应该使用多个组件。但我很好奇如何只用一个组件来做到这一点,不管这样做有多糟糕。
    • 副手,我猜你不能。组件是有条件安装的单元,所以我不相信你可以安装单个组件,但不能安装它的所有部分,我也不相信你会想要。
    • 也可能相关,来自 Rob Mensching 关于 SelfReg 的评论:stackoverflow.com/questions/364187/…
    【解决方案2】:

    您需要使用条件组件以不同的方式安装到不同的操作系统。

    您的建议是让部分安装失败,但希望是静默。

    使用自定义操作,您可以做到这一点!

    <CustomAction Id="YourId" Directory="INSTALLDIR" ExeCommand='regsvr32.exe /s "[INSTALLDIR]YourCOM.dll"' Return="ignore" />
    

    出于 Rob Mensching 提供的一系列原因,当然不建议这样做。

    【讨论】:

    • 我不喜欢这个答案,但是使用自定义操作进行注册,同时仍将所有文件安装在一个组件中更接近意图(我的想法是一种不好的方法)而不是别的什么。
    • 我也不喜欢它(我同意 Rob McCready 使用多个组件,并在 XP 之前为您的 COM 使用注册表项),但这是我能做到的最接近您的意图想想。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    • 2014-09-10
    相关资源
    最近更新 更多