终于OK了,真是怕搞不定这个东西,感谢网络上面愿意分享技术的大牛们。
虽然有大牛们的文档和详细的说明,但是还是纠结了2天才完成我自己的一个第一个Windows Server的打包和发布。
其实,在上一篇转载的bolg就已将介绍的比较详细了,这里就主要就是记录我出现问题的部分和如何解决的。
第一点:
错误: 系统必备组件的安装位置未设置为“组件供应商的网站”,并且无法在磁盘上找到项“.NET Framework 3.5 SP1”中的文件“DotNetFX35SP1\TOOLS\clwireg.exe”。有关详细信息,请参见帮助。
错误: 系统必备组件的安装位置未设置为“组件供应商的网站”,并且无法在磁盘上找到项“.NET Framework 3.5 SP1”中的文件“DotNetFX35SP1\TOOLS\clwireg_x64.exe”。有关详细信息,请参见帮助。
错误: 系统必备组件的安装位置未设置为“组件供应商的网站”,并且无法在磁盘上找到项“.NET Framework 3.5 SP1”中的文件“DotNetFX35SP1\TOOLS\clwireg_ia64.exe”。有关详细信息,请参见帮助。
错误: 系统必备组件的安装位置未设置为“组件供应商的网站”,并且无法在磁盘上找到项“.NET Framework 3.5 SP1”中的文件“DotNetFX35SP1\dotNetFX20\aspnet.msp”。有关详细信息,请参见帮助。
解决方案:
1.要下载.NET Framework 3.5完全包(下载地址如下:)
http://download.microsoft.com/download/2/0/e/20e90413-712f-438c-988e-fdaa79a8ac3d/dotnetfx35.exe
2.使用winrar或者其他解压工具,将已经下载的dotnetfx3.5解压缩,解压完了之后,将会看到一个WCU的文件夹
3. 将解压缩的 WCU/dotNetFramework 下的内容全部copy到C:\Program Files\MicrosoftDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFX35SP1这个目录下面。
4.打开C:\ProgramFiles\MicrosoftSDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFX35SP1这个目录找到Product.xml 文件如图:
5.用记事本打开,将下面内容copy进去如图: <PackageFile Name="TOOLS/clwireg.exe" /> <PackageFile Name="TOOLS/clwireg_x64.exe" /> <PackageFile Name="TOOLS/clwireg_ia64.exe" />
再找到<PackageFileName=”dotNetFX30\XPSEPSC-x86-en-US.exe” 这行与 <PackageFile Name=”dotNetFX30\XPSEPSC-amd64-en-US.exe” 这行,并将这两行的 PublicKey 原本的值改成以下的值 ( 请注意复制的时候不要复制到空格符 ):
3082010A0282010100A2DB0A8DCFC2C1499BCDAA3A34AD23596BDB6CBE2122B794C8EAAEBFC6D526C232118BBCDA5D2CFB36561E152BAE8F0DDD14A36E284C7F163F41AC8D40B146880DD98194AD9706D05744765CEAF1FC0EE27F74A333CB74E5EFE361A17E03B745FFD53E12D5B0CA5E0DD07BF2B7130DFC606A2885758CB7ADBC85E817B490BEF516B6625DED11DF3AEE215B8BAF8073C345E3958977609BE7AD77C1378D33142F13DB62C9AE1AA94F9867ADD420393071E08D6746E2C61CF40D5074412FE805246A216B49B092C4B239C742A56D5C184AAB8FD78E833E780A47D8A4B28423C3E2F27B66B14A74BD26414B9C6114604E30C882F3D00B707CEE554D77D2085576810203010001 最后保存Product.xml。
6. 下载 dotnetfx35langpack_x86zh-CHS.exe和dotnetfx35langpack_x64zh-CHS.exe
下载地址分别为:
http://download.microsoft.com/download/7/7/b/77b96978-c805-4674-a9b0-43351e86b41f/dotnetfx35langpack_x86zh-CHS.exe
http://download.microsoft.com/download/7/7/b/77b96978-c805-4674-a9b0-43351e86b41f/dotnetfx35langpack_x64zh-CHS.exe
7.下载好后,找到C:\Program Files\Microsoft
SDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFX35SP1下面的”
zh-Hans”文件夹,进入此文件夹,新建dotNetFX35文件夹,再在dotNetFX35
文件夹下新建x86和x64文件夹 把下载好的文件分别copy到这二个文件夹如图:
第二点:
就是重写完成安装之后执行的操作:
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using System.Linq;
using System.Reflection;
namespace InstallService
{
[RunInstaller(true)]
public partial class Installer : System.Configuration.Install.Installer
{
public Installer()
{
InitializeComponent();
}
public static void Main()
{
}
protected override void OnAfterInstall(IDictionary savedState)
{
base.OnAfterInstall(savedState);
Assembly asm = Assembly.GetExecutingAssembly();
string path = asm.Location.Remove(asm.Location.LastIndexOf("\\")) + "\\";
string arg = " -w " + path + " --install";
try
{
//System.Diagnostics.Process.Start(path + "\\yate-service.exe
");
System.Diagnostics.Process.Start(path + "\\yate-service.exe
", arg);
}
catch (Exception my)
{
throw new Exception(my.Message);
}
}
}
}
我的功能就基本实现了。
在Windows Service 就有了我需要安装的服务、。