3
我正在爲之前使用ClickOnce部署的應用程序編寫一個WiX安裝程序。如何檢測通過ClickOnce使用WiX安裝的應用程序?
我想檢測應用程序是否安裝在客戶端計算機上並中止MSI安裝。我搜索堆棧 溢出的類似問題,但我找不到一種方法來做到這一點。
如果我能找到一個路徑或某個註冊表項,告訴我應用程序的安裝位置,我可以通過條件中止MSI安裝。
使用this question的答案,我能夠找到某個地方。 ClickOnce快捷方式是.appref-ms擴展名的文件。這是我使用的代碼:
<Property Id="APP_CLICKONCE_INSTALLED">
<DirectorySearch Id="dirSearch.APP.CLICKONCE" AssignToProperty="yes" Path="[StartMenuFolder]" Depth="2">
<FileSearch Id="fileSearch.APP.CLICKONCE" Name="APP.appref-ms" />
</DirectorySearch>
</Property>
<Condition Message="App is already installed. Please uninstall it then re-run this setup.">
<![CDATA[APP_CLICKONCE_INSTALLED = "" OR INSTALLED]]>
</Condition>
然而,StartMenuFolder給出AllUsers的輪廓的位置,而點擊,一旦應用程序被安裝爲當前用戶。我仍在挖掘。
使用每用戶安裝StartMenuFolder給當前用戶的位置(我用的是perMachine):
<Package InstallerVersion="200" Compressed="yes" InstallScope="perUser" />
現在一切都很好。
您是對的,ClickOnce安裝程序將一個條目插入卸載位置(與任何其他Windows安裝程序一樣)。鍵是不同的,但我可以依靠DisplayName來查找我的應用程序。 –