代码之家  ›  专栏  ›  技术社区  ›  26071986

在WIX项目中包括修改后的文件使用对话框

  •  0
  • 26071986  · 技术社区  · 14 年前

    我有一个修改过的文件使用对话框。将它包含在项目中并在用户界面中更改引用并没有帮助-我得到了“ICE20:标准对话框:生成安装项目时在对话框表中找不到文件使用”错误。

    浏览网络,我发现了一个建议——支持ICE20的ICE验证。好吧,用这样的设置构建项目可以很好地工作,而且MSI也可以很好地工作,但是我不确定这是否是解决问题的好方法。

    另一个建议是修改文件使用并从引用中删除wixuiextension,但据我所知,最终我将把所有需要的对话框文件复制到我的项目中。我想避免这个。

    那么,如何才能正确地将我的自定义文件包括在WIX项目中呢?

    4 回复  |  直到 6 年前
        1
  •  0
  •   Community CDub    8 年前

    请参阅以下相关问题和答案: WiX replace dialog

    用户Yan Sklyarenko于2011年3月25日回答:

    有几篇文章可以帮助您:

    WiX Tutorial

    Neil Sleightholm's article

    你应该在那里找到你案件需要的所有信息。

    用户Bob Arnson于2011年3月25日回答:

    请参见主题中的“更改内置对话框集的UI序列” wix.chm中的“自定义内置wixui对话框集”。

        2
  •  5
  •   Hahn    11 年前

    可以按以下方式使用自定义文件使用对话框:

    <Fragment>
    <UI>
      <Dialog Id="FilesInUse" Width="370" Height="270" Title="Your product name">
        <Control Id="Retry" Type="PushButton" X="304" Y ="243" Width="56" Height="17" Text="Retry" Default="yes" Cancel="yes">
          <Publish Event="EndDialog" Value="Retry">1</Publish>
        </Control>
        <Control Id="Ignore" Type="PushButton" X="235" Y ="243" Width="56" Height="17" Text="Ignore">
          <Publish Event="EndDialog" Value="Ignore">1</Publish>
        </Control>
        <Control Id="Exit" Type="PushButton" X="235" Y ="243" Width="56" Height="17" Text="Exit">
          <Publish Event="EndDialog" Value="Exit">1</Publish>
        </Control>
        <Control Id ="InUseFiles" Type="ListBox" Width="300" Height="150" X="30" Y ="60" Property="FileInUseProcess" Sorted="yes" TabSkip="yes" />
      </Dialog>
    </UI>
    </Fragment>
    

    您只需将此对话框引用到带有标记的自定义安装对话框中

    <DialogRef Id="FilesInUse" />
    

    所有提到的标签都是 ICE20 Dialog Requierements

    希望这有帮助。祝您有个美好的一天。

        3
  •  2
  •   Dejan Maksimovic    13 年前

    好吧,我只是花了些时间想办法解决这个问题。

    虽然在建议的线程中有一些很好的引用,但我认为 FilesInUse 对话框是一个更具体的定制,所以我决定写一个更具体的问题解决方案。

    看,问题是 MSI 使用 文件使用 自动对话,因此如果您试图以某种方式更改它,您会得到错误,例如 文件使用 对话框表中不存在或重复 文件使用 如果要从其他文件引用自定义对话框,则返回表中的对话框。

    我发现有效的解决方案是不使用 DialogRef 到Wix's 文件使用 对话框,但是在主UI文件中创建自定义对话框 对话框参考 文件使用 )并命名它 文件使用 .

    希望这能帮助其他有同样问题的人。

        4
  •  0
  •   Kevin Mackey    6 年前

    还有一个问题是,在“程序和功能”中单击“卸载”时,将不会显示“自定义文件使用”对话框,因为卸载是使用uilevel 3运行的,因此只会显示内置文件使用。

    要在product.wxs中解决这一问题,请执行以下操作:

    <Property Id="ARPNOREMOVE" Value="1" />
    

    然后,当用户按下程序和功能中的“更改”(或“修改”)按钮时,“维护”对话框将有一个可用于卸载的“删除”按钮,该按钮将显示自定义对话框。像Visual Studio这样的产品只有一个更改/修改按钮。

    还有一件事是,如果卸载密钥没有ModifyPath设置,应用程序和功能(Windows 10)将禁用Modify按钮。应该设置为

    MsiExec.exe /I{<yourproductcode>}
    

    你的引导程序需要这样做。不确定MSI是否可以设置它。