Tag: windows installer

wix c#app安装后无法启动

我已经使用Wix成功生成并成功安装了我的C#WPF应用程序。 该应用程序包括Crystal报告DLL和其他一些像Zen Barecode的dll。 在第n次尝试修改主项目之后,MSI能够自行安装,但是通过直接从快捷方式或可执行文件启动应用程序,它无法启动。 这是我的wix product.wxs = 600]]>

Winform应用程序名称在Windows 10的“任务管理器”的“启动”选项卡上显示为_alphanumeric

在Windows 10上,我的表单应用程序在任务管理器的“ 启动”选项卡上显示为字母数字字符(_1F036AE84FF792FB79A74F)。 它是一个MSI安装文件。 以下是运行exe的路径: C:\Users\win10user\AppData\Roaming\Microsoft\Installer\{ProductCode-Of-App} 如何显示表单应用程序而不是此字母数字值? 编辑:我正在使用Microsoft Visual Studio 2015安装程序项目来创建MSI文件 编辑二: Windows 7(msconfig.exe): Windows 10(任务管理器): 这里我放置了我的应用程序名称在Windows 7和Windows 10上的显示方式的屏幕截图。

如何停止Windows服务进行升级安装?

我使用Visual Studio 2008开发了一个Windows服务和一个安装项目。当我进行升级安装时,我收到以下警告: 以下应用程序正在使用安装程序必须更新的文件。 您可以关闭应用程序并单击“再试一次”,或单击“继续”以使安装程序继续安装,并在系统重新启动时替换这些文件。 我想在升级安装期间停止Windows服务。 我已经尝试创建一个自定义操作并重写OnBeforeInstall方法,但是在警告弹出消息已经发生后,这会被调用得太晚。 有没有办法在msi安装程序中完成此操作。 在执行msi安装程序之前,我宁愿不必将此作为单独的任务执行。 更新: 根据进一步的研究,我发现MSI数据库支持这一点,但内置的Visual Studio安装程序(安装程序)项目并没有提供这样做的方法。 必须调整MSI数据库,或者使用WiX或商业安装程序。

确定第三方应用程序安装目录

我有一个应用程序,在整个公司的几百台计算机上使用,我必须修改应用程序的安装目录中的INI文件。 用户可以随意安装应用程序,并且可以在任何给定时间安装多个版本的应用程序。 我需要能够找到该安装目录。 到目前为止我考虑过的方法: 使用WindowsInstaller按名称查找产品并查找其安装目录。 (从这里 )。 – 这几乎可以工作,但我期望填充的属性(TARGETDIR,APPDIR)不是。 查看注册表以查找特定应用程序的安装目录。 它不在那里。 MsiGetComponentPath()? 我在上面提到的相同链接中看到了这个,但我不知道如何实现它。 我可以使用Windows安装程序获取ProductID,但我不知道如何以编程方式选择一个组件并随机查找其ID。 任何人? 好吧,让我们听一下以编程方式确定Windows应用程序的安装目录的任何其他方法。

EXE文件无法正常工作

我有一个.msi(Windows安装程序包)文件到我的项目中。 我成功地从.msi文件生成了.exe文件,但每当我尝试打开该.exe文件或以管理员身份运行时它什么都不做。 怎么解决这个? 对此有所帮助。 请帮忙 更新这是我的.msi文件的代码 components.wxs <!—-> <!—-> product.wxs

使用MSIEnumRelatedProducts和MSIGetProductInfo的MSI Interop

在使用MSI Interop API时,我遇到了一些导致应用程序崩溃的exception行为。 这很简单,可以“处理”问题,但我想更多地了解“为什么”这种情况正在发生。 我对MSIEnumRelatedProducts的第一次调用返回值0并正确地将我的字符串缓冲区设置为productcode。 我的理解是,只有当给定的升级代码(作为parm传递给方法)当前安装了“相关的系列产品”时才会发生这种情况,否则它将返回259 ERROR_NO_MORE_ITEMS。 但是当我随后使用相同的产品代码调用MSIGetProductInfo时,我得到返回值1605,“此操作仅对当前安装的产品有效。”。 在这种情况下,有没有人有任何想法? 它在一台机器上是100%可重复的,但我还没有设法在另一台机器上获得再现步骤。 我们所有的产品都使用Wix属性“AllUsers = 1”构建,因此应该为所有用户安装产品,而不仅仅是一个。 任何想法/建议表示赞赏。 谢谢本 更新:我注意到在运行问题msi软件包时记录了以下行: MSI(s)(88:68)[12:15:50:235]:FindRelatedProducts:无法读取产品'{840C … etc ….. 96}’的ASSIGNMENTTYPE信息。 跳绳… 有谁知道这可能意味着什么? 更新:代码示例。 do { result = _MSIApi.EnumRelatedProducts(upgradeCode.ToString(“B”), 0, productIndex, productCode); if (result == MSIApi.ERROR_BAD_CONFIGURATION || result == MSIApi.ERROR_INVALID_PARAMETER || result == MSIApi.ERROR_NOT_ENOUGH_MEMORY) { throw new MSIInteropException(“Failed to check for related products”, new Win32Exception((Int32)result)); […]

检查Windows安装程序mutex的可用性

在我的一个集成测试中,我有两个线程卸载然后安装程序但是当按顺序运行时它们会生成错误Failed to grab execution mutex. System error 258. Failed to grab execution mutex. System error 258. 为了解决这个问题,我必须在卸载后睡觉。 我试着检查msiexec进程是否正在运行但是一直有2-3个因此它不是一个好的指标。 有没有办法检查msiexec执行互斥锁是否可用?

MSI不在C#内运行

我试图使用Proces.Start方法从C#运行MSI文件。 MSI文件很好,因为我可以正常运行,但是当我尝试在某些C#代码中运行MSI文件时,我收到以下错误。 “无法打开此安装包。validation包是否存在,以及您是否可以访问它,或联系应用程序供应商以validation这是否是有效的Windows安装程序包” 下面是我用来运行MSI文件的代码…… Process p = Process.StartApplication.StartupPath “/Packages/Name.msi”); p.WaitForExit(); 我该如何解决这个问题? 好的,我现在明白了。 我刚刚更改它以运行使用MSI文件生成的setup.exe文件,而不是运行MSI文件…

我需要一个MSI自定义操作,从MSI源目录复制文件

我正在使用VS 2008为ac#windows项目创建一个安装程序。我正在尝试编写一个自定义操作,从存储在文件服务器上的MSI文件的源目录中复制一个设置文件(例如\ server \ fileshare \ myappinstaller \ mysetting.xml)到安装了我的应用程序的计算机上的目标目录(例如C:\ Program Files \ My App)。 设置文件无法添加到安装程序中,因为它包含的设置对于安装应用程序的客户来说是唯一的。 有没有人有这样的自定义动作的代码(最好是C#或VB.NET)? 或者,有人知道如何在自定义操作中获取MSI源位置(例如\ server \ fileshare \ myappinstaller)。 非常感谢

如何在C#中解析MSI路径?

我需要在安装之外的MSI数据库中解析目标路径。 我目前正在使用Wix SDK,通过查询数据库的目录和文件表并从那里构建路径,但解析路径似乎应该已经内置了。 是否有一个图书馆可以做到这一点,即使是非正式的东西,还是我坚持自己做这件事? 这个问题已经被要求用于C ++,但唯一的答案在某种程度上误解了关于字符串的问题。 我真的不介意表现。 我真正关心的是解析特殊文件夹,如“。:字体”,“。:Windows”,“。:WinRoot”等 – 我仍然可以在我自己的代码中完成,但不是很优雅。