小编Yan*_*nko的帖子

如何使用WIX 3.5项目/设置将net.tcp添加到"启用的协议"?

我们有一些安装WCF服务的MSI包(由WIX生成).这些服务中的大多数都需要net.tcp来进行端点绑定.

我想让我们的部署更轻松,并自动完成添加net.tcp的过程.我已经知道WixIisExtension.dll并使用它的有用功能(创建网站,virt.目录等).

我可以使用WixIisExtension来启用net.tcp协议吗?如果没有,我怎么能实现呢?

wix wcf-binding net.tcp iis-7.5 wix3.5

11
推荐指数
3
解决办法
3152
查看次数

WiX:构建服务器构建上的神秘且难以诊断的ICE验证错误

我正在尝试使用在Windows Server 2008 R2 上运行的TFS 2010 将WiX集成到我的自动构建解决方案中.一切似乎都很简单,然后我明白了:

light.exe:执行ICE操作'ICE01'时出错.这种ICE故障的最常见原因是错误注册的脚本引擎.有关详细信息以及如何解决此问题,请参见http://wix.sourceforge.net/faq.html#Error217.外部UI消息记录器不期望以下字符串格式:"无法访问Windows Installer服务.如果未正确安装Windows Installer,则会发生这种情况.请联系您的支持人员以获取帮助."

那很奇怪.但是嘿!他们提供了一个链接.这应该有帮助,对吗?

错误LGHT0217
在WiX v3中,Light会自动运行验证 - Windows Installer内部一致性评估程序(ICE) - 每次成功构建之后.验证是捕获可能导致服务问题的常见创作错误的好方法,这就是为什么它现在默认运行的原因.不幸的是,Windows Vista和Windows Server 2008上存在一个可能导致ICE失败的常见问题.有关原因及其解决方法的详细信息,请参阅Heath Stewart的博客和Aaron Stebner的WebLog.

一点也不.这些帖子只描述了涉及脚本引擎注册的情况,并且它们描述的条件不存在.然而,我遇到了Re :( WiX用户)为什么我从serviceaccount建立ICE失败?(2010-01-14)似乎表明,如果我使用域帐户运行Windows Installer服务,它将起作用.这听起来像是值得一试.

"无论出于何种原因,在Windows 2008上(我没有测试Vista,XP,2003,7或2008 R2),MSI服务只能从具有管理访问权限或登录为"交互式"的登录中获得.登录是从没有管理权限的服务帐户无法访问msi服务,因此无法运行ICE测试."

但是,尝试使用我的构建服务帐户启动Windows Installer服务时:

Windows无法在SKILLET-1上启动Windows Installer服务.错误1297:服务帐户配置中不存在服务正常运行所需的权限.您可以使用服务Microsoft管理控制台(MMC)管理单元(services.msc)和本地安全设置MMC管理单元(secpol.msc)来查看服务配置和帐户配置.

好的,Windows,所以你告诉我,我的构建服务帐户缺少启动服务所需的一些模糊权限.让管理员应该解决这个问题吗?不,这也不起作用.

所以我恢复到Windows Installer服务帐户的本地系统.这次我使构建服务成为本地管理员,并且成功!但这不是解决方案.

我的下一个想法是尝试隔离构建服务实际需要的权限集来完成这项工作.这将是一个很好的解决方案,而不必向管理员集添加更多帐户.步骤1:进入本地安全策略并将构建服务帐户添加到当前授予管理员的所有权限.从理论上讲,这应该允许构建成功,从那里我可以有选择地删除权限,直到我已经隔离了必须持有的所有权限才能成功.

不幸的是,即使具有所有相同的权限,除非构建服务帐户是本地管理员的成员,否则构建仍将失败.为什么是这样?除LSP之外还有哪些其他东西依赖于我可以更改的管理员组,以使我的构建服务帐户与管理员等效?

当前结论:构建服务必须是管理员才能避免ICE验证错误.

开放式问题:

  • 为什么我的权限隔离想法不起作用?
  • Error 1297Windows Installer服务作为域用户运行时,抛出的这个神秘是什么?几乎没有我能找到的文件.

windows-installer wix tfsbuild tfs2010 wix3.5

11
推荐指数
1
解决办法
3627
查看次数

从WiX中静默执行PowerShell脚本挂起PowerShell

注意:此问题也发布在WiX用户邮件列表中.

我试图从WiX生成的MSI静默执行PowerShell脚本.但是,无论何时我运行安装程序,PowerShell都会挂起.有趣的是,根据安装程序日志,PowerShell脚本似乎成功运行.此外,如果我通过任务管理器终止PowerShell进程,安装程序将取消安装并回滚所有更改.

PowerShell脚本内容

# @param website The website under which the module should be compiled and registered.
# @param name The name of the module to be registered.
# @param assembly The assembly name, version, culture and public key token to be compiled.
# @param assemblyType The fully qualified assemebly type to be registered.

param([string]$website = "website", [string]$name = "name", [string]$assembly = "assembly", [string]$assemblyType= "assemblyType")

import-module webadministration
add-webconfiguration /system.web/compilation/assemblies "IIS:\sites\$website" -Value @{assembly="$assembly"}
new-webmanagedmodule -Name "$name" -Type "$assemblyType" -PSPath …
Run Code Online (Sandbox Code Playgroud)

powershell windows-installer wix wix3.5

11
推荐指数
1
解决办法
5751
查看次数

WiX - 如何创建bin子目录?

我错过了一些明显的东西.你如何将.dll放在安装目录下名为"bin"的子目录中?我正在尝试按照本教程:http: //www.tramontana.co.hu/wix/lesson5.php#5.3 来部署WCF Web服务.所以我需要复制.svc文件和.bin文件,以及其他一些文件,但从这两个文件开始.我在Visual Studio下使用Wix 3.5.

    <Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="ProgramFilesFolder">
            <Directory Id="INSTALLLOCATION" Name="TFBIC.RCT.WCFWebServicesWIXSetup">
                <Component Id="ProductComponent" Guid="E9A375FB-DF6A-4806-8B0B-03BE4A50802F"> 
                    <File Id='SVC1' Name='CreateUpdateReturnService.svc' DiskId='1' Source='../TFBIC.RCT.WCFWebServices/CreateUpdateReturnService.svc'  />
                </Component>
            </Directory>
            <Directory Id="INSTALLLOCATION" Name="TFBIC.RCT.WCFWebServicesWIXSetup">
                <Component Id="ProductComponent" Guid="E9A375FB-DF6A-4806-8B0B-03BE4A50802F">
                    <File Id='DLL1' Name='TFBIC.RCT.WCFWebServices.dll' DiskId='1' Source='../TFBIC.RCT.WCFWebServices/bin/TFBIC.RCT.WCFWebServices.dll'  />
                </Component>
            </Directory>
        </Directory>
        <Component Id='TestWebVirtualDirComponent' Guid='9586807E-9065-48e8-8E73-13A9191962E5'>
            <iis:WebVirtualDir Id='TestWebVirtualDir' Alias='Test' Directory='InstallDir'
              WebSite='DefaultWebSite'>
                <iis:WebApplication Id='TestWebApplication' Name='Test' />
            </iis:WebVirtualDir>
        </Component>

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

我尝试将\ bin放在ID和name属性上,它也不喜欢(无效字符).

另外,使用IIS,是在c:\ program files或c:\ inetpub\wwwroot中安装的最佳实践?如何将默认目录切换到c:\ inetpub\wwwroot\myproj?

这些是我用WiX进行的各种首次实验.

binary wix wix3

10
推荐指数
1
解决办法
7687
查看次数

org.scalatest:全局设置(如beforeAllSuites?)

我有一个使用org.scalatest进行一些测试的scala应用程序.这些测试需要一些全局设置(和拆解),以便管理测试数据库.

请不要告诉我我的测试不应该打到数据库,我应该使用Java-DAO-Stub-WTF-Overkill-Way™:-).

我正在使用SBT运行测试,这提供了一种在测试之前和之后执行代码的方法:

    testOptions in Test += Tests.Setup( () => println("Setup") )

    testOptions in Test += Tests.Cleanup( () => println("Cleanup") )
Run Code Online (Sandbox Code Playgroud)

不幸的是,我无法访问那里的课程.不出所料,将它们导入build.sbt也不起作用.

有任何想法吗?

installation sbt scalatest

10
推荐指数
1
解决办法
2575
查看次数

WIX和C#中的"SystemFolder"

我用WiX创建的安装程序使用SystemFolder变量安装DLL ,并将C#app安装到另一个文件夹中.我想直接从应用程序中引用DLL.我是否需要查找注册表项才能找到它的SystemFolder位置?

c# installer wix path system32

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

是否可以读取管道任务上的 PR 标签?

我的问题基本上是标题。我无法在阅读此页面并搜索网络时找到此类信息。

我的场景如下:每当我创建要掌握的 PR 时,我都会添加一个包含一些信息的标签,例如此处看到的 lib 版本:

在此输入图像描述

然后,在构建过程中,我生成发行说明,并希望在任务中访问该 PR 标签,就像我在$(Build.BuildId)此处所做的那样:

在此输入图像描述

我怎样才能做到这一点?诸如“谢谢”之类的东西$(PullRequest.Tag)

azure-devops azure-pipelines

10
推荐指数
1
解决办法
4480
查看次数

Wix组件与不同目录中的文件

我可以使用Wix创建一个包含不同目录/子目录中的文件的组件吗?或者组件的所有文件应该在同一目录中?

如何为此设置XML?

windows-installer wix wix3

9
推荐指数
1
解决办法
4379
查看次数

按功能执行自定义操作

我写了一个自定义操作来安装后创建一个计划任务.当用户不想创建计划任务时,我不希望自定义操作运行.在安装过程中,即使我选择"功能将无法使用",也会创建schtask.如何阻止自定义操作执行?

wix wix3

9
推荐指数
1
解决办法
5978
查看次数

批处理文件中的条件语句

是否可以在批处理脚本中使用条件语句?

例如:

我有两个服务器,S1和S2.当批处理文件在S1中部署时,输出应该在位置L1生成.同样,如果在S2中部署批处理文件,则应在位置L2中生成输出.

我的剧本:

set ComputerName=S1
set RepServer=%ComputerName%
set DBServer=%ComputerName%
set ReportPath="/DEV/Clearviewbilling"
set SharedPath=\\scottvdr1\ClearviewBilling\DEV-TEST
set UserId=-E
set fn=Create_Log.txt

if exist %fn% del %fn%
@echo on

@rem Reports
rs -i "%CD%"\Reports\Create_Sub.rss -s http://%RepServer%/reportserver -v Path=%SharedPath% -v rootpath=%ReportPath% -v DBServer=%DBServer% -t  >>  %fn% 2>&1
Run Code Online (Sandbox Code Playgroud)

但我希望脚本是:

set ComputerName=S1
set RepServer=%ComputerName%
set DBServer=%ComputerName%

If ComputerName=S1
Set SharedPath=//blah/blah
else
Set sharedPath=//some/path

set ReportPath="/DEV/Clearviewbilling"
set UserId=-E
set fn=Create_Log.txt

if exist %fn% del %fn%
@echo on

@rem Reports
rs -i "%CD%"\Reports\Create_Sub.rss -s http://%RepServer%/reportserver -v Path=%SharedPath% -v rootpath=%ReportPath% …
Run Code Online (Sandbox Code Playgroud)

batch-file

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