필자는 Wix #를 살펴 보도록 강력히 권합니다. http://www.codeproject.com/Articles/31407/Wix-WixSharp-managed-interface-for-WiX을 참조하십시오. C#에서 코드를 작성하는 경우 Wix #이 코드는 아마도 가장 간단하고 편안한 스킬로 추가 할 수 있으며 무료이며 사용중인 Visual Studio 환경에 직접 통합됩니다.
윅스 번호에 대한 CodePlex의 홈 페이지에서
더 많은 정보 : 윅스 번호는 아마도 사업은 "포장 및 배포"에 대한 최선의 대체 자신의 응용 프로그램을 배포하는 기능 Windows Installer MSI를 만들 필요가 C#을 개발자의 http://wixsharp.codeplex.com/
입니다 VS2012로 시작하는 Visual Studio에서 Microsoft가 제거한 유형. Wix는 WiX (Windows Installer Xml) 도구 세트의 C# 프런트 엔드입니다. Wix #을 사용하면 C# 언어로 완전한 Windows Installer MSI를 작성할 수 있습니다.
Wix #은 광범위한 설치/배포 시나리오에 유용하며 지속적인 통합 시나리오에 적합합니다. Windows 데스크톱 응용 프로그램을 배포하고, Windows 서비스를 설치하고, ASP.NET 웹 사이트를 설치하고, 더 많은 유형의 설치를 수행하는 Wix # 예제가 있습니다.
Windows 7에 응용 프로그램을 설치할 필요가 있다는 의문이 제기되었습니다. Wix #은이 환경을 지원하고 일반적인 설치 프로그램 요구 사항을 처리하며 간단한 프로젝트를위한 Wix # 설치 프로그램 코드는 실제로 간단합니다.좀 더 복잡하고 고급 기능이 필요한 응용 프로그램 설치의 경우 Wix #은 필요할 때 전체 WiX Toolset의 성능을 활용할 수 있습니다. 예를 들어 .NET 응용 프로그램을 설치할 때 일반적인 요구 사항은 응용 프로그램 exe 및 dll 파일을 설치하고 일부 .NET 구성 파일 및/또는 레지스트리 항목을 대상 시스템에 맞게 조정하는 것입니다.
다음은 대상 시스템에 응용 프로그램을 설치하고 일부 구성 파일을 수정하는 간단한 Wix # 설치 프로그램의 C# 코드 예제입니다. 이 예에서는 "TailorMyConfig.exe"라는 유틸리티 (예 : ConfigurationManager.AppSettings 루틴을 사용하는 간단한 C# 프로그램)를 작성한 것으로 가정하고 앱과 함께이 exe를 배포하고 있습니다.
using System;
using System.Windows.Forms;
using System.Diagnostics;
using Microsoft.Deployment.WindowsInstaller;
using WixSharp;
class Script
{
static public void Main(string[] args)
{
var project = new Project("MyProduct",
new Dir(@"%ProgramFiles%\My Company\My Product",
new File(@"Files\Bin\MyApp.exe"),
new File(@"Files\Bin\TailorMyConfig.exe")),
new ManagedAction("UpdateConfigFile"));
project.Id = new Guid("6f330b47-2577-43ad-9095-1861ba25889b");
Compiler.BuildMsi(project);
}
}
public class MyCustomAction
{
[CustomAction]
public static ActionResult UpdateConfigFile(Session session)
{
if (DialogResult.Yes == MessageBox.Show("Config file update ready to run.\n Update config file(s) now?",
"Config Tailoring Utility",
MessageBoxButtons.YesNo))
{
Process.Start("TailorMyConfig.exe", "Run utility to tailor config file to current system");
}
return ActionResult.Success;
}
}
WiX XML 기능을 사용하여 구성 파일을 수정하는 "더 나은"방법이 있다는 것에 유의하십시오. 간단히하기 위해 위의 예에서는 구성 파일을 수정하기 위해 사용자 지정 작성 C# exe 유틸리티를 사용했습니다. WiX XML 기능을 대신 사용하는 것이 좋습니다. Wix # 기술인 "XML injection"을 사용하여 거의 모든 WiX XML 기능을 Wix # 설정에 직접 통합 할 수 있습니다.
위크 #은 WiX XML 구문을내는 C# 프런트 엔드임을 기억하십시오. Wix #가 WiX XML (wxs 파일)을 내 보낸 후에, 그 wxs 파일은 추가 WiX XML 기능을 삽입하기 위해 쉽게 후 처리 될 수 있습니다. 그런 다음 결과로 생성 된 wxs 파일은 WiX Toolset에 의해 MSI로 컴파일됩니다. 윅스 # (C#을) 설치에 윅스 XML 기능을 통합하는 XML 주입을 사용하는 예를 들어
, 그 질문에 여기
In Wix#, how to avoid creating a physical folder on the target system, when deploying only registry entries? 을 찾습니다 "WixSourceGenerated"에 대리인을 접선의 기술을 사용하는 내 대답을 참조 행사.
그런 다음이 XML 삽입 방식을 사용하여 구성 파일 편집을 수행 할 WiX XML을 설치 프로그램에 삽입 할 수 있습니다. 설정 파일을 수정하기위한 전형적인 WiX XML의 예는 다음과 같습니다. How to modify .NET config files during installation?
또 다른 일반적인 설치 프로그램 요구 사항은 대상 시스템에서 Windows 레지스트리 항목을 추가하거나 수정하는 것입니다. Wix #는 "RegValue"클래스를 사용하여 직접 지원합니다. Wix #을 사용할 때 장점은 레지스트리 항목을 사전 설치 상태로 제거/되돌리기를 포함하여 무료 "제거"기능을 완벽하게 얻을 수 있다는 것입니다. 이는 WiX Toolset 및 Windows Installer 기술을 기반으로 구축 된 Wix #의 자연스러운 결과입니다. 레지스트리 전용 Wix # 인스톨러의 예는 다음과 같습니다. In Wix#, how to avoid creating a physical folder on the target system, when deploying only registry entries?
Wix # 접근법은 제 환경에서 매우 유용하며, 익숙한 C# 스킬 셋을 사용하여 복잡성을 완전히 제거하지 않고도 익숙한 C# 스킬 셋을 사용할 수 있습니다. WiX XML 설치 프로그램 기술.