标签: wix

如何将整个目录或项目输出添加到WiX包

我们决定从VS集成设置切换到WiX.

但是,我们目前所做的是使用项目输出文件作为安装项目的输入.这使我们可以轻松地将应用程序文件添加到目录(对于图像,示例和其他资源......),并在构建时自动将这些文件添加到设置中.

我在WiX中找不到任何类似的功能.WiX似乎每个目录和文件都需要一个Directory条目和一个File条目.这将要求我们每次添加一个文件时都要更改WiX源,这在我看来是令人望而却步的,因为我们有很多这样的文件.

有什么综合方法可以用WiX做到这一点,还是我必须编写自己的任务,在调用蜡烛之前创建一个WiX源?

build-automation installation wix paraffin

52
推荐指数
2
解决办法
3万
查看次数

如何包含Heat创建的Wix Fragments

我有以下片段:

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
        <ComponentGroup Id="Doc">
            <ComponentRef Id="cmpCDCC386748AE7BEFE7C2F4E764390254" />
            <ComponentRef Id="cmp6EC513AE37CCAE66CEA96577E2384AFA" />
            <ComponentRef Id="cmp0C9D9450CB94FF74C6E29C1C3F6D16D5" />
            <ComponentRef Id="cmp314DEE3E909157F47FDF963DCC04D2AC" />
            <ComponentRef Id="cmpBC5FB761D7B0DA99F96ECA9A91DD4217" />
            <ComponentRef Id="cmp6B9E4B7B6F710D7077171BCE0B96A90A" />
            <ComponentRef Id="cmp5959CF1572C71417D536C491A996C6DE" />
            <ComponentRef Id="cmpCC960E9F3DDDE1600206003C43FFE663" />
        </ComponentGroup>
    </Fragment>
    <Fragment>
        <DirectoryRef Id="AzureApplicationSDK">
            <Directory Id="dir67745C9C3FA1B31D9AF8883D12D8FBD8" Name="Doc">
                <Component Id="cmpCDCC386748AE7BEFE7C2F4E764390254" Guid="{A46C5689-42D1-41CA-AD71-B2A416FA9571}">
                    <File Id="fil3B7DFCD3444314759F8617411F7EE08C" KeyPath="yes" Source="SourceDir\Azure Applications SDK v1 Cascade Tables Getting Started Guide.docx" />
                </Component>
                <Component Id="cmp6EC513AE37CCAE66CEA96577E2384AFA" Guid="{697C1B04-5279-4B31-9600-F3BCA4C1AD06}">
                    <File Id="filFDDD2C48EF5C14BA924C4272E4D9D490" KeyPath="yes" Source="SourceDir\Azurite Identity.docx" />
                </Component>
                <Component Id="cmp0C9D9450CB94FF74C6E29C1C3F6D16D5" Guid="{1C61C6C5-60F0-41A5-B229-093419E5F767}">
                    <File Id="fil4C736D0525C45780C242DA3BCA6823BA" KeyPath="yes" Source="SourceDir\Mercurius messaging how-to.docx" />
                </Component>
                <Component …
Run Code Online (Sandbox Code Playgroud)

wix

51
推荐指数
1
解决办法
2万
查看次数

目录NN位于用户配置文件中,但未在RemoveFile表中列出

当我尝试创建安装程序时,我收到以下错误:

该目录ProgramMenuDir位于用户配置文件中,但未在RemoveFile表中列出.

我该如何解决这个问题?以下是我使用的目录结构:

   <Directory Id="ProgramMenuFolder" Name="Programs">
        <Directory Id="ProgramMenuDir" Name="E">
              <Directory Id="Monarch" Name="Monarch">
                  <Component Id="Monarch" Guid="*">                       
                        <RemoveFolder Id='Monarch' On='uninstall' />
                <RemoveFolder Id='ProgramMenuDir' On='uninstall' />

                    <RegistryValue Root='HKCU' Key='Software\[Manufacturer]\[ProductName]' 
                                   Type='string' Value='' KeyPath='yes' />
                  </Component>
              </Directory>
        </Directory>
    </Directory>
Run Code Online (Sandbox Code Playgroud)

wix

48
推荐指数
1
解决办法
2万
查看次数

安装人员:WIX或Inno设置?

我正在比较这两个工具.我的印象是:

  • Inno Setup不会产生MSI,但可以完成WIX所能做的一切
  • WIX确实产生了MSI,但学习曲线陡峭

你同意这种特征吗?还有什么其他差异?WIX#如何改变这个故事?由于Inno Setup不使用Windows安装程序,卸载有困难吗?根据命令,Inno Setup可以将安装降级到早期版本 - 还是只能安装/升级应用程序?

windows installer inno-setup wix

46
推荐指数
4
解决办法
2万
查看次数

自定义WiX Burn bootstrapper用户界面?

我正在创建一个主要使用WiX 3.6的安装包,因此我可以利用Burn自举功能.到目前为止,我有几个捆绑在一起的MSI软件包,它们将与内置的bootstrapper应用程序一起安装(WixStandardBootstrapperApplication.RtfLicense).

我已经读过Burn允许通过指定自定义来替换默认的bootstrapper应用程序UX.dll,但是我还没有找到描述自定义ux.dll构造方式的任何资源(也就是说,它如何与Burn引擎集成,什么我使用的技术,应该实现哪些接口等等.

我的目标是创建一个品牌引导程序,它可以从用户收集任意信息,并将该信息传递到各种捆绑的MSI文件,EXE文件等.

所以我真的有两个问题:

  1. 默认的bootstrapper应用程序在多大程度上可以自定义?
  2. 是否有可用的资源描述如何构建自定义UX.dll

wix burn wix3.6

45
推荐指数
4
解决办法
3万
查看次数

WiX未定义的预处理器变量

我开始使用WiX进行自动构建以创建我的c#项目的msi,并且遇到错误"Undefined preprocessor variable'$(var.MyProject.TargetDir)'"

我使用的是最新的WiX v3.0.5419.在我的wxs文件中,我试图使用此网页上列出的预处理器变量(http://blogs.msdn.com/jrock/archive/2008/01/29/complete-list-of-candle-preprocessor- variables.aspx)

<Component Id="MyId" Guid="MyGuid">
   <File Id="MyId" Name="MyName" KeyPath="yes" 
      Source="$(var.MyProject.TargetDir)\MyName.dll" />
</Component>
Run Code Online (Sandbox Code Playgroud)

我已将MyProject的引用添加到.wixproj中,如果我在记事本中打开它,我可以看到引用.

<ItemGroup>
  <ProjectReference Include="..\MyProject.csproj">
    <Name>MyProject</Name>
    <Project>{guid}</Project>
    <Private>True</Private>
  </ProjectReference>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

这是我用来创建msi的nant构建脚本.也许是因为.wixproj知道构建中没有使用的项目引用?

<exec basedir="${tools.wix}" managed="true" program="candle.exe">
  <arg line='-out "${tools.wix.objfile}"' />
  <arg value="../MySetup.wxs" />
</exec>
Run Code Online (Sandbox Code Playgroud)

请问有人能开导我吗?

build-automation preprocessor wix wix3 votive

44
推荐指数
1
解决办法
5万
查看次数

为什么我的WiX安装程序需要一个空的CreateFolder来有条件地更新Xml文件?

TL; DR:为什么我需要在这个条件组件中使用 <CreateFolder/>元素才能使其工作?

我正在为一个内部应用程序组装一个简单的基于WiX的安装程序.此安装程序需要部署标准配置文件(普通.NET .config文件),然后使用msiexec在命令行上传递的属性对其进行自定义.

其中一个自定义是仅在已定义RUNTIME属性时才创建特定的应用程序设置.这是WiX组件:

  <Component Id="C.Rbnz.Fsis.CollectionPeriodService.exe.config.runtime"
             Guid="*">
    <Condition>
      <![CDATA[RUNTIME]]>
    </Condition>

    <CreateFolder/>

    <util:XmlFile Id="X.Runtime.1"
                  Action="createElement"
                  ElementPath="/configuration/appSettings"
                  File="[#F.Rbnz.Fsis.CollectionPeriodService.exe.config]"
                  Name="add"
                  Sequence="2"/>

    <util:XmlFile Id="X.Runtime.2"
                  File="[#F.Rbnz.Fsis.CollectionPeriodService.exe.config]"
                  ElementPath="/configuration/appSettings/add[\[]not(@key)[\]]"
                  Action="setValue"
                  Name="key"
                  Value="RunTime"
                  Sequence="3"/>

    <util:XmlFile Id="X.Runtime.3"
                  File="[#F.Rbnz.Fsis.CollectionPeriodService.exe.config]"
                  ElementPath="/configuration/appSettings/add[\[]@key='RunTime'[\]]"
                  Action="setValue"
                  Name="value"
                  Value="[RUNTIME]"
                  Sequence="4"/>

  </Component>
Run Code Online (Sandbox Code Playgroud)

这正如我想要的那样 - 如果在命令行上指定了RUNTIME,则会msiexec创建新元素; 如果没有,没有任何反应.

为什么我必须<CreateFolder/>在此组件中使用空?

当我试图让这个工作时,我找到了" Wix条件声明 ",它显示了一个工作组件,但没有解释为什么<CreateFolder/>是必要的.

删除<CreateFolder/>给我这个错误:

ICE18:组件的KeyPath:'C.Rbnz.Fsis.CollectionPeriodService.exe.config.runtime'是目录:'INSTALLDIR'.目录/组件对必须在CreateFolders表中列出.

一旦你知道这意味着什么,我相信,这是非常有用的.

windows-installer wix wix-extension msiexec

44
推荐指数
2
解决办法
2万
查看次数

wix指定许可证什么也没显示

我正在尝试为我的wix安装项目指定许可证.

我在wordpad/notepad/vs中创建了一个带有几个虚拟线的rtf,我尝试了几种不同的方式,因为我读到了一个问题,但是我不认为这应该适用于此,无论如何我也打开了它在记事本++中并验证其中没有隐藏的时髦字符.

我正在指定文件

<WixVariable Id="WixUILicenseRtf" Value="$(var.ProjectDir)\Resources\test.rtf" />
Run Code Online (Sandbox Code Playgroud)

该文件存在于project\Resources目录下.

当我运行安装程序时,许可证区域中显示的所有内容都是一个空白文本框,没有滚动条等.

还有什么我应该做的吗?

installer rtf wix wix3.5

42
推荐指数
2
解决办法
1万
查看次数

用于WiX的Dialog设计的GUI

WiX非常棒,因为没有GUI,您只需编写您想要的安装程序即可.没有摆弄GUI向导!

但是,绘制GUI实际上是我更喜欢使用GUI的一件事.

那么,是否有出口WiX数据的对话绘图程序?
(我想其他方面也许我可以将Visual Studio的表单编辑器转换为WiX-XML.)

/ L

wix

40
推荐指数
4
解决办法
5万
查看次数

如何将UI添加到WiX 3安装程序?

我试过了<UIRef Id="WixUI_Minimal" />,但是我得到了"Unisolved to WixUI:WixUIMinimal".我究竟做错了什么?

user-interface wix wix-extension wix3.6

38
推荐指数
2
解决办法
2万
查看次数