代码之家  ›  专栏  ›  技术社区  ›  Rod

Wix工具集-当安装程序是管理员时,管理员文件不会出现

  •  0
  • Rod  · 技术社区  · 5 年前

    我正在尝试为管理手册pdf使用组件条件。如果安装程序在管理员组中,我希望安装管理手册。这是我设置它的方法,但即使安装程序是管理员,它也不会被安装。我错过了什么?

    要求:

    InstallScope="perUser" / >

    <Condition>Privileged</Condition>
    

    请在下面查找:

     <Component Id="cmp_ManualForAdmins.pdf" Guid="4C28B047-74D2-4642-A180-0039B4C2C5BC">
        <File Id="fil_ManualForAdmins.pdf" Name="ManualForAdmins.pdf" Source="$(var.WindowsFormsApp1_TargetDir)ManualForAdmins.pdf">
          <Shortcut Id="startMenuAdminManual" Directory="ProgramMenuSubFolder" Name="AdminManual"></Shortcut>
        </File>
        <Condition>Privileged</Condition>
      </Component>
    
    0 回复  |  直到 5 年前
        1
  •  0
  •   Christopher Painter    5 年前

    我刚刚花了一个小时调查这个问题,真的没有好的答案。因为MSI是从标准用户进程调用的,不需要提升,所以MSI永远不知道用户可以提升,所以没有设置特权属性。

    我认为自定义操作可能有助于解决这个问题,但搜索C#Detect Admin会发现各种类和API调用都有相同的行为。

    如果我从提升权限的命令提示符安装原型MSI,则条件评估为true,并安装“admin.txt”文件。从非高架的角度来看,它没有安装。

    那我该怎么办?两件事之一:

    1) 制作第二个Docs MSI,这是一个需要提升的永久机器安装

    2) 构建并部署一个docs.exe,该文件显示需要管理员。如果程序成功提升,则让它将PDF从嵌入式资源提取到临时目录,并执行ShellExecute以启动带有该文件的默认PDF查看器。

        2
  •  0
  •   Stein Åsmul    5 年前

    Administrative Installation :管理员通常会执行安装程序的管理安装(文件提取)——至少如果他们在做应用程序打包的大公司工作。因此,我倾向于让这样的文件在提取的源媒体上很容易看到,而不是在正常安装过程中安装它们(或者两者兼而有之,也不管是哪一个)。

    示例管理安装(美化文件提取):

    msiexec /a Test.msi TARGETDIR=D:\ExtractedFiles\
    

    More about Administrative Installations .

    管理.pdf :这是一个我还没有广泛测试的快速黑客。 The admin.pdf will show up during file extraction and not during installation :

    <..>
    
    <Feature Id="MainApplication" Title="MainApplication" Level="1">
      <Feature Id="SomeFiles" Title="SomeFiles" Level="1" />
    
      <!-- Remove "Display" attibute to show Admin feature in normal setup GUI -->
      <Feature Id="Admin" Title="Admin" Level="1001" Display="hidden" />
    
    </Feature>
    
    <Directory Id="TARGETDIR" Name="SourceDir">
    
      <Component Id="AdminManual" Feature="Admin" Guid="{00000000-0000-0000-0000-0000DBFB0000}">
        <File Source="D:\Admin.pdf"  />
      </Component>
    
    <..>
    

    运行管理安装将把admin.pdf解压缩到顶级解压缩目录:

    msiexec/a Test.msi TARGETDIR=D:\提取的文件\
    

    管理功能在正常安装GUI中隐藏。更改属性“Display”以更改此设置。例如,出于测试目的,只需将其删除即可。

    推荐文章