我有一个可以在安装时给出正确标志的应用程序(/logLevel=debug
安装时在服务启动时传递给应用程序)。我们的更新过程是自动卸载,然后使用新的 MSI 包安装。我知道 WiX 内置了补丁功能,但这是我们的流程。
与logLevel
参数类似,我想UPDATE="true"
在卸载期间在命令行上传递一些效果。当此参数传递给卸载程序时,它不应删除日志文件。目前我们每次都删除文件,但希望在更新期间保留日志文件。这就是我现在正在尝试扩展的内容:
<?if $(var.BUILD_CONFIG) = "Debug" ?>
<?else?>
<CustomAction Id="Cleanup_logfile" Directory="TempTest"
ExeCommand="cmd /C "del %systemroot%\temp\hexis_hawkeye_g.log.*""
Execute="deferred" Return="ignore" HideTarget="no" Impersonate="no" />
<InstallExecuteSequence>
<Custom Action="Cleanup_logfile" Before="RemoveFiles" >
REMOVE="ALL"
</Custom>
</InstallExecuteSequence>
<?endif?>
而且我一直在使用类似于以下内容的代码,但它似乎不起作用:
<?if $(var.BUILD_CONFIG) = "Debug" ?>
<?else?>
<?if '[UPDATE]' = "true" ?>
<?else?>
<CustomAction Id="Cleanup_logfile" Directory="TempTest"
ExeCommand="cmd /C "del %systemroot%\temp\hexis_hawkeye_g.log.*""
Execute="deferred" Return="ignore" HideTarget="no" Impersonate="no" />
<InstallExecuteSequence>
<Custom Action="Cleanup_logfile" Before="RemoveFiles" >
REMOVE="ALL"
</Custom>
</InstallExecuteSequence>
<?endif?>
<?endif?>
我不确定我是否没有UPDATE
正确初始化变量,或者这是否真的是一些无法以这种方式实现的预处理。我认为它不起作用,因为这些构造在预处理器文档页面上进行了描述,但是,/logLevel
以及各种其他参数似乎在运行时安装时工作正常。我完全是 WiX 文盲,并且一直试图阅读他们的文档但无济于事,任何有用的链接表示赞赏。