Tag: windows installer

2015年安装Visual Studio Installer项目后,VS 2015中的Visual Studio 2012安装程序项目“未安装应用程序”

我有一个使用Visual 2012的内置InstallShield Limited Edition向导创建的安装程序项目。 我需要在新计算机上修改此项目。 源代码已通过Team Foundation Server保存并获取。 到目前为止,我已经在Visual Studio 2015中打开了解决方案,安装了Visual Studio Installer项目扩展,并且我仍然收到(不兼容的)消息以及特定于安装程序项目的折叠消息“应用程序未安装” 。 所有其他项目+项目类型编译,运行正常。 对我缺少什么的想法?

在WPF中创建自定义安装程序

我正在寻找一个基于Metro风格的WPF安装程序。 原因是我想要UI组件,转换等之间的动画。 所以问题是,解决这个问题的最佳方法是什么,我应该只是与Windows安装程序api接口还是以某种方式与Wix接口? 它需要.NET框架不会成为问题,因为它还需要运行正在安装的应用程序。 所以我只需要一个引导程序来检查或安装。 我读过C#创建自己的安装程序? 但是你真的能从WIX定制GUI的外观和感觉吗? 你可以使用Wix作为一种API吗?

从C#中的Msi中的自定义操作强制重新引导

如何在C#自定义操作中安装后提示重新启动计算机? 我们正在使用VS 2005的安装项目进行设置,我们需要以编程方式决定提示重启(因此不会在每次安装时发生,只在某些安装上)。 更新:我们正在寻找已经内置到MSI自定义操作系统中的内容。 如果不存在,我们可以采取某种方式重新启动PC,但希望避免这种情况。 更新:我们看到在编辑Orca中的Msi时可以设置REBOOT = Force的位置,您可以在运行时从C#自定义操作修改这些表吗? 我们可以将其设置为每次都重新启动,但这可能会使我们的设置烦人(它只需要在极少数情况下重新启动)。 更新:我们尝试设置: savedState[“REBOOT”] = “Force”; 从我们自定义操作的Install()方法中,但没有运气。 它似乎不像IDictionary,savedState真的做任何事情。 还尝试过: Context.Parameters[“REBOOT”] = “Force”; 但我认为这个集合只是传递给自定义操作的命令行参数。 更新:有没有办法用Orca编辑我们的MSI以使这个技巧有效? 也许在某些文件存在的情况下安排重启? 我们还没有找到如何从C#自定义操作设置MSI属性。 更新:我们尝试连接到AppDomain.ProcessExit和AppDomain.DomainUnload并启动一个新线程并调用Process.GetCurrentProcess()。WaitForExit()并且这些事件都不会从C#自定义动作中触发…

为什么我的Uninstall方法没有被调用?

我的VS 2008创建的安装程序不会在我的安装程序类中调用覆盖Uninstall方法。 为什么? 调用了Install方法。 我的安装程序类看起来像这样: [RunInstaller(true)] public partial class InstallerClass : Installer { public InstallerClass() { InitializeComponent(); } public override void Install(IDictionary stateSaver) { base.Install(stateSaver); //encrypt connection string encryptConntStr(); //create database createDatabase(); } public override void Commit(IDictionary savedState) { base.Commit(savedState); } public override void Rollback(IDictionary savedState) { base.Rollback(savedState); } public override void Uninstall(IDictionary savedState) { […]

如何检测正在运行的MSI安装

我正在寻找一种方法来检测Windows Installer安装是否已在进行中。 到目前为止我发现的是: 检查注册表项: HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Windows \ CurrentVersion \安装\ INPROGRESS 使用带有虚拟文件的Windows Installer API函数MSIInstallProduct ,然后返回特定的错误代码。 有人知道更聪明的解决方案吗?

Windows安装程序和安装应用程序到一个文件?

我已经使用visual studio在C#中编写了一个应用程序,我已经制作了一个项目设置文件,在我的调试中为我创建了文件。 Windows Installer和安装应用程序都是必需的,但我想将它们合并为一个,就像下载应用程序时安装程序只有一个文件。 有人可以告诉我如何做到这一点,或者只是指向一个好的来源。 提前致谢。

MsiGetShortcutTarget MSI LNK文件不返回任何组件ID

我试图以编程方式找到为给定的MSI lnk文件(通告的快捷方式)运行的exe文件。 我使用了类似于答案中显示的方法有没有办法解决.lnk目标适用于最终在c:\ windows \ installer中的链接? 。 这种方法适用于大多数MSI lnk文件。 不幸的是,有少数lnk文件运行正常,但MsiGetShortcutTarget不返回任何组件ID。 因此,对MsiGetComponentPath的后续调用将返回InvalidArg。 这是我正在使用的代码(取自此处 ): public const int MaxFeatureLength = 38; public const int MaxGuidLength = 38; public const int MaxPathLength = 1024; public static string ParseShortcut(string shortcutFilename) { StringBuilder product = new StringBuilder(MaxGuidLength + 1); StringBuilder feature = new StringBuilder(MaxFeatureLength + 1); StringBuilder component = new […]

如何复制与安装程序位于同一目录中的文件

我想将与安装程序文件位于同一目录中的文件复制到应用程序目录。 我无法在安装程序中包含该文件。 场景:我为我的客户端创建了一个安装程序。 客户端将安装程序分发给未知数量的第三方,这些第三方将需要更改应用程序配置的一个方面。 随后,他们将使用其编辑的配置将安装程序分发给未知数量的最终用户。 最终用户需要能够双击安装程序,不能假设他们的任何知识。 我不能/不想为每个将分发应用程序的第三方创建单独的安装程序。 我提出的解决方案是让这些第三方添加一个配置文件,与安装程序一起分发。 此文件将在安装时复制到应用程序目录。 我为此创建了一个自定义安装程序类。 我被卡住的部分是如何找到该文件。 在安装程序类中找到活动程序集等的所有提供的方法似乎都指向Window \ system32中的目录,而不是从启动安装程序的原始目录。 任何帮助非常感谢。

C# – Windows服务安装程序没有注册服务

我正在尝试使用Windows服务的安装程序,并希望避免使用InstallUtil.exe。 安装程序似乎正常工作(可执行文件和dll位于正确的目录中),但该服务未显示在“计算机管理”下。 这是我到目前为止所做的: 服务类名称是默认值 – Service1。 在项目安装程序中,服务安装程序的ServiceName与类名称 – Service1匹配。 在“自定义操作”下,服务的主要输出已添加到“安装”,“提交”,“回滚”和“卸载”。 我使用http://support.microsoft.com/kb/816169作为参考。 有任何想法吗?

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

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