标签: wix-extension

Wix:是否有任何wix命令来创建数据库用户?

是否可以使用任何wix命令来创建数据库并将用户添加到数据库中?如果是的话,有没有关于如何做到这一点的例子?

wix wix3 wix-extension wix3.5 wix3.6

7
推荐指数
1
解决办法
2203
查看次数

在WiX中使用防火墙扩展

我正在尝试编写一个使用防火墙扩展到WiX的WiX脚本,它似乎没有找到扩展dll(我认为).

我看到的错误是这样的:

File元素包含未处理的扩展元素'fire:FirewallException'.
请确保已提供"http://schemas.microsoft.com/wix/FirewallExtension"命名空间中元素的扩展名.

我的WiX源的相关部分是这样的:

<?xml version="1.0" encoding="windows-1252"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
     xmlns:fire="http://schemas.microsoft.com/wix/FirewallExtension">
 <Component Id="Firewall" Guid="7278f07d-de6f-497f-9267-d5feb5216a5c" Directory="NotUsed">
  <File KeyPath="yes" Source="C:\Program Files\Java\jdk1.6.0_32\bin\java.exe">
   <fire:FirewallException Id="FWX1" Name="My Program" Port="80" Protocol="tcp"/>

如果我尝试使用regsrv32注册WixFirewallExtension.dll文件,我会收到此错误:

已加载模块C:\ Program Files(x86)\ Windows Installer XML v3.5\bin\WixFirewallExtension.dll,但未找到入口点DllRegisterServer.

确保C:\ Program Files(x86)\ Windows Installer XML v3.5\bin\WixFirewallExtension.dll是有效的DLL或OCX文件,然后再试一次

dll文件在我的路径中,但这可能无关紧要?我是否需要做任何其他事情才能让WiX开始使用它?

windows wix wix-extension

7
推荐指数
1
解决办法
5937
查看次数

使用Wix Bootstrapper安装.NET可再发行组件(Burn)

我是Wix/Burn的新手,我正在尝试理解一些基本原理.我有一个简单的引导程序,使用以下链安装所需的.net 4.0框架:

<Chain>
    <PackageGroupRef Id="NetFx40ClientRedist"/>
    <MsiPackage Id="MyApp" SourceFile="$(var.WixInstaller.TargetPath)" DisplayInternalUI="yes" />
</Chain>
Run Code Online (Sandbox Code Playgroud)

按照如何:使用刻录安装.NET Framework的建议.该应用程序可以在没有Web访问权限的服务器上使用,因此从本地可再发行组件安装.net非常重要.引导程序似乎运行良好,并按预期安装框架.但是,setup.exe文件的大小与应用程序大小相同(<5 MB),因此我必须假设在安装过程中仍在下载框架.

问题

  1. 那么,WixNetfxExtension包中"NetFx40ClientWeb"和"NetFx40ClientRedist"之间的区别是什么?

  2. 如何在boostrapper中包含本地可再发行组件,以便不需要下载?

编辑:

我相信我找到了答案在这里:

WiXNetFxExtension将检查名为"redist"的子目录,其中您的包用于包,然后在该路径中不存在时下载它,例如"redist\dotNetFx40_Client_setup.exe".这是标准的Burn行为.

c# install wix wix-extension

7
推荐指数
1
解决办法
4862
查看次数

WiX XmlConfig:用于在XmlConfig中嵌套XmlConfig

将元素嵌套到另一个元素中的目的和/或收益(除了增加创建/删除属性的可读性之外)是什么? 我所指的例子(我正在使用WiX 3.6):XmlConfigXmlConfig

<util:XmlConfig ...>
    <util:XmlConfig ... />
</util:XmlConfig>
Run Code Online (Sandbox Code Playgroud)

xml wix wix-extension wix3.6

6
推荐指数
1
解决办法
3240
查看次数

Wix:如何强制终止进程/任务?

从使用 Wix 创建的 MSI 运行卸载时,我需要在尝试删除任何文件之前强制终止在后台运行的进程。主要应用程序由一个托盘图标组成,它反映了监视本地 Windows 服务的 bg 进程的状态(用 C# 制作,尽管这可能与进一步的相关性不大)。

我首先尝试了以下方法:

<File Id='FooEXE' Name='Foo.exe' Source='..\Source\bin\Release\Foo.exe' Vital='yes' />     
...
<InstallExecuteSequence>
  <Custom Action="CloseTray" Before="InstallValidate" />
</InstallExecuteSequence>
...
<CustomAction Id="CloseTray" ExeCommand="-exit" FileKey="FooEXE" Execute="immediate" Return="asyncWait" />
Run Code Online (Sandbox Code Playgroud)

确认应用程序关闭对话框后,托盘图标立即关闭,但卸载完成后,Foo.Exe 任务仍然出现在taskmgr 上。另外,还给出了以下错误消息:

错误消息#1

这就是为什么,然后我尝试了这个:

<InstallExecuteSequence>
  <Custom Action="Foo.TaskKill" Before="InstallValidate" />
</InstallExecuteSequence>
...
<CustomAction Id="Foo.TaskKill" Impersonate="yes" Return="asyncWait" Directory="WinDir" ExeCommand="\System32\taskkill.exe /F /IM Foo.exe /T" />
Run Code Online (Sandbox Code Playgroud)

获得相同结果后,尝试:

<Property Id="QtExecCmdLine" Value='"[WinDir]\System32\taskkill.exe" /F /IM Foo.exe'/>
...
<InstallExecuteSequence>
  <Custom Action="MyProcess.TaskKill" Before="InstallValidate" />
</InstallExecuteSequence>
...
<CustomAction Id="MyProcess.TaskKill" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="immediate" Return="ignore"/>
Run Code Online (Sandbox Code Playgroud)

我从这里获取的示例:How to Kill …

wix wix-extension wix3.5

6
推荐指数
1
解决办法
2849
查看次数

NetFx45WebLink和NetFx45RedistLink有什么区别

我用WiX 3.7编写了一个首先安装.net 4.5的引导程序,然后是我的应用程序的MSI:

<Chain>
  <PackageGroupRef Id="NetFx45Redist"/>
  <MsiPackage Id="MainAppPackage"
              After="NetFx45Redist"
              SourceFile="..\bin\Debug\MyApp.msi"/>
</Chain>
Run Code Online (Sandbox Code Playgroud)

WiX的文件说,NetFx45Redist是一个独立的设置,同时NetFx45Web为网络设置.在我使用设置为Id的引导程序NetFx45Redist构建之后,与使用NetFx45Web指定的Id 构建它时相比,它具有相同的大小.我很好奇所以我下载了WiX源(v3.7).我惊讶地发现这两个PackageGroup元素之间几乎没有什么区别.

DownloadUrlNetFx45Webhttp://go.microsoft.com/fwlink/?LinkId=225704,而一个NetFx45Redisthttp://go.microsoft.com/fwlink/?LinkId=225702.根据RemotePayload\@Size属性NetFx45Web是1005568字节并且NetFx45Redist是50352408字节.

我希望NetFx45Redist在我的引导程序中包含.net 4.5设置,不需要下载.我觉得这是错的.PackageGroup我应该使用哪个,以及2个下载的.net 4.5安装之间有什么区别?

.net wix wix3 bootstrapper wix-extension

6
推荐指数
1
解决办法
3254
查看次数

Wix中未解析的符号引用

我正在尝试使用Wix为MVC4应用程序创建一个安装程序.我找到了一个示例,演示了如何在此链接上为MVC4应用程序创建安装程序

但是当我尝试构建Wix安装项目时,它给出了如下错误

Error   16  Unresolved reference to symbol 'WixComponentGroup:MyWebWebComponents' 
in section 'Product:{D16E42B5-3C6F-4EE5-B2F4-727BF8B74A92}'.    
C:\Users\Baris\Desktop\New folder\WIXInstallerDemo-master\DemoWebsite.Setup\Product.wxs 15  
1   DemoWebsite.Setup

Error   17  Unresolved reference to symbol 'WixComponentGroup:DemoWebsiteIssConfiguration' 
in section 'Product:{D16E42B5-3C6F-4EE5-B2F4-727BF8B74A92}'.    
C:\Users\Baris\Desktop\New folder\WIXInstallerDemo-master\DemoWebsite.Setup\Product.wxs 16  
1   DemoWebsite.Setup`
Run Code Online (Sandbox Code Playgroud)

我尝试添加WixUIExtension作为参考,但它不起作用.

这是Product.wxs.并且功能节点的子节点会导致此错误

    <?xml version="1.0" encoding="UTF-8"?>
    <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="{D16E42B5-3C6F-4EE5-B2F4-727BF8B74A92}" Name="Demo website setup" Language="1033" Version="1.0.0.0" Manufacturer="Me" UpgradeCode="9279b740-8419-45c4-9538-6a45f8e949c7">
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
    <Media Id="1" Cabinet="DemoWebsite.cab" EmbedCab="yes" />

    <Property Id="DB_USER" Value="sa"/>
    <Property Id="DB_PASSWORD" Value="sa"/>
    <Property Id="DB_SERVER" Value="LOCAL"/>
    <Property …
Run Code Online (Sandbox Code Playgroud)

.net c# wix wix-extension asp.net-mvc-4

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

Wix 不会卸载 IIS Web 应用程序

我正在使用 Wix 3.5 构建一个 MSI 安装程序,在 IIS 7 中安装两个 Web 应用程序。用户可以为每个应用程序选择是将其安装在“默认网站”下还是在 IIS 中的任何其他现有网站下安装。通过在 IIS 中创建两个 Web 应用程序,安装程序在 INSTALL 期间正常工作。问题是卸载该产品后,一个应用程序被删除,而另一个应用程序留在 IIS 管理器中,因此必须手动删除。与 WebApp 相关的所有文件和组件都被删除,但 IIS WebApp 被留下。安装程序针对 x86 和 x64 目标架构进行编译。我正在 Windows Server 2008 R2 中测试安装程序。

笔记:

  • 该问题仅发生在 x64 Windows Server 2008 R2 中。在 x86 中,这两个应用程序都从 IIS 中正确删除。
  • 只有当两个应用程序都安装在同一个网站下时才会出现问题(一个被删除,另一个被留下)。
  • 我已经尝试安装 3 个 Web 应用程序,但我发现其中两个被删除了,第三个被留下了。重新挖掘的 Web 应用程序取决于它们在 Product.wxs 中定义的顺序
  • 我在卸载过程中检查了空属性,但事实并非如此。
  • 通过从 WebService 应用程序中删除“iis:WebApplication”标记元素,虚拟目录将从 IIS 中删除。

我看不出我做错了什么。我在 Stackoverflow 中阅读了很多关于 的文章,但我没有发现这个问题。我真的很感激你在这个问题上的帮助或指导。

这是我在该网站上的第一篇文章,所以如果我犯了任何错误,请原谅。我一直在寻找这个问题的解决方案,但没有发现任何人有这个问题。也许我的 Wix XML 代码有问题。

Product.wxs的相关部分:

<Directory Id="TARGETDIR" Name="SourceDir">
        <!-- Program Files (x86) --> …
Run Code Online (Sandbox Code Playgroud)

.net iis installation wix wix-extension

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

Wix将项目加载到ComboBox中

我需要使用自定义操作将项目加载到组合框中.

UI.wxs:

            <Control Id="Server" Type="ComboBox" X="30" Y="65" Width="200" Height="18" Property="DATABASE_SERVER">
                <ComboBox Property="DATABASE_SERVER">
                    <ListItem Text="[DATABASE_SERVER]" Value="[DATABASE_SERVER]" />
                </ComboBox>
                <Publish Property="LOGON_VALID" Value="0">1</Publish>
            </Control>
Run Code Online (Sandbox Code Playgroud)

自定义操作

private static ActionResult EnumSqlServersIntoComboBox(Session session, IEnumerable<DataRow> rows)
{
    try
    {
        Debugger.Break();

        session.Log("EnumSQLServers: Begin");

        // Grab the combo box but make sure I'm getting only the one 
        // from WebAppInstallDlg.
        View view = session.Database.OpenView("SELECT * FROM ComboBox WHERE ComboBox.Property='DATABASE_SERVER'");
        view.Execute();

        Int32 index = 1;
        session.Log("EnumSQLServers: Enumerating SQL servers");
        foreach (DataRow row in rows)
        {
            String serverName = row["Name"].ToString();

            // …
Run Code Online (Sandbox Code Playgroud)

wix wix-extension wixlib wix3.6

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

WiX获得文化预处理器变量

我有一个像文件夹一样的文件夹

[MyApp]
--[Videos]
  --[de-de]
    -video1.mpg
    - blah blah blah
  --[en-us]
    - video1.mpg
    - blah blah blah
etc etc
Run Code Online (Sandbox Code Playgroud)

要将此视频包含在特定语言的安装程序中,我需要能够访问类似$(var.Culture)(< - didnt exist)的内容.我试图使用语言文件

<WixLocalization Culture="en-us" xmlns="http://schemas.microsoft.com/wix/2006/localization">
  <String Id="Localisation">en-us</String>
</WixLocalization>
Run Code Online (Sandbox Code Playgroud)

但这也是最重要的工作因为它们不是预处理器变量所以我不能在"蜡烛"过程中使用它们.有没有办法将culturecode作为当前构建的msi的预处理器变量?我很抱歉,如果这个问题是微不足道的,但我搜索谷歌,我没有找到一个真正的解决方案.

windows-installer wix wix-extension

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