小编Far*_*eed的帖子

编辑已导入的模块

在导入我的powershell模块之前(MyModule.psm1),我已经写了一个函数:

Function T1()
{
    Write-Host "T1 is just called" -ForegroundColor red
}
Run Code Online (Sandbox Code Playgroud)

在我的MyModule.psd1:

@{
    PowerShellVersion = '2.0'
    PowerShellHostName = ''
    PowerShellHostVersion = '2.0'
    RequiredModules = @()
    ScriptsToProcess = @()
    NestedModules = @()
    FunctionsToExport = '*'
    CmdletsToExport = '*'
    VariablesToExport = '*'
    ModuleList = @()
    FileList = @()
}
Run Code Online (Sandbox Code Playgroud)

这是导入正常,当我复制两个文件时:

C:\Users\fwaheed\Documents\WindowsPowerShell\Modules\MyModule

我可以T1在我的PowerShell会话中运行.但现在我想在同一个模块中添加一个新功能,即:

Function T2()
{
    Write-Host "Its now T2.." -ForegroundColor red
}
Run Code Online (Sandbox Code Playgroud)

即使在重新启动我的PowerShell会话后,它仍然无法识别T2,但T1仍然可以正常工作.如何编辑已导入的模块,以便立即进行更改.

powershell module import-module

27
推荐指数
2
解决办法
2万
查看次数

Wix:如何警告用户而不是使用属性终止安装?

我正在x64机器上搜索Microsoft Access数据库引擎的注册表项.这是我的代码:

  <Property Id="MS_ADE_X64">
    <RegistrySearch Id="MSADEX64_DIR" Root="HKLM" Key="SOFTWARE\Microsoft\Office\14.0\Access Connectivity Engine\InstallRoot"  Name="Path"  Type="directory" Win64="yes" >
      <DirectorySearch Id="MSADE_DIR" Path="[MSADEX64_DIR]" >
        <FileSearch Id ="ACECORE_DLL" Name ="ACECORE.DLL" />
      </DirectorySearch>
    </RegistrySearch>
  </Property>
  <Condition Message="This application requires Microsoft Access Database Engine (X64). Please install the Microsoft Access Database Engine (X64) then run this installer again.">
    <![CDATA[Installed OR MS_ADE_X64]]>
  </Condition>
Run Code Online (Sandbox Code Playgroud)

现在,用户将看到一条消息,安装将退出.

问题:如何阻止安装终止并向用户显示ha警告消息,安装是否会继续?

谢谢和最好的问候.

warnings wix

6
推荐指数
1
解决办法
4868
查看次数

Wix Bootstrapper:Bootstrapper事件的序列

我开始玩Managed Boostrapper类和事件.简而言之,我添加了BoostrapperCore.dll,它会给你命名空间

Microsoft.Tools.WindowsInstallerXml.Bootstrapper

我能够从不同博客中的一些示例中获得一些信息.例如,入口点是BootstrapperApplication.Run(),在bootstrapper应用程序准备好运行时被调用.

然后有一些事件,如:

BoostrapperApplication.DetectBegin
BoostrapperApplication.DetectPackageBegin
BoostrapperApplication.DetectForward
Run Code Online (Sandbox Code Playgroud)

等等......

问题:是否有任何精确的文档/在线帮助,提供Microsoft.Tools.WindowsInstallerXml.Bootstrapper命名空间中的事件和方法的详细信息和顺序?

这肯定会节省很多时间......

问候

wix bootstrapper burn

6
推荐指数
1
解决办法
2706
查看次数

Powershell:我们可以改变Write-Progress UI吗?

是否可以更改Write-Progress配色方案和其他UI内容,例如进度条?

目前,它的浅绿色带有由"O"组成的进度条......我想改变颜色(或删除颜色)并用其他东西替换"O".

powershell user-interface

5
推荐指数
1
解决办法
2215
查看次数

Powershell无法从命令提示符创建Outlook COM对象

我有一个脚本用于从命令提示符通过Microsoft Outlook发送邮件.如果我从PowerShell或ISE控制台内部运行它,这可以正常工作.但是当我尝试从经典Windows命令提示符(cmd.exe)执行相同操作时,即使具有管理员权限,也无法创建Outlook COM对象.这是创建COM对象的行:

$objOutLook = New-Object -com Outlook.Application
Run Code Online (Sandbox Code Playgroud)

这是我从cmd.exe(管理权限)调用我的脚本的方法:

D:> powershell D:\ MiscBuildTasks.ps1 -sendmail -MailTo'astrukh@MyMail.com'

这是错误日志:

New-Object:检索具有CLSID {0006F03A-0000-0000-C000-000000000046}的组件的COM类工厂由于以下错误而失败:80080005服务器执行失败(HRESULT异常:0x80080005(CO_E_SERVER_EXEC_FAILURE)).在D:\ MiscBuildTasks.ps1:81 char:12 + $ Outlook = New-Object -ComObject Outlook.Application + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~ + CategoryInfo:ResourceUnavailable:(:) [New-Object],COMException + FullyQualifiedErrorId:NoCOMClassIdentified,Microsoft.PowerShell.Commands.NewObjectCommand

如何从cmd.exe(Windows命令提示符)使其工作? 谢谢

powershell outlook

5
推荐指数
2
解决办法
8805
查看次数

使用Burn作为WiX对话框和自定义操作的替代方法

在深入研究BootstrapperApplication(BA)方法和事件时,我实现了OnExecuteMsiMessage,我能够在安装过程中看到MSI返回的消息.这还包括ActionData以及其他一些信息.

问题:

  1. 我们可以使用Burn的UI对话框而不是我们的MSI中定义的UI(主要用WiX编写)吗?
  2. 我们可以在MSI安装期间调用我们用BA编写的方法吗?这背后的想法是将自定义操作编写为BA的一部分,并在MSI安装期间调用它们.

我知道我们现在可以编写托管自定义操作,但是万一有可能在BA中编写方法而不是自定义操作,并且在我们在MSI中安排自定义操作时调用这些方法.

我该怎么办?

windows-installer wix bootstrapper burn

4
推荐指数
1
解决办法
869
查看次数

Wix Burn:如何阻止Bootstrapper自行安装

我相信这个问题可能在我之前被问过,但不知何故,我找不到合适的答案.

我可能必须编写自己的托管引导程序.但是直到现在,在我得到的示例中,引导程序也在自行安装并出现在Add-Remove程序中而不是我的产品中.

问题:我们可以让bootstrapper只安装我们的产品和必备的应用程序而不是自行安装吗?

问候

wix bootstrapper burn wix3.7

4
推荐指数
1
解决办法
1717
查看次数

如何使用 MEF 获取 Visual Studio 扩展中的当前 ActiveDocument?

我正在使用 MEF 开发 Visual Studio 2013 扩展,同时尝试读取 Active Document 内容类型和代码。目前,它仅在编辑器中打开文档/项目项时读取。一旦打开它们,每当我们在打开的文档选项卡之间切换时,它就不会再次读取它们。

要求:我希望此扩展能够读取当前活动文档的内容类型和代码文本。

更新:
问题:我知道,使用 EnvDTE80.DTE2.ActiveWindow,我可以获得当前聚焦的文档,但我在这里很困惑如何调用此代码来读取当前活动文档/窗口的内容?假设我们有 10 个文档,则活动文档(获得当前焦点)需要由 this 扩展读取。这里,只有当我们打开一个新文档或创建文本视图之前关闭的文档时,才会调用 VsTextViewCreated 。它不会被调用已经打开的文档(即已经创建的文本视图),因此当我们将焦点移到其他已经打开的文档上时,我们将无法获得更新的 wpfTextView 对象。我很困惑如何使用 DTE2.ActiveDocument 或 DTE2.ActiveWindow 事件处理程序来调用它。

问题:
在 MEF 中这是否可能,而不使用 DTE?
VS 编辑器中是否存在处理 TextView 的接口?

这是我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Threading.Tasks;
using Microsoft.VisualStudio.Text.Tagging;
using Microsoft.VisualStudio.Text.Editor;

using System.ComponentModel.Composition;
using Microsoft.VisualStudio.Utilities;
using Microsoft.VisualStudio.Editor;
using Microsoft.VisualStudio.TextManager.Interop;
using Microsoft.VisualStudio.OLE.Interop;
using System.Diagnostics;

namespace VSIXProject_Test
{
    [Export(typeof(IVsTextViewCreationListener))]
    [ContentType("code")]
    [TextViewRole(PredefinedTextViewRoles.Editable)]
    class VsTextViewCreationListener : IVsTextViewCreationListener
    {
        [Import]
        IVsEditorAdaptersFactoryService AdaptersFactory = null; …
Run Code Online (Sandbox Code Playgroud)

mef visual-studio visual-studio-extensions

4
推荐指数
1
解决办法
5042
查看次数

我们可以在更改产品代码时将1.0.0.0升级到1.0.0.1吗?

我被要求将ver 1.0.0.0升级到1.0.0.1.默认情况下,当我使用虚拟安装程序进行测试时,如果我们更改产品代码,则1.0.0.0和1.0.0.1将并排安装.

但是如果我们执行ver 1.0.1.0(在更改产品代码时),它将进行升级.这是我的升级部分:

   <Upgrade Id="{354E9DAE-EB70-4BCC-BD93-AC20ACE3F370}">
     <UpgradeVersion
      Maximum="$(var.ver)"
      Property="DOMAJORUPGRADE"
      MigrateFeatures="yes"
      IncludeMinimum="yes"/>
   </Upgrade>
Run Code Online (Sandbox Code Playgroud)

问题:有没有方法可以将1.0.0.0升级到1.0.0.1?

实际上,我给出了这样的场景:

  1. 在1.0.0.0之上安装1.0.0.1时,需要升级1.0.0.0.
  2. 在1.0.0.1之上安装1.0.0.0时,1.0.0.0需要失败.
  3. 在1.0.0.1之上使用不同的产品代码安装1.0.0.1(仅在开发版本中可能),现有的1.0.0.1需要卸载.

windows-installer wix upgrade wix3.7

3
推荐指数
2
解决办法
2575
查看次数

Wix:托管BA命令行无效

在玩Bryan的TestBA Bootstrapper时,我首先安装了1.0.0.0.然后我将版本增加到1.0.0.1并记录该过程.以下是升级期间传递-uninstall -quite命令行的部分:

[2870:21C0][2014-02-24T17:46:38]i300: Apply begin 
[1A44:1E54][2014-02-24T17:46:41]i360: Creating a system restore point. 
[1A44:1E54][2014-02-24T17:47:15]i361: Created a system restore point. 
[1A44:1E54][2014-02-24T17:47:15]i000: Caching bundle from: 'C:\Users\fwaheed\AppData\Local\Temp\{57a07296-0310-4628-971c-2da38aa09f25}\.be\BootstrapperSetup.exe' to: 'C:\ProgramData\Package Cache\{57a07296-0310-4628-971c-2da38aa09f25}\BootstrapperSetup.exe' 
[1A44:1E54][2014-02-24T17:47:15]i320: Registering bundle dependency provider: {57a07296-0310-4628-971c-2da38aa09f25}, version: 1.0.0.1 
[1A44:2B40][2014-02-24T17:47:16]i305: Verified acquired payload: DummyInstallationPackageId at path: C:\ProgramData\Package Cache\.unverified\DummyInstallationPackageId, moving to: C:\ProgramData\Package Cache\{F1D62AA5-E68C-4B99-A6DD-D7EAE5A1D238}v1.0.0.1\DummyInstaller.msi. 
[1A44:1E54][2014-02-24T17:47:16]i323: Registering package dependency provider: {F1D62AA5-E68C-4B99-A6DD-D7EAE5A1D238}, version: 1.0.0.1, package: DummyInstallationPackageId 
[1A44:1E54][2014-02-24T17:47:16]i301: Applying execute package: DummyInstallationPackageId, action: Install, path: C:\ProgramData\Package Cache\{F1D62AA5-E68C-4B99-A6DD-D7EAE5A1D238}v1.0.0.1\DummyInstaller.msi, arguments: ' ARPSYSTEMCOMPONENT="1" MSIFASTINSTALL="7"' 
[2870:21C0][2014-02-24T17:47:22]i319: Applied execute package: DummyInstallationPackageId, result: 0x0, …
Run Code Online (Sandbox Code Playgroud)

c# wix bootstrapper burn

3
推荐指数
1
解决办法
1983
查看次数