我们现在已经使用WiX一段时间了,尽管人们普遍抱怨易用性,但它还是相当不错.我正在寻找的是有用的建议:
所以我在Wix中有这个安装项目,并希望在桌面上有一个快捷方式.这可能很容易让你想到.但事实并非如此.在因特网上找到的所有代码片段都不起作用.经过几个小时的挣扎和阅读文档后,我终于做对了,所以我在这里与大家分享.
假设我生成了我的WIX XML文件,其产品ID为*.另外,对于每个组件GUID,我使用*.
<Product Id="*" Name="xxx" Language="1033" Version="1.0.0.0" Manufacturer="xxx" UpgradeCode="xxx">
Run Code Online (Sandbox Code Playgroud)
幕后是每次编译我的WIX安装程序时*旋转一个唯一的GUID?假设我的1.0.0版安装了一台机器.然后我将我的WIX安装程序重新编译为1.0.1版.
当我去安装1.0.1时,WIX如何知道已经安装了1.0.0,因此将删除所有文件/注册表项并安装1.0.1?
我应该使用GUID中的*还是我的WIX XML配置中应该有唯一的ID/GUID?
我应该何时更改或不更改WIX中的组件GUID? Microsoft SDK信息令人困惑.
Glytzhkof编辑:为了澄清,该问题涉及何时应该为MSI组件更改组件GUID.组件可以通过以下方面进行更改:更改目标路径,向/从同一组件添加或删除文件,添加注册表数据等...这会导致所谓的组件引用问题,即最佳实践在MSI中创建组件.
我们来讨论以下主题.目前正在部署的应用程序有很好的知道xcopy方法.这种方法很难管理依赖项,文件更新等.有一些软件包的帮助下启动应用程序部署的想法,你知道你在Linux的帮助下RPM,但适用于Windows.
所以我有疑问:在Windows经典Windows安装程序(msi)或nuget或其他东西上使用什么包系统更好?
我有一个非常简单的安装程序 - 将一个DLL复制到Program Files子文件夹并使用regsvr32.exe注册它.效果很好,但是如果安装了旧版本的dll,"修复"不会覆盖现有的dll.dll已签名,其版本(构建)编号始终递增(例如2.0.0.123 - > 2.0.0.124).
查看以前的类似帖子,我添加了RemoveExistingProducts并将ProductId指定为"*".卸载然后安装新版本工作正常,但我真的需要修复来更新现有的dll.
还有什么我需要做的吗?
谢谢!
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<!--
When creating a new install for the next version, these fields must be modified
-->
<?define ProductVersion = "2.0.00" ?>
<?define ProductId64 = "*" ?>
<?define ProductId32 = "*" ?>
<?define PackageId = "45F34788-66AC-441C-B666-707FFA7F1EE9" ?>
<!-- Product name as you want it to appear in Add/Remove Programs-->
<?if $(var.Platform) = x64 ?>
<?define ProductName = "XYZ (64 bit)" ?>
<?define Win64 = "yes" …Run Code Online (Sandbox Code Playgroud) 我一直在研究 Qt 安装程序框架,但是当您使用此工具创建设置时,它是一个常规设置,尽管我想知道是否可以创建一个 msi 设置以便能够在网络范围内安装 Qt 程序。
我已经查看了安装程序框架文档,但到目前为止找不到任何关于此的信息。
为了进行简单的测试,我Wix为一个简单的Winform应用程序创建了一个安装程序应用程序,如下所示。但是,当我msi使用安装程序运行创建的文件时,它只运行一秒钟,然后退出而未安装Winform应用程序。问题:这里可能是什么问题?我的Product.wxs文件似乎丢失了一些东西。注意:我正在使用VS2017
产生问题的步骤
Wix Toolset Visual Studio 2017 Extension从这里安装,并按照他们的指示WiX 3.11 RC2从这里安装Winform project[仅添加一个表单,不添加任何内容]Wix Setup project使用Toolset\v3\Setup Project模板创建了一个.msi在其\..bin\Debug文件夹中创建一个文件.msi步骤6中的文件。文件运行一秒钟,出现Windows 10安装对话框(对于任何询问您是否要安装此程序的安装,该对话框都会出现)。我点击了Yes。安装程序再次运行一秒钟,然后退出。但是未安装Winform应用程序。默认的Product.wxs文件 [除了在Manufacturer属性中添加值外,我没有在此处添加任何内容]
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="SetupProject1" Language="1033" Version="1.0.0.0" Manufacturer="WiX_test_4_Winfrm" UpgradeCode="e69fe67b-5c28-4764-8196-a6613b840eff">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] …Run Code Online (Sandbox Code Playgroud)