我有一个C#项目,我以前曾针对.NET 4.0,现在我想针对.NET 3.5,但我收到此警告:
.NET Framework启动条件".NET Framework 3.5"的版本与选定的.NET Framework引导程序包不匹配.更新.NET Framework启动条件以匹配在"先决条件"对话框中选择的.NET Framework版本.
但是,当我查看Publish-> Prerequisites时,将检查.NET framework 3.5 SP1.
我需要做些什么来摆脱这个警告?没有SP1的.NET framework 3.5没有复选框,我可以不检查任何框吗?
我检查了启动条件,.NET框架启动条件版本已经是3.5.
在MSBuild任务中检索Windows SDK文件夹的方法是什么?
使用generateBootstrapper任务我正在为我的设置创建一个引导程序,以便能够安装先决条件.此任务需要指向必备软件包所在文件夹的路径,即Windows SDK文件夹
"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\"
Run Code Online (Sandbox Code Playgroud)
使用Visual Studio 2008时.到目前为止,我一直在使用硬编码路径,但这不适用于任何系统.有没有更好的方法来获得这条路?
这是我的构建脚本:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
ToolsVersion="3.5">
<ItemGroup>
<BootstrapperFile Include="Microsoft.Net.Framework.2.0">
<ProductName>.NET Framework 2.0</ProductName>
</BootstrapperFile>
<BootstrapperFile Include="Microsoft.Windows.Installer.3.1">
<ProductName>Windows Installer 3.1</ProductName>
</BootstrapperFile>
</ItemGroup>
<Target Name="Bootstrapper">
<GenerateBootstrapper ApplicationFile="mySetup.msi"
Culture="de-DE"
ApplicationName="My Application"
OutputPath="$(OutDir)\de-DE"
BootstrapperItems="@(BootstrapperFile)"
Path="C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\" />
<GenerateBootstrapper ApplicationFile="mySetup.msi"
Culture="en-US"
ApplicationName="My Application"
OutputPath="$(OutDir)\en-US"
BootstrapperItems="@(BootstrapperFile)"
Path="C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\" />
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud) 我有一个项目,我已经构建了一个WiX msi文件.我还有一个WiX引导程序(exe文件),它检查是否存在C++ 2005,如果找不到则安装它,然后安装msi软件包.我的项目包括Crystal Reports作为msm文件,它与msi一起安装但需要C++ 2005才能正确安装.
在MSI项目中,我已经包含以下post构建事件来对msi文件进行数字签名.
sign /f "$(ProjectDir)\myPFXFile.pfx" /p mySecretKey/d "My Program" /t http://timestamp.verisign.com/scripts/timstamp.dll /v "MyProgram.msi"
Run Code Online (Sandbox Code Playgroud)
如果我只安装msi,它会在请求提升的安装权限时正确识别发布者.
我尝试将相同的post-build事件添加到bootstrapper项目,如下所示:
sign /f "$(ProjectDir)\myPFXFile.pfx" /p mySecretKey/d "My Program" /t http://timestamp.verisign.com/scripts/timstamp.dll /v "MyProgram Setup.exe"
Run Code Online (Sandbox Code Playgroud)
当我尝试安装exe文件时,它正确识别发布者,但无法使用日志文件中的以下内容进行安装:
[1604:2574][2013-12-04T11:49:51]i001: Burn v3.7.1224.0, Windows v6.2 (Build 9200: Service Pack 0), path: C:\Users\.....\MyProgram Setup.exe, cmdline: ''
[1604:2574][2013-12-04T11:49:51]i000: Setting string variable 'WixBundleLog' to value 'C:\Users\.....\MyProgram_20131204114951.log'
[1604:2574][2013-12-04T11:49:51]i000: Setting string variable 'WixBundleOriginalSource' to value 'C:\Users\.....\MyProgram Setup.exe'
[1604:2574][2013-12-04T11:49:51]i000: Setting string variable 'WixBundleName' to value 'MyProgram'
[1604:2574][2013-12-04T11:49:51]i100: Detect begin, 2 packages
[1604:2574][2013-12-04T11:49:51]i000: Setting string …
Run Code Online (Sandbox Code Playgroud) 我使用Visual Studio 2010版本10.0.40.219.1 SP1 Rel创建了一个安装程序.我的应用程序是为x86构建/编译的,需要VC++运行时库.因此,安装项目配置为VC++运行时库作为先决条件.
每次运行安装程序时,我都会弹出"您的计算机上将安装以下组件"."Visual C++ 2010运行时库(x86)".它是第一次按预期安装.第二次及以后,它会询问我是否修复或删除VC++ 2010.
此弹出窗口应该只显示一次,第一次发现未安装VC++可再发行组件.
有没有人见过这个?有谁知道如何解决这个问题?
解:
我接受的答案给了我解决问题所需要的东西.以下是我为解决这个问题所做的工作的细节,事实上这非常简单.我编辑了文件:
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\vcredist_x86\product.xml
Run Code Online (Sandbox Code Playgroud)
在此文件中,您将找到以下内容:
<InstallChecks>
<MsiProductCheck Property="VCRedistInstalled" Product="{6EE91C1A-A2E7-38CD-AEBB-3B900A4D8868}"/>
</InstallChecks>
Run Code Online (Sandbox Code Playgroud)
以上包含不正确的产品代码.将以上内容替换为Visual C++ 2010 SP1可再发行组件的正确产品代码,如下所示:
<InstallChecks>
<MsiProductCheck Property="VCRedistInstalled" Product="{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}"/>
</InstallChecks>
Run Code Online (Sandbox Code Playgroud)
此处的链接显示各种VC++ 2010 Redistributables的正确产品代码.
我知道WiX MSI中存在类似的问题,但是我在安装后使用Burn创建的引导程序EXE文件中启动应用程序时遇到问题.我的完整包在下面.
如果它对场景有任何影响,则引导程序以被动模式启动,因此用户不需要按任何内容.
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Bundle Name="My Company AutoUpdater"
Version="1.0.11"
Manufacturer="My Company"
UpgradeCode="--GUID--">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense">
<bal:WixStandardBootstrapperApplication SuppressOptionsUI="yes"
LicenseUrl=""
LogoFile="logo.png" />
</BootstrapperApplicationRef>
<Chain>
<MsiPackage SourceFile="..\App1\bin\Release\App1.msi" />
<MsiPackage SourceFile="..\App2\bin\Release\App2.msi" />
</Chain>
</Bundle>
<Fragment>
<Property Id="WixShellExecTarget"
Value="[#C:\Program Files (x86)\My Company\App1.exe]" />
<Binary Id="MyCA"
SourceFile="[#C:\Program Files (x86)\My Company\App1.exe]"/>
<CustomAction Id="LaunchApplication"
BinaryKey="MyCA"
ExeCommand="-switch"
Execute="deferred"
Return="check"
HideTarget="no"
Impersonate="no" />
<InstallExecuteSequence>
<Custom Action="LaunchApplication"
After="InstallFiles" />
</InstallExecuteSequence>
</Fragment>
</Wix>
Run Code Online (Sandbox Code Playgroud) 我正在从IIS WebAPI迁移到OwinHost.利用nuget软件包的最新预发布版本,我在这里成功使用了说明:
https://github.com/ninject/Ninject.Web.Common/wiki/Setting-up-a-OWIN-WebApi-application
这是我的代码的存根:
public void Configuration(IAppBuilder app)
{
var config = new HttpConfiguration();
config.MapHttpAttributeRoutes();
app.UseNinjectMiddleware(CreateKernel);
app.UseNinjectWebApi(config);
}
private static StandardKernel CreateKernel()
{
var kernel = new StandardKernel();
kernel.Load(Assembly.GetExecutingAssembly());
RegisterServices(kernel);
return kernel;
}
private static void RegisterServices(IKernel kernel)
{
...
}
Run Code Online (Sandbox Code Playgroud)
但是在我的代码和文档示例中,Ninject内核直到启动后才会创建.但是,在Cors和OAuth中间件注册的启动注册过程中,我需要Ninject DI.在迁移到OwinHost之前,我可以这样做:
public void Configuration(IAppBuilder app)
{
_bootstrapper = new Bootstrapper();
_bootstrapper.Initialize(CreateKernel);
var config = new HttpConfiguration();
config.MapHttpAttributeRoutes();
// USE _boostrapper.Kernel here
app.UseNinjectMiddleware(CreateKernel);
app.UseNinjectWebApi(config);
}
Run Code Online (Sandbox Code Playgroud)
但在内部,OwinBootstrapper.Execute将最终调用CreateKernel和bootstrapper.Initialize第二次,结果不好.
在Startup中创建和使用ninject内核并仍然注册Ninject/WebAPI中间件的正确方法是什么?
在做我的dontnet 4.0项目设置的构建时,我遇到了以下错误
An error occurred generating a bootstrapper: Unable to finish updating resource for E:\project\Setup\Debug\setup.exe with error 8007006E E:project\Setup\Setup.vdproj Setup
General failure building bootstrapper E:\project\Setup\Setup.vdproj Setup
Unrecoverable build error E:\project\\Setup\Setup.vdproj Setup
Run Code Online (Sandbox Code Playgroud)
我使用的是dotnet framework 4和MSVS 2010.
.net-4.0 setup-project visual-studio-2010 bootstrapper setup-deployment
使用WiX 3.7和.NET 4.0.
从命令行运行WiX引导程序EXE时,如何设置刻录变量?
能否请您看看这个链接(请向下滚动到页面的结束),并让我知道为什么"
1表是不是actinf响应?2 -我希望能够控制<td>
使用宽度col-md-3
和 col-lg-3
做这工作表作为好?
这是我的代码:
<div class="col-md-offset-1 col-lg-offset-1 col-md-6 col-lg-6">
<table class="table table-hover table-responsive">
<tbody>
<tr>
<td width="174"><strong>7:30 – 8:45 a.m.</strong></td>
<td>Arrival / Health CheckFree Choice in Activity Areas, books, puzzles, matching games, large block building, small blocks, floor toys, Lego, trucks and car play.</td>
</tr>
<tr>
<td><strong>8:45 – 9:00 a.m.</strong></td>
<td>Clean-up, toileting, wash up for snack</td>
</tr>
<tr>
<td><strong>9:00 – 9:30 a.m.</strong></td>
<td>Morning snack</td>
</tr>
<tr>
<td><strong>9:30 -10:00 a.m.</strong></td>
<td>Circle Time: Action songs, singing …
Run Code Online (Sandbox Code Playgroud) bootstrapper ×10
wix ×4
c# ×2
.net ×1
.net-4.0 ×1
burn ×1
code-signing ×1
command-line ×1
installation ×1
msbuild ×1
ninject ×1
owin ×1
visual-c++ ×1
winapi ×1
wix3.6 ×1
wix3.7 ×1