我正在使用Unity Container和Automapper,我正在寻找一个在我的WCF服务中调用初始化和引导代码的地方.我的互联网搜索推荐了这里讨论的四种方法之一 http://blogs.msdn.com/b/wenlong/archive/2006/01/11/511514.aspx
(e.g.
1. Global.asax,
2. App_Code\AppInitialize,
3. custom ServiceHost, and
4. ServiceHostBase.InitializeRuntime)
Run Code Online (Sandbox Code Playgroud)
但是,我还想知道是否有人使用 带有Unity和Automapper扩展的"Bootstrapper"项目 http://bootstrapper.codeplex.com/.
那么在WCF服务中调用"Bootstrapper.Run()"代码的最佳位置在哪里/如何?示例代码将不胜感激.谢谢!
我正在尝试为以下问题找到解决方案:
我有许多程序(让我们称之为奴隶)都依赖于一个程序(主程序).我需要为每个奴隶分发一个安装程序.此安装程序需要安装主服务器.
我希望能够对这两个部分进行版本控制,因此多个msi似乎是正确的解决方案,与引导程序链接.
我的问题是如果从属安装程序安装了已安装的主服务器的相同版本,.msi将以修复/删除模式运行.
从用户的角度来看,这是不可接受的,只会引起混淆.
在尝试运行msi之前,有没有办法检查当前安装的fiels的版本?
我目前正在使用WIX的setupbld.exe作为引导程序.
任何其他解决方案非常感谢(我也尝试合并模块没有成功,因为版本控制是无用的)
我已经开发了一个.net项目,现在我正在做安装程序.我的项目需要Microsoft SQL 2008或Microsoft SQL 2008 Express.我已经创建了一个安装Microsoft SQL 2008 Express的Bootstrapper,除非有人安装了Microsoft SQL 2008,否则它可以正常工作.如果已安装Microsoft SQL 2008,我该如何绕过安装?
编辑: 此解决方案适用于Microsoft SQL 2008:
<Product xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper" ProductCode="AAA">
<InstallChecks>
<RegistryCheck Property="IsInstalled" Key="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL" Value="SQL2008" />
</InstallChecks>
<Commands Reboot="Defer">
<Command PackageFile="setup.exe" EstimatedInstallSeconds="15" >
<InstallConditions>
<BypassIf Property="IsInstalled" Compare="ValueExists" />
</InstallConditions>
</Command>
</Commands>
...
</Product>
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个WiX软件包,在我的MSI安装程序之前安装.NET Framework 4.0 .我使用命令行参数检查了我的引导程序的日志文件\l log.txt
,发现它ExePackage::DetectCondition
总是评估为false.
我WixNetFxExtension.dll
在Visual Studio 2010 Windows Installer XML Bootstrapper项目中包含了作为参考.
我包括NetFxExtension
命名空间:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension">
Run Code Online (Sandbox Code Playgroud)
提供基本的bundle框架:
<Bundle Name="RSA Bootstrapper"
...
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
...
<Chain>
<PackageGroupRef Id="NET40" />
<PackageGroupRef Id="RSA_Application" />
</Chain>
</Bundle>
...
Run Code Online (Sandbox Code Playgroud)
我<PropertyRef Id="NETFRAMEWORK40FULL" />
在片段中包含,然后继续定义.NET Framework 4.0的ExePackage(NET40
):
<Fragment>
<PropertyRef Id="NETFRAMEWORK40FULL" />
<PackageGroup Id="NET40">
<ExePackage SourceFile="dotNetFx40_Full_x86_x64.exe"
Compressed="yes"
Cache="yes"
DetectCondition="NETFRAMEWORK40FULL"
InstallCommand="/norestart /passive /showrmui /ACTION=Install"
Permanent="yes"
InstallCondition="NOT NETFRAMEWORK40FULL"
Vital="yes" >
<ExitCode …
Run Code Online (Sandbox Code Playgroud) 我正在创建一个带有自定义用户界面的WPF设置应用程序.我从Bryan P. Johnston的教程开始:http://bryanpjohnston.com/2012/09/28/custom-wix-managed-bootstrapper-application/
在我看来的某个地方,我有一个简单的TextBox
绑定到InstallationPath
我的房产MainViewModel
.
现在,我希望在用户单击"安装"时使用此路径.为此,我有一个绑定到我的按钮InstallCommand
.调用以下方法(直接从教程中获取):
private void InstallExecute()
{
Bootstrapper.Engine.Plan(LaunchAction.Install);
}
Run Code Online (Sandbox Code Playgroud)
如何将软件包安装到我的属性目录中InstallationPath
?
编辑:
我在Stackoverflow上发现了一个类似的问题:
在Burn托管引导程序内指定WiX中的软件包的INSTALLLOCATION
答案来自Bob Arnson
为每个MsiPackage使用MsiProperty子项指定INSTALLLOCATION = [BurnVariable].然后使用Engine.StringVariables设置BurnVariable.
现在,我想我可以访问StringVariables
我的InstallExecute
喜欢这个
private void InstallExecute()
{
Bootstrapper.Engine.StringVariables["BurnVariable"] = InstallationPath;
Bootstrapper.Engine.Plan(LaunchAction.Install);
}
Run Code Online (Sandbox Code Playgroud)
但是在哪里定义这个变量?我想在Product.wxs的某个地方?
我正在使用 wix 为 Outlook 插件创建引导程序。我只需要在安装时检查 Outlook 注册表搜索。我的以下检查在安装时运行良好。但是在我的插件安装之后,当有人卸载 Outlook 然后尝试卸载我的插件时,此注册表搜索检查也会在卸载时运行,这会导致卸载程序被阻止。我必须仅在安装时运行这些 Outlook 注册表搜索检查。我的支票如下:
<util:RegistrySearch Variable="Outlook2013Present" Root="HKLM" Key="SOFTWARE\Microsoft\Office\15.0\Outlook\InstallRoot" Value="Path" />
<util:RegistrySearch Variable="Outlook2013Present64" Root="HKLM" Key="SOFTWARE\Microsoft\Office\15.0\Outlook\InstallRoot" Value="Path" Win64="yes" />
<bal:Condition Message="This setup requires Outlook 2010 or 2013. Please install office and then run installer again ">
Outlook2010Present OR Outlook2010Present64 OR Outlook2013Present OR Outlook2013Present64
</bal:Condition>
Run Code Online (Sandbox Code Playgroud) 如何在WIX Bootstrapper项目中添加自己的许可证文件.我有一个WIX Bootstrapper项目,它安装了一系列MSI,但我想在安装开始时显示我自己的许可证文件.
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Bundle Name="Biodentify 2014 Setup" Version="1.0.0.0" Manufacturer="Microsoft" UpgradeCode="4056d930-16b2-44eb-a861-16db566ae44c">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
<Chain>
<!-- TODO: Define the list of chained packages. -->
<!-- <MsiPackage SourceFile="path\to\your.msi" /> -->
<!--<PackageGroupRef Id="BONJOUR"/>-->
<MsiPackage SourceFile=".\A.msi" Compressed="yes" />
<MsiPackage SourceFile=".\B.msi" Compressed="yes" />
<MsiPackage SourceFile=".\C.msi" Compressed="yes" />
<MsiPackage SourceFile ="$(var.Setup.TargetPath)" Compressed ="yes" DisplayInternalUI="yes" />
</Chain>
</Bundle>
Run Code Online (Sandbox Code Playgroud)
我目前正在使用wix工具集3.8开发一个msi安装程序.
此安装程序必须是"多实例",这可以通过<InstanceTransform>
wix中的指令实现.(感谢Yan Sklyarenko和他关于多实例msi的博客文章
现在,我可以创建一个多个实例msi,我知道安装/更新/删除我的产品的特定实例的cmdlines.
但是,"InstanceTransforms"技巧不适用于wix bootstrapper(刻录),我需要一个轻松安装我的产品(我不会要求用户键入一些cmdlines并找到正确的产品代码...... )
现在,我正在寻找一个能够:
我被告知dotnetinstaller,在先决条件方面似乎没问题,但我对多实例检测一无所知......有没有办法用dotnetinstaller做到这一点?如果没有,是否有人知道另一种可以做到这一点的工具?
任何帮助,将不胜感激.
windows-installer wix multiple-instances bootstrapper dotnetinstaller
我知道这是一个已经讨论过很多次的话题,人们总是声称:Wix 引导程序不应该需要提升运行。让我解释一下我们的要求,希望任何人都可以提出一个适用于所有系统的解决方案。
我们安装的软件是运行提升的 Windows 服务。该服务具有各种设置,这些设置存储在只能由管理员访问的数据库中。安装程序还允许配置这些设置,这些设置是作为安装程序提升阶段的一部分完成的。这就是问题所在:我们无法在引导程序的未提升阶段从数据库加载当前设置。
最简单的解决方案是运行整个 boostrapper 提升,但似乎 Wix 集中试图通过设计防止提升的引导程序。这方面的所有讨论都导致了奇怪的解决方案,其中在 Wix 编译后使用外部工具嵌入应用程序清单。
是的,理论上我们可以修改整个数据库凭据以允许安装程序读取访问,但出于安全原因,我想阻止这种情况。我们还可以将安装程序的设置副本保存在可读位置(例如注册表),但这也不好维护。
是否有一些干净的 Wix 内置机制来加载这些设置或使用应用程序清单从一开始就提升引导程序?我们知道提升的引导程序对用户“不好”,但我们的软件解决了服务运营商无论如何必须具有管理员权限才能操作我们的软件的问题。
更新 #1:我们已经有一个自定义 WPF-GUI 作为使用Microsoft.Tools.WindowsInstallerXml.Bootstrapper.BootstrapperApplication
Wix 提供的类的引导程序应用程序。
我有一个使用WIX,WIX Custom Bootstrapper和Burn创建的WPF安装程序.我使用3.9版本WIX来创建和编译WIX文件.我尝试在已经安装了AVG Antivirus并正确安装了我的安装程序的计算机中安装该安装程序.然后我将WIX更新为3.11版本并编译了WIX源文件,然后构建了WPF安装程序.现在,我尝试将安装程序安装在已安装了AVG Antivirus的同一台机器上.安装程序无法安装,异常发生如下,
错误0x800700e8:无法等待子连接到管道.错误0x800700e8:无法连接到提升的子进程.错误0x800700e8:无法实际提升.错误0x800700e8:无法提升.
我已禁用AVG防病毒软件,并尝试安装使用3.11构建的安装程序.WPF安装程序正确安装在该mahcine中.
任何人建议我如何解决这个问题,任何帮助将不胜感激?