/// <summary> /// When building with only a wixproj in the solution, the SolutionX variables are not /// defined, so we have to define them here. /// </summary> /// <param name="project">The project where the properties are defined.</param> internal static void DefineSolutionProperties(WixProjectNode project) { IVsSolution solution = WixHelperMethods.GetService <IVsSolution, SVsSolution>(project.Site); object solutionPathObj; ErrorHandler.ThrowOnFailure(solution.GetProperty((int)__VSPROPID.VSPROPID_SolutionFileName, out solutionPathObj)); string solutionPath = (string)solutionPathObj; WixPackageSettings settings = project.WixPackage.Settings; string devEnvDir = WixHelperMethods.EnsureTrailingDirectoryChar(Path.GetDirectoryName(settings.DevEnvPath)); string[][] properties = new string[][] { new string[] { WixProjectFileConstants.DevEnvDir, devEnvDir }, new string[] { WixProjectFileConstants.SolutionPath, solutionPath }, new string[] { WixProjectFileConstants.SolutionDir, WixHelperMethods.EnsureTrailingDirectoryChar(Path.GetDirectoryName(solutionPath)) }, new string[] { WixProjectFileConstants.SolutionExt, Path.GetExtension(solutionPath) }, new string[] { WixProjectFileConstants.SolutionFileName, Path.GetFileName(solutionPath) }, new string[] { WixProjectFileConstants.SolutionName, Path.GetFileNameWithoutExtension(solutionPath) }, }; foreach (string[] property in properties) { string propertyName = property[0]; string propertyValue = property[1]; project.BuildProject.SetGlobalProperty(propertyName, propertyValue); } }
/// <summary> /// Initializes the package by registering all of the services that we support. /// </summary> protected override void Initialize() { base.Initialize(); this.settings = new WixPackageSettings(this); this.RegisterProjectFactory(new WixProjectFactory(this)); WixPackage.instance = this; }
/// <summary> /// Initialization of the package; this method is called right after the package is sited, so this is the place /// where you can put all the initialization code that rely on services provided by VisualStudio. /// </summary> /// <param name="cancellationToken">A cancellation token to monitor for initialization cancellation, which can occur when VS is shutting down.</param> /// <param name="progress">A provider for progress updates.</param> /// <returns>A task representing the async work of package initialization, or an already completed task if there is none. Do not return null from this method.</returns> protected override async Task InitializeAsync(CancellationToken cancellationToken, IProgress <ServiceProgressData> progress) { Instance = this; await base.InitializeAsync(cancellationToken, progress).ConfigureAwait(false); // When initialized asynchronously, the current thread may be a background thread at this point. // Do any initialization that requires the UI thread after switching to the UI thread. await this.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken); this.Settings = new WixPackageSettings(this); this.RegisterProjectFactory(new WixProjectFactory(this)); }