2010-07-07 25 views
2

我創建了一個託管CustomAction將未包含在* .MSI中的2個文件複製到安裝目錄。Wix:將自定義操作中的文件複製到Programm目錄(Windows 7)

雖然這在Windows XP中可用,但它在Windows 7中失敗。雖然日誌說這些文件已複製到所需位置C:\Program Files\MyApp\,但它們實際上已複製到C:\Users\MyUser\AppData\Local\VirtualStore\Program Files (x86)\MyApp\。 我的猜測是,這與修改程序文件夾的訪問權限有關。

這是我如何調用WiX的自定義操作:

<CustomAction 
    Id='InstallSource' 
    BinaryKey='SrcInstActionDll' 
    DllEntry='InstallSourceFiles' 
    Execute='deferred' 
    Impersonate='no'/> 
<CustomAction 
    Id="InstallSource.SetProperty" 
    Return="check" 
    Property="InstallSource" 
    Value='Files=[SourceDir]$(var.SourceZipName),[SourceDir]$(var.SymbolsZipName);TargetDir=[ParentFolder]' 
    Execute='immediate'/> 

CustomAction本身只是調用File.Copy()。其他由安裝程序複製的文件在Windows 7中完美工作。只有使用CustomAction複製的文件才具有所描述的問題。

回答

2

事實上,此行爲是由作爲標準用戶運行的32位應用程序(在64位Windows中)嘗試寫入某個特權文件夾時觸發的文件系統重定向引起的。

對我而言,您看起來像您的自定義操作未運行提升。由於自定義操作定義看起來正確,所以仍然存在的問題是您觸發此自定義操作的位置。

既然您提到日誌,我假設您正在運行msiexec並檢查日誌。

MSI (s) (BC:70) [13:34:10:669]: MSI_LUA: Elevation required to install product, will prompt for credentials 
MSI (s) (BC:70) [13:34:59:528]: MSI_LUA: Credential Request return = 0x0 
MSI (s) (BC:70) [13:34:59:528]: MSI_LUA: Elevated credential consent provided. Install will run elevated 

前段時間我有一個類似的問題與自定義操作和this blog post幫助我弄清楚如何解決它: 請確保您的自定義操作線,看起來像後運行。這是another post,我認爲可以幫助

希望這有助於

0

就像你說的,我覺得你的自定義操作需要提升。由於您的CA是一個.Net項目,因此需要設置它來支持高程。

請檢查下一個鏈接,它有一個很好的解釋如何在一個.Net項目中使用UAC。

enabling-your-application-for-uac-on-vista

希望它能幫助。

+0

鏈接已死亡FYI – techvice 2015-08-13 17:16:09

相關問題