草庐IT

bdist_msi

全部标签

c# - 如何确定我刚安装的 MSI 是否请求 Windows 重新启动?

我在C#中构建了一个setup.exe,它运行多个链接的MSI(使用/QUIET/NORESTART)。最后,我想检查机器是否需要重启(也就是说,如果其中一个MSI请求重启)。我怎样才能检测到呢? 最佳答案 以下注册表位置包含信息:键HKLM\System\CurrentControlSet\Control\SessionManager,值PendingFileRenameOperations来源:http://technet.microsoft.com/en-us/sysinternals/bb897556.aspx

windows - 如何使用 cmake 生成 .msi 安装程序?

我正在尝试使用cmake生成.msi安装程序。我能够通过CMakeLists.txt中的一些配置生成.dll和.lib文件。请提供示例CMakeLists.txt以生成.msi安装程序。我需要在命令提示符中使用哪些命令?目前我使用的命令是:>cmake-G"VisualStudio10"-H"RootCMakeLists.txtpath"-B"pathtogeneratethesln">cmake--build"pathofthesln"--configRelease>cpack-CReleaseoutput:CPackError:CPackgeneratornotspecified我

windows - 手动创建 MSI 补丁 (.msp)?

我们的团队最近一直在考虑向用户推出一个小的注册表修复程序,以修改一个特定的有问题的key。非常简单的东西,只需要更新注册表中的1个键/值。所以目前,我们正在使用Wix为产品构建.msi安装程序。在研究Wix对生成.msp补丁文件的支持时,似乎创建.msp的唯一方法是一个有点过于复杂的多步骤过程:获取原始MSI的副本,并编译固定MSI的新副本编写指向两个安装程序的新Wix文件使用Candle将Wix文件编译成.wixobj到.psp在原始安装程序和.psp的快照之前/之后运行Torch/Pyro,或者使用MsiMsp.exe现在我的问题是,我不能简单地将注册表更改描述为Wix文件并直接将

windows - 如何从命令行添加/更新 MSI 内的属性?

我有一个MSI安装程序,我需要在其中从命令行添加或修改短文本属性。这必须在构建安装程序之后完成;我无法首先修改生成安装程序的过程。它还必须从脚本headless执行。当我说“属性”时,它可能是一个MSI属性,一个在安装时写入注册表的值,或者任何其他可以在运行时将这个简短的自定义文本放入已安装应用程序的机制。 最佳答案 可用于更新(或添加)属性构建后的示例VBScript...OptionExplicitConstMSI_FILE="myfile.msi"Diminstaller,database,viewSetinstaller=C

windows - Windows Installer 本身实际上做了什么,为什么我从来没有看到没有第三方工具制作的 msi?

所以我使用了很多工具来为我的东西创建msi安装程序,包括WiX和许多GUI中的一些。但是,我从未真正解决过的一件事是WindowsInstaller本身实际上做了什么,这些工具从哪里开始和结束?就此而言,从技术上讲,msi到底是什么,为什么没有人(我什至找不到关于理论上如何完成的信息,就像它实际上只是某种实现简单接口(interface)的DLL类型的东西)自己创建一个msi,而不使用这些工具之一为他们制作? 最佳答案 几年前,我问自己这样的问题:“什么是MSI文件?”、“如何创建或解码它?”、“为什么MSI数据库结构看起来如此奇怪

windows - 如何同步安装 MSI?

要进行任何MSI软件包的无人值守安装,只需使用以下命令即可:msiexec/qn/ipackage.msi但是,这会触发异步安装:如果您碰巧链接了2个依赖安装,您将不得不以某种方式等待第一个安装完成。有没有办法从命令行执行此操作? 最佳答案 我很幸运:start/waitmsiexec/iMyInstaller.msi...发现于thisblogpost从2005年开始。希望你能在08年找到它。 关于windows-如何同步安装MSI?,我们在StackOverflow上找到一个类似的问

c# - 单个 MSI 安装正确的 32 位或 64 位 c# 应用程序

我有一个为x86(32位)和x64(64位)平台构建的C#应用程序。我的构建系统当前输出​​两个MSI安装程序,每个平台一个。以防万一,我的C#应用程序包含一个Windows任务栏工具栏,这意味着安装的DLL必须由explorer.exe进程加载。是否可以生成一个MSI安装程序,根据当前操作系统是否为64位操作系统来安装我的应用程序的正确版本?这目前已通过使用http://dotnetinstaller.codeplex.com/实现生成执行体系结构检查的EXE,然后启动正确的MSI。但是,我更喜欢纯粹基于MSI的方法。 最佳答案

windows - MSP 与 MSI 封装。哪个用于补丁?

目前我正在开发一个使用MSI包部署的项目。要修补该程序,我们只需部署另一个MSI安装程序包而不是MSP。这是解决此问题的有效/高效方法,还是我们应该部署MSP补丁包?我有过MSI但没有MSP的经验。我将如何着手创建MSP补丁?我在互联网上搜索,似乎找不到任何东西。提前致谢! 最佳答案 打补丁非常复杂且难以使用,如果您不遵循正确的MSI实践,则打补丁非常不可靠。我仅在必须时使用它,以实现无法以任何其他方式交付的修复。一个示例是,如果产品的卸载顺序被破坏,导致卸载未完成但进入回滚。然后我通过小升级打补丁以修复已安装产品中的错误,然后将其

windows - 从 MSI 文件中查找 GUID

如何在Windows中列出已安装程序的GUID?或者,如果我有MSI文件,是否更容易找到GUID?我正在使用Orca查看MSI文件,但不确定在哪里可以找到GUID。谢谢! 最佳答案 WindowsInstaller数据库的三个主要GUID是PackageCode,ProductCode,和UpgradeCode.第一个存储在摘要信息流中(Orca中的View菜单),其他存储在Property表中。(其他形式的数据库,例如合并模块和补丁,在相似的地方有相似的GUID,例如合并模块的GUID或补丁代码GUID-每个都与包代码存储相同。)

.net - 如何手动删除 MSI 安装?

我正在学习VS2008安装项目来为我们的C#应用程序创建安装。我在卸载过程中尝试删除exe本身时犯了一个错误。现在我手动删除了exe文件,但该条目仍在添加删除程序列表中。我尝试安装固定的较新版本,但msi不允许我这样做。如何手动删除旧版本(我可以使用regedit,没问题)?我正在使用XP机器。谢谢编辑:在我删除该卸载注册表项中的子项后,我仍然无法安装我的新版本。 最佳答案 如果这是一个适当的小更新/次要升级.msi文件来修复无法卸载的早期版本,只需使用msiexec/iupdated.msiREINSTALLMODE=vomus安