【问题标题】:WiX - Set Installdirectory dynamically over CustomAction [C#]WiX - 通过 CustomAction [C#] 动态设置安装目录
【发布时间】:2013-04-19 11:36:03
【问题描述】:

我即将创建一个安装程序,现在我必须根据操作系统设置安装目录。我的目录树:

<Property Id="TARGETDIR" Value="C:\" />
<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="TARGETDIRECTORY" Name="MyApplication">
    <Directory Id="CONFIG" Name="Config">
      <Directory Id="FOLDER2" Name="Folder2" />
    </Directory>
  </Directory>
</Directory>

如果我在 c#-custom-action 中设置 TARGETDIRECTORY,则目标目录设置正确,但 CONFIG/FOLDER2 只有旧链接。我怎样才能强迫他们调整到新的路径?因为他们是 TARGETDIRECTORY 的孩子,我想他们应该自动执行此操作。我不想在 CustomAction 中自己设置,因为还有更多的文件夹来了

来自日志文件:

Property(S): FOLDER2 = C:\MyApplication\Config\Folder2\
Property(S): CONFIG = C:\MyApplication\Config\
Property(S): TARGETDIRECTORY = C:\Documents and Settings\MyApplication\
Property(S): TARGETDIR = C:\

【问题讨论】:

    标签: c# wix windows-installer wix3.5 wix3.6


    【解决方案1】:

    可以用 SetProperty 解决问题:

    <Property Id="TARGETDIRECTORY" Value="C:\Win7\" />
    <SetProperty Id="TARGETDIRECTORY" Before="CostFinalize" Value="C:\WinXP\">
      <![CDATA[VersionNT = 501]]>
    </SetProperty>
    

    【讨论】:

    【解决方案2】:

    如果您在 CostFinalize 之前更改安装路径,可能会发生这种情况。如果是这种情况,您需要use a different custom action to set the path,这允许 Windows Installer 收到有关更改的通知并更新子目录。

    【讨论】:

    • 现在尝试了多种情况,但没有任何效果。只有 TARGETDIRECTORY 被改变,但从未改变子文件夹。现在尝试在 Welcomedlg->Next 上使用 SetTargetPath,现在出现错误 2872,我猜是因为文件夹不存在,现在该怎么办?我必须根据操作系统(Win7/WinXP)设置路径。也尝试有条件地设置属性,但没有成功。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多