2014-10-22 173 views
0

已经使用Wix创建了MSI。当我尝试安装它时,出现以下错误。 “安装程序没有足够的权限访问此目录c:\ programfiles \ AppTest。安装无法以管理员身份继续登录或与系统管理员联系”。 我经历了一些类似的帖子,但它并没有帮助我。在我的代码中。MSi安装错误

<?xml version='1.0'?> 
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'> 
<Product Name='AppTest' Id='*'enter code here 
    UpgradeCode='{05E35D34-E7F6-4CED-BF86-B1747AE92E07}' 
    Language='1033' Codepage='1252' 
    Version='2.0.0.1' 
    Manufacturer='LabView Inc' > 

     <Package Id='*' 
     Languages='1033' 
     SummaryCodepage='1252' 
     AdminImage='no' 
     InstallerVersion='200' 
     InstallPrivileges='elevated' 
     Compressed='yes' 
     ReadOnly='yes' 
     ShortNames='yes' 
     Comments='AppTest Installer Package' 
     Description='AppTest Installer Package' 
     Manufacturer='LabView Inc' /> 

     <Media Id='1' Cabinet='AppTest.cab' EmbedCab='yes' /> 

     <!--Directory structure--> 
     <Directory Id='TARGETDIR' Name='SourceDir'> 
      <Directory Id='ProgramFilesFolder'> 
       <Directory Id="APPLICATIONROOTDIRECTORY" Name="AppTest"/> 
      </Directory> 
     </Directory> 

    <!-- Adding Components--> 

    <DirectoryRef Id="TARGETDIR"> 
     <Component Id="AppTest.dll" Guid="3947344C-8116-48FB-9F8A-080EA7D1ABAD"> 
     <File Id="AppTest.dll" Source="$(sys.CURRENTDIR)files\AppTest.dll" KeyPath="yes" Checksum="yes"/> 
      <File Id="msvcp80.dll" Source="$(sys.CURRENTDIR)files\msvcp80.dll" /> 
      <File Id="atl80.dll" Source="$(sys.CURRENTDIR)files\atl80.dll" /> 
      <File Id="msvcr80.dll" Source="$(sys.CURRENTDIR)files\msvcr80.dll" /> 
      <File Id="Microsoft.VC80.ATL.manifes" Source="$(sys.CURRENTDIR)files\Microsoft.VC80.ATL.manifest" /> 
      <File Id="Microsoft.VC80.CRT.manifest" Source="$(sys.CURRENTDIR)files\Microsoft.VC80.CRT.manifest" /> 
      <File Id="AppTest.inf" ReadOnly="yes" Source="$(sys.CURRENTDIR)files\AppTest.inf" /> 
     </Component> 
    </DirectoryRef> 


    <Feature Id="AppTestFeature" Title="AppTest" Level="1"> 
     <ComponentRef Id="AppTest.dll" /> 

    </Feature> 


</Product> 

+0

你的安装程序会尝试将文件写入到 “C:\ Program Files文件” 目录。默认情况下,只允许管理员组的成员。另外,如果启用了UAC,并且您是管理员,则您已降低权限,并且必须以“管理员身份运行”来安装程序。 – 2014-10-22 08:05:30

+0

我有管理员权限。 – bally 2014-10-22 08:07:00

+0

@bally检查我的答案,你只是想安装在'TARDETDIR'(这是C:\)改为'APPLICATIONROOTDIRECTORY' – Buzka91 2014-10-22 08:10:03

回答

0

您应该删除<CreateFolder Directory='AppTest' />和更改代码这样:

<DirectoryRef Id="APPLICATIONROOTDIRECTORY"> <!-- main folder ur app --> 
     <Component Id="AppTest.dll" Guid="3947344C-8116-48FB-9F8A-080EA7D1ABAD"> 
      <File Id="AppTest.dll" Source="$(sys.CURRENTDIR)files\AppTest.dll" KeyPath="yes" Checksum="yes"/> 
      <File Id="msvcp80.dll" Source="$(sys.CURRENTDIR)files\msvcp80.dll" /> 
      <File Id="atl80.dll" Source="$(sys.CURRENTDIR)files\atl80.dll" /> 
      <File Id="msvcr80.dll" Source="$(sys.CURRENTDIR)files\msvcr80.dll" /> 
      <File Id="Microsoft.VC80.ATL.manifes" Source="$(sys.CURRENTDIR)files\Microsoft.VC80.ATL.manifest" /> 
      <File Id="Microsoft.VC80.CRT.manifest" Source="$(sys.CURRENTDIR)files\Microsoft.VC80.CRT.manifest" /> 
      <File Id="AppTest.inf" ReadOnly="yes" Source="$(sys.CURRENTDIR)files\AppTest.inf" /> 
     </Component> 
    </DirectoryRef> 
+0

谢谢你的回复我修改了代码建议,但我仍然得到相同的错误。 – bally 2014-10-22 09:07:24

+0

我根据建议进行了更改,但MSI仅在UAC关闭时起作用。但是我需要安装MSi,或者UAC打开/关闭。请提供你的想法如何实现它。 – bally 2014-10-22 10:10:42

+0

@bally [查看本文](http://csi-windows.com/blog/all/27-csi-news-general/335-how-to-silence-the-uac-prompt-for-per-machine -msi-packages-for-non-admins) – Buzka91 2014-10-22 10:35:29