第一次使用 WIX 热安装文件
Hot ti Install File just in the first time with WIX
我有一个组件
<Component Id="ProductComponent" Guid="7935315f-4242-4c7a-a02c-6fd256805356">
<CreateFolder/>
<File
Id="propFile"
Name="aaa.properties"
DiskId="1"
Source="$(var.Project.TargetDir)"
Vital="yes"
KeyPath="yes" ></File>
<?endif?>
</Component>
我只想在安装时复制文件,而不是升级。
但是我找不到怎么做。
有什么想法吗?
您是否尝试过使用 Condition 元素。我认为您可以在 Component 元素内提供一个 Condition
来检查产品是否已经安装。如果未安装,则创建文件。
<Component Id="ProductComponent" Guid="7935315f-4242-4c7a-a02c-6fd256805356">
<Condition> NOT Installed </Condition>
<CreateFolder/>
<File
Id="propFile"
Name="aaa.properties"
DiskId="1"
Source="$(var.Project.TargetDir)"
Vital="yes"
KeyPath="yes" ></File>
</Component>
这是 MSI(WiX 使用的)的弱点。
MSI 安装文件
用户修改文件
MSI 开始安装文件。应该:
a) 覆盖并丢失用户数据
b) 不会覆盖和丢失新的应用程序数据
c) 合并 --- MSI 不支持这个。
如果用户数据只有一个或几个属性,则可以使用自定义操作的技巧来收集用户数据并重新应用它,但这是非常棘手的事情。
IMO,解决此问题的最佳方法是永远不要将用户数据保存在安装程序安装的文件中。以 app.config appSettings 元素为例。它是一个属性,允许您使用另一个覆盖第一个文件中设置的文件来扩展文件。使用此模式,安装程序可以放下应用程序配置,应用程序可以创建覆盖文件,一切正常,因为 MSI 根本不需要处理这个问题。
我有一个组件
<Component Id="ProductComponent" Guid="7935315f-4242-4c7a-a02c-6fd256805356">
<CreateFolder/>
<File
Id="propFile"
Name="aaa.properties"
DiskId="1"
Source="$(var.Project.TargetDir)"
Vital="yes"
KeyPath="yes" ></File>
<?endif?>
</Component>
我只想在安装时复制文件,而不是升级。 但是我找不到怎么做。
有什么想法吗?
您是否尝试过使用 Condition 元素。我认为您可以在 Component 元素内提供一个 Condition
来检查产品是否已经安装。如果未安装,则创建文件。
<Component Id="ProductComponent" Guid="7935315f-4242-4c7a-a02c-6fd256805356">
<Condition> NOT Installed </Condition>
<CreateFolder/>
<File
Id="propFile"
Name="aaa.properties"
DiskId="1"
Source="$(var.Project.TargetDir)"
Vital="yes"
KeyPath="yes" ></File>
</Component>
这是 MSI(WiX 使用的)的弱点。
MSI 安装文件 用户修改文件 MSI 开始安装文件。应该:
a) 覆盖并丢失用户数据
b) 不会覆盖和丢失新的应用程序数据
c) 合并 --- MSI 不支持这个。
如果用户数据只有一个或几个属性,则可以使用自定义操作的技巧来收集用户数据并重新应用它,但这是非常棘手的事情。
IMO,解决此问题的最佳方法是永远不要将用户数据保存在安装程序安装的文件中。以 app.config appSettings 元素为例。它是一个属性,允许您使用另一个覆盖第一个文件中设置的文件来扩展文件。使用此模式,安装程序可以放下应用程序配置,应用程序可以创建覆盖文件,一切正常,因为 MSI 根本不需要处理这个问题。