Tag: wix

WIX – 添加C#自定义操作代码

我正在创建一个由Wix安装的程序,使用VS 2010,我已经准备好了product.wxs。 现在我想为安装添加自定义C#操作。 我已经搜索了如何做到并找到了这个指南: 如何创建完全成熟的C#自定义操作? 问题是我不理解所有说明,特别是在本指南的这一部分中: Integrate the C# custom action in Advanced Installer 我已经创建了自定义操作项目,但我不明白如何告诉安装项目运行该自定义操作,以及如何在提交阶段将操作设置为在安装时运行。 另一件相关的事。 如何在C#代码中获取用户选择安装的安装路径?

Wix ServiceInstall参数

有谁知道如何获取我在ServiceInstall中声明的参数在启动时传递给服务? 它们在我的OnStart(string [] args)中似乎总是为空。

“Product:*”部分中未解决的符号’Property:NETFRAMEWORK45’的引用

在TFS 2010中构建应用程序时出现错误。在“Product:*”部分中未解析对符号“Property:NETFRAMEWORK45”的引用。 这适用于Wix 3.9 Wix包引用了NetFxExtension。 我可以在我的本地机器上构建wix,但是当我通过TFS构建它时,我得到了错误。 任何人都可以帮我解决这个问题吗? 我有以下代码导致错误。

从服务运行msiexec(本地系统帐户)

我们正在为我们的软件开发更新系统。 更新程序应作为服务在后台运行,并且当有可用更新时,请下载并安装它。 我们需要服务来安装更新,因为MSI需要提升才能运行,但我们的一些客户端将是受限用户。 MSI是WiX MSI,运行时进行重大升级。 问题是,从我们的服务运行时,更新似乎不起作用。 我可以看到msiexec运行,并且它成功返回,但它似乎没有对系统进行任何更改。 从我的用户帐户运行时,相同的命令按预期工作。 从本地系统服务运行msiexec有一些警告吗? 我们只是在做: string arguments = “/i /quiet /lv*x ” + pathToLogFile; System.Diagnostics.Process.Start(“msiexec.exe”, arguments);

如何使用CustomAction更改ROOTDRIVE?

通常,您可以更改默认根驱动器以将应用程序安装到使用: D:\ 但是现在,我希望使用在我的安装向导中单击下一个按钮时调用的CustomAction来更改它: [CustomAction] public static ActionResult SetFullInstallRootDrive(Session session) { session[“ROOTDRIVE”] = session[“DRIVE_NAMES”].ToString(); } DRIVE_NAMES表示使用combobox选择的驱动器,并且ROOTDRIVE可以正确设置为我选择的任何本地驱动器(例如, C:\或D:\ )。 但是,安装程序始终安装到最初在上面的属性中设置的D:\驱动器。 发生了什么,以及如何在自定义操作中动态更改此属性的值,以便我可以让用户选择根驱动器来安装我的Web应用程序? 属性DOES已设置,但它不使用它,它几乎就像ROOTDRIVE属性仅在安装向导开始时被评估一次。

如何向wix安装项目添加自定义操作

我的解决方案中有两个项目: 1)。 自定义操作类(CustomAction) 2)。 Wix安装项目(TestSetup) CustomAction项目中有CustomAction.cs: using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using Microsoft.Deployment.WindowsInstaller; namespace CustomAction { public class CustomActions { [CustomAction] public static ActionResult CustomAction1(Session session) { File.Create(@”c:\installed.txt”); return ActionResult.Success; } } } Product.wxs: 安装项目构建没有问题,但是当我尝试运行它时,我收到一条错误消息:“此Windows Installer程序包存在问题。无法运行此安装所需的DLL。请联系您的支持人员或包装供应商“ 我认为这是因为二进制源文件值不正确。 你会说明如何解决它吗?

如何使用WiX Burn MBA捆绑包在MajorUpgrade期间检测当前安装的function?

我正在使用WiX 3.7的Burn / Managed Bootstrapper应用程序function来创建基于MBA的自定义安装程序。 对于我的bundle链中的每个软件包,在执行MinorUpdate时,我可以轻松检测已经安装了哪些软件包function,以确保在升级期间通过使用WiX基类中为引导程序提供的这些事件来保留这些function选择: DetectPackageComplete , DetectMsiFeature , DetectRelatedBundle , DetectRelatedMsiPackage , DetectComplete 。 但是, 在MajorUpgrade期间,我只看到一种方法来确定安装了哪些软件包,但是没有看到如何确定安装了哪些function,因为DetectMsiFeature事件不会触发。 我尝试在产品的配置上使用MigrateFeatures标志,但这似乎不起作用(或者我没有正确使用它)。 在WiX中使用自定义托管引导程序应用程序执行MajorUpgrade时检测/迁移现有function的正确方法是什么? 一些文件片段: 注意:如果有帮助的话,我可以提供一个包含所有代码的完全可用的VS解决方案。 Bundle.wxs: Product.wxs: CustomBootstrapper.cs public class CustomBootstrapperApplication : BootstrapperApplication { protected override void Run() { DetectPackageComplete += HandlePackageDetected; DetectMsiFeature += HandleFeatureDetected; DetectRelatedBundle += HandleExistingBundleDetected; DetectRelatedMsiPackage += HandleExistingPackageDetected; DetectComplete += HandleDetectComplete; this.Engine.Detect(); //blocks here until […]

在C#自定义操作中更改安装程序属性

如何在C#自定义操作中更改安装程序属性?

重启后Windows服务不会自动启动

我的自动启动Windows服务无法仅在重新启动时启动。 我有一个用C#创建的Windows服务,并通过Wix创建的安装程序安装。 该服务设置为自动启动。 该服务在NT AUTHORITY \ NETWORK SERVICE下安装和运行。 服务启动后,它首先进行外部Web服务调用。 在Windows 7中,我可以将服务设置为自动 – 延迟启动,服务将在重启时启动没问题。 但是,此选项在Windows XP中不可用,并且当设置为“自动启动”时,服务将因此失败 A timeout was reached (30000 milliseconds) while waiting for the MyService service to connect. 如果我尝试在登录过程后手动启动,服务启动正常,只有当服务尝试在重新启动时自动启动存在问题时,才会让我相信我需要添加到我的服务中的依赖服务让它正确启动。 任何人都可以指出正确的依赖关系或替代方法吗?

如何在安装wix安装程序期间复制文件夹/ files1..to..files5

我使用WIX创建了我的安装程序项目。项目目录下有文件夹和文件。我需要在安装过程中将文件夹和文件复制到安装路径。 这两个目录结构是1.somefolder/file1..to file5 2.some folder/subfolder/subfile1..tosubfile5 。这两个目录都在我的项目目录中。我需要在安装过程中复制安装文件夹中的同一目录这个Program Files/InstallationFolder/subfolder/subfile1..tosubfile5 。 如何在安装过程中将目录从项目路径复制到安装路径。