WiX wxs脚本,可选择安装选择当前用户或所有用户安装

时间:2009-05-06 14:21:39

标签: select wix

我需要一个可以构建的完整WiX脚本。它有

  1. 欢迎
  2. EULA
  3. 安装文件夹
  4. 选择当前用户或所有用户安装
  5. 安装
  6. 完成
  7. 我只需要一个wxs文件,因为它适用于简单的应用程序。另外,我需要一个选项来为当前用户或所有用户安装它。

2 个答案:

答案 0 :(得分:7)

您是否检查了Wix3中内置的WixUI_Advanced用户界面?

以下是它的对话框:

  • AdvancedWelcomeEulaDlg
  • BrowseDlg
  • DiskCostDlg
  • FeaturesDlg
  • InstallDirDlg
  • InstallScopeDlg (用于选择用户或每台计算机)
  • InvalidDirDlg

答案 1 :(得分:3)

我还使用了WixUI_InstallDir,但是根据我的需要复制了它并通过在安装程序末尾添加一些“下一步做什么”文本来调整它。我使用this detailed walkthrough来获取Wix GUI库存,并根据自己的目的更改了几个屏幕。这确实需要您获取Wix源代码,但仅仅是为了获取Wix开发人员包含的实际Product.wxs文件的未编译版本来驱动WixUI_InstallDir安装程序。

所以基本上我在解决方案中有这样的东西(使用VS的Votive加载项):

  • MyWeb项目
  • Wix项目
    • MyWeb.wxs - 我的产品显然是
    • Product.wxs - 来自Wix源的Wix文件,用于定义WixUI_InstallDir的结构,流和内容
    • My_InstallDir.wxs - 这就是有趣的地方。基本上复制了源代码Wix文件,更改它以满足我的需求,然后确保在Product.wxs中我引用了 my 屏幕,而不是原始屏幕。

Product.wxs

    <UI>
        <UIRef Id="My_InstallDir"/>
    </UI>

    <!-- Add the customized EULA -->
    <WixVariable Id="WixUILicenseRtf" Value="$(var.SolutionDir)\doc\license.rtf" />
    <Property Id="WIXUI_INSTALLDIR" Value="INSTALLLOCATION" />
    <UIRef Id="My_InstallDir" />
    <!-- Add the customized banner logo -->
    <WixVariable Id="WixUIBannerBmp" Value="$(var.SolutionDir)\doc\InstallerBanner.bmp" />
    <WixVariable Id="WixUIDialogBmp" Value="$(var.SolutionDir)\doc\InstallerSidebar.bmp" />
除了引用我的退出对话框的行外,

My_InstallDir.wxs完全没有变化,这是我的“接下来要做什么”的注意事项:

<Publish Dialog="MyExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999">1</Publish>

那么真正的改变是在我正在显示文本的My_ExitDialog中:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
    <UI>
        <Dialog Id="MyExitDialog" Width="370" Height="270" Title="!(loc.ExitDialog_Title) test">
            <Control Id="Finish" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Cancel="yes" Text="!(loc.WixUIFinish)" />
            <Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Disabled="yes" Text="!(loc.WixUICancel)" />
            <Control Id="Bitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="234" TabSkip="no" Text="!(loc.ExitDialogBitmap)" />
            <Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Disabled="yes" Text="!(loc.WixUIBack)" />
            <Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" />
            <!--<Control Id="Description" Type="Text" X="135" Y="70" Width="220" Height="40" Transparent="yes" NoPrefix="yes" Text="!(loc.ExitDialogDescription)" />-->
            <Control Id="Title" Type="Text" X="135" Y="20" Width="220" Height="60" Transparent="yes" NoPrefix="yes" Text="!(loc.ExitDialogTitle)" />
            <Control Id="NextSteps" Type="ScrollableText" X="135" Y="70" Width="220" Height="140" Sunken="yes" TabSkip="no">
                <Text SourceFile="$(var.SolutionDir)\doc\GemWebAfterInstall.rtf" />
            </Control>
        </Dialog>

        <InstallUISequence>
            <Show Dialog="MyExitDialog" OnExit="success" />
        </InstallUISequence>

        <AdminUISequence>
            <Show Dialog="MyExitDialog" OnExit="success" />
        </AdminUISequence>
    </UI>
</Fragment>

我知道你正在寻找解决方案,而不是指针。但是,使用我引用的文章作为关键起点,我认为您可以在现成的WixUI位中找到所需的所有部分,或者通过替换“开箱即用”的小部分内容像我一样。祝你好运。