2011-05-21 21 views
2

我正在使用WiX XML创建安装包。如何在构建我的WiX安装程序时允许用户选择配置文件?

我希望用户/安装程序能够做的事情之一是从几个配置文件(即config1.txt,config2.txt,config3.txt)中选择一个(并且只有一个)在安装完成后(即,最终文件为config.txt),将在同一位置结束。我如何在WiX中执行此操作?

手动安装使用户将所需的配置文件复制到最终位置/文件。即,如果用户想要使用config2.txt,他将config2.txt复制到config.txt。他执行程序。然后,如果他需要使用config1.txt,他会将config1.txt复制到config.txt并运行该程序。

任何想法如何在WiX中做到这一点?

在此先感谢!

-Adeena

+0

您可以安装配置文件。在安装过程中,要求用户选择配置。然后在'InstallFinalize'之前安排一个自定义动作,它将把用户选择的配置复制到config.txt文件中。 – 2011-06-02 16:49:26

回答

1

我使用CopyFile标签解决了类似的问题;

某处我有一个<Directory>含有下列成分:

<Component Id="Config_6.txt" Guid="{}"> 
    <File Id="Config_6.txt" Name="Config_6.txt" KeyPath="yes" Source="..\..\..\bin\Config_6.txt" /> 
</Component> 
<Component Id="Config.txt" Guid="{}"> 
    <File Id="Config.txt" Name="Config_8.txt" KeyPath="yes" Source="..\..\..\bin\Config.txt" /> 
</Component> 
<Component Id="Config_7.txt" Guid="{}"> 
    <File Id="Config_7.txt" Name="Config_7.txt" KeyPath="yes" Source="..\..\..\bin\Config_7.txt" /> 
</Component> 

<Component Id="R8_Config.txt" Guid="{}"> 
    <CreateFolder/> 
    <CopyFile Id="R8_Config.txt" FileId="Config.txt" DestinationName="Config.txt"/> 
</Component> 
<Component Id="R7_Config.txt" Guid="{}"> 
    <CreateFolder/> 
    <CopyFile Id="R7_Config.txt" FileId="Config_7.txt" DestinationName="Config.txt"/> 
</Component> 
<Component Id="R6_Config.txt" Guid="{}"> 
    <CreateFolder/> 
    <CopyFile Id="R6_Config.txt" FileId="Config_6.txt" DestinationName="Config.txt"/> 
</Component> 

而且在功能部分是这样的:

<Feature Id="Config" Title="Config directory" Display="expand" Level="1" ConfigurableDirectory="Config"> 
    <Feature Id="Config8" Title="Config 8" Level="1" Description="Select only one version!"> 
    <ComponentRef Id="R8_Config.txt"/> 
    </Feature> 
    <Feature Id="Config7" Title="Config 7" Level="1002" Description="Select only one version!"> 
    <ComponentRef Id="R7_Config.txt"/> 
    </Feature> 
    <Feature Id="Config6" Title="Config 6" Level="1004" Description="..."> 
    <ComponentRef Id="R6_Config.txt"/> 
    </Feature> 
</Feature> 

要显示的功能,添加包含CustomizeDlg一个UIRef,为例如:

<UIRef Id="WixUI_FeatureTree" /> 

A unfavanta这个解决方案的ge是用户可以选择多个配置文件。这可能会导致最后一名成为活跃分子。

+1

我想你可以在对话框中添加一个Combobox控件,供用户选择所需的配置。根据用户的选择,您可以设置一个属性,用于有条件地安装组件或更改这些功能的值。 – 2011-06-02 16:44:49

+0

复制这样的文件会将原始文件留在原来的位置。您也不能将Copy =“yes”添加到CopyFile元素,因为如果通过id引用文件。我知道这一点的唯一原因是因为我陷入了同样的问题,并没有解决方案! :( – 2011-12-21 18:18:10

1

这是一个网络应用程序?这些ini文件或xml文件或其他?在首次启动时(如果它是一个exe文件),我更喜欢应用程序配置由应用程序本身完成。安装是关于获取默认设置和文件,在我看来,任何自定义配置都超出了初始部署的范围。

Wix提供了在安装过程中更新xml文件的功能,下面是一个示例:http://www.tramontana.co.hu/wix/lesson6.php#6.10。如果它是XML文件,这将允许您为该文件编写特定的配置设置。

没有什么能阻止你在同一个文件夹中安装几个同样的配置文件,并允许用户在它们之间手动切换。如果切换基本文件,通常会更改哪些值?一个或多个设置?

+0

不,它不是一个网络应用程序。是的,用户可以手动更改配置文件 - 这就是现在所做的。我只是想让它更容易 - 减少用户必须采取的步骤数量。我完全理解在应用程序中这样做的意义,但目前不可能,因为我无法修改应用程序 - 我只是制作安装包。 (这是一个爱好项目,团队成员的时间有限 - 所以我必须尽我所能使最简单的安装成为可能) – adeena 2011-05-22 11:06:38

+0

多一点背景......这是一个正在提交比赛的应用程序 - 所以它是没有分发给大众。去年,有人担心安装过于复杂,所以我试图尽可能简化。它可能无法删除所有步骤 - 手动更改配置可能不得不留下。 – adeena 2011-05-22 11:09:59

+0

最后...配置文件是基于文本的文件,而不是XML文件... adeena 2011-05-22 11:16:51

相关问题